Uploaded image for project: 'C++ Driver'
  1. C++ Driver
  2. CXX-1812

free(): invalid pointer when I use both MD5() and mongocxx::instance

    XMLWordPrintableJSON

Details

    • Icon: Bug Bug
    • Resolution: Cannot Reproduce
    • Icon: Major - P3 Major - P3
    • None
    • 3.4.0
    • None
    • None
    • x86_64
      ubuntu 16.04
      4.15.0-58-generic

    Description

      test.cpp code:

      #include <bsoncxx/json.hpp>
      #include <bsoncxx/v_noabi/bsoncxx/builder/stream/document.hpp>
      #include <bsoncxx/types.hpp>
      #include <mongocxx/client.hpp>
      #include <mongocxx/stdx.hpp>
      #include <mongocxx/uri.hpp>
      #include <mongocxx/instance.hpp>
      #include <vector>
      #include <string>
      #include <iostream>
      #include <openssl/md5.h>
       
      std::string To_Hex_String(unsigned char* input, const int datasize) {
      	std::string output;
      	char ch[3];
       
      	for (int i = 0; i < datasize; i++) {
      		snprintf(ch, 3, "%02x", input[i]);
      		output += ch;
      	}
      	return output;
      }
       
      int main(){
          unsigned char md5v[MD5_DIGEST_LENGTH];
          std::vector<unsigned char> data = {'a','b','c'};
          std::cout << To_Hex_String(MD5((unsigned char *) &data.front(), data.size(), md5v), MD5_DIGEST_LENGTH);
          mongocxx::instance instance{};
          mongocxx::uri uri("mongodb://10.210.196.55:27017");
          mongocxx::client client(uri);
          mongocxx::database db = client["Disassembly_process"]
      }
      

      Compile command:

      g++ -g --std=c++11 -o test.out test.cpp  -I/usr/local/include/mongocxx/v_noabi -I/usr/local/include/libmongoc-1.0 -I/usr/local/include/bsoncxx/v_noabi -I/usr/local/include/libbson-1.0 -L/usr/local/lib -lmongocxx -lbsoncxx -lopenssl
      

      Debug information:

      Error in `/home/save/SAVE/tmp/test.out': free(): invalid pointer: 0x00007ffff607f860
      ......
      Program received signal SIGABRT, Aborted.
      0x00007ffff7006428 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
      54      ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
       
      #0  0x00007ffff7006428 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
      #1  0x00007ffff700802a in __GI_abort () at abort.c:89
      #2  0x00007ffff70487ea in __libc_message (do_abort=do_abort@entry=2,
          fmt=fmt@entry=0x7ffff7161ed8 "*** Error in `%s': %s: 0x%s ***\n")
          at ../sysdeps/posix/libc_fatal.c:175
      #3  0x00007ffff705137a in malloc_printerr (ar_ptr=<optimized out>, ptr=<optimized out>,
          str=0x7ffff715ecaf "free(): invalid pointer", action=3) at malloc.c:5006
      #4  _int_free (av=<optimized out>, p=<optimized out>, have_lock=0) at malloc.c:3867
      #5  0x00007ffff705553c in __GI___libc_free (mem=<optimized out>) at malloc.c:2968
      #6  0x00007ffff793608c in SSL_CTX_free () from /usr/lib/x86_64-linux-gnu/libgnutls-openssl.so.27
      #7  0x00007ffff6b586f9 in _mongoc_do_init () from /usr/local/lib/libmongoc-1.0.so.0
      #8  0x00007ffff518ea99 in __pthread_once_slow (once_control=0x7ffff6db22b4 <once>,
          init_routine=0x7ffff6b586f0 <_mongoc_do_init>) at pthread_once.c:116
      #9  0x00007ffff7b97566 in std::unique_ptr<mongocxx::v_noabi::instance::impl, std::default_delete<mongocxx::v_noabi::instance::impl> > core::v1::make_unique<mongocxx::v_noabi::instance::impl, void, std::unique_ptr<mongocxx::v_noabi::logger, std::default_delete<mongocxx::v_noabi::logger> > >(std::unique_ptr<mongocxx::v_noabi::logger, std::default_delete<mongocxx::v_noabi::logger> >&&) ()
         from /usr/local/lib/libmongocxx.so._noabi
      #10 0x00007ffff7b970e7 in mongocxx::v_noabi::instance::instance(std::unique_ptr<mongocxx::v_noabi::logger, std::default_delete<mongocxx::v_noabi::logger> >) () from /usr/local/lib/libmongocxx.so._noabi
      #11 0x00007ffff7b97245 in mongocxx::v_noabi::instance::instance() ()
         from /usr/local/lib/libmongocxx.so._noabi
      #12 0x0000000000400f54 in main () at test.cpp:34
      

      Even if MD5() is included in the code and not called in main(), the program still reports error in mongocxx::instance instance{}

      Attachments

        Activity

          People

            clyde.bazile@mongodb.com Clyde Bazile III (Inactive)
            lwxlightrunner@gmail.com liang wenxaing
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: