-
Type:
Bug
-
Resolution: Cannot Reproduce
-
Priority:
Major - P3
-
None
-
Affects Version/s: 3.4.0
-
Component/s: None
-
None
-
Environment:x86_64
ubuntu 16.04
4.15.0-58-generic
-
None
-
None
-
None
-
None
-
None
-
None
-
None
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{}