BUILD ------------------------------------------------------------------------------- clang main.c -pthread -isystem /usr/local/dy/mongodb/include/libmongoc-1.0 -isystem /usr/local/dy/mongodb/include/libbson-1.0 \ /usr/local/dy/mongodb/lib/libmongoc-1.0.a /usr/local/dy/mongodb/lib/libbson-1.0.a -ldl -lrt RUN OUTPUT ------------------------------------------------------------------------------- jwang:~/temp/build_debug$ bin/mongo_c_test Segmentation fault jwang:~/temp/build_debug$ bin/mongo_c_test No suitable servers found (`serverSelectionTryOnce` set): [connection refused calling ismaster on 'localhost:27017'] jwang:~/temp/build_debug$ bin/mongo_c_test Segmentation fault jwang:~/temp/build_debug$ bin/mongo_c_test Segmentation fault jwang:~/temp/build_debug$ bin/mongo_c_test Segmentation fault jwang:~/temp/build_debug$ bin/mongo_c_test Segmentation fault jwang:~/temp/build_debug$ bin/mongo_c_test No suitable servers found (`serverSelectionTryOnce` set): [connection refused calling ismaster on 'localhost:27017'] jwang:~/temp/build_debug$ bin/mongo_c_test Segmentation fault SOURCE ------------------------------------------------------------------------------- int main(int argc, char *argv[]) { (void)argc; (void)argv; mongoc_client_t *client; mongoc_database_t *database; mongoc_collection_t *collection; bson_t *command, reply, *insert; bson_error_t error; char *str; bool retval; /* * Required to initialize libmongoc's internals */ mongoc_init(); /* * Create a new client instance */ client = mongoc_client_new("mongodb://localhost:27017"); /* * Get a handle on the database "db_name" and collection "coll_name" */ database = mongoc_client_get_database(client, "db_name"); collection = mongoc_client_get_collection(client, "db_name", "coll_name"); /* * Do work. This example pings the database, prints the result as JSON and * performs an insert */ command = BCON_NEW("ping", BCON_INT32(1)); retval = mongoc_client_command_simple(client, "admin", command, NULL, &reply, &error); if (!retval) { fprintf(stderr, "%s\n", error.message); return EXIT_FAILURE; } str = bson_as_json(&reply, NULL); fprintf(stdout, "%s\n", str); insert = BCON_NEW("hello", BCON_UTF8("world")); if (!mongoc_collection_insert(collection, MONGOC_INSERT_NONE, insert, NULL, &error)) { fprintf(stderr, "%s\n", error.message); } bson_destroy(insert); bson_destroy(&reply); bson_destroy(command); bson_free(str); /* * Release our handles and clean up libmongoc */ mongoc_collection_destroy(collection); mongoc_database_destroy(database); mongoc_client_destroy(client); mongoc_cleanup(); return 0; } LLDB ------------------------------------------------------------------------------- (lldb) r Process 1769739 launched: '/u/jwang/temp/build_debug/bin/mongo_c_test' (x86_64) Process 1769739 stopped * thread #1: tid = 1769739, 0x000000000044335b mongo_c_test`_mongoc_client_new_from_uri + 235, name = 'mongo_c_test', stop reason = signal SIGSEGV: invalid address (fault address: 0x7ffff80358e0) frame #0: 0x000000000044335b mongo_c_test`_mongoc_client_new_from_uri + 235 mongo_c_test`_mongoc_client_new_from_uri: -> 0x44335b <+235>: lock 0x44335c <+236>: incq 0x20(%rcx,%rax) 0x443361 <+241>: movq %rbx, %rax 0x443364 <+244>: addq $0x10, %rsp (lldb) bt * thread #1: tid = 1769739, 0x000000000044335b mongo_c_test`_mongoc_client_new_from_uri + 235, name = 'mongo_c_test', stop reason = signal SIGSEGV: invalid address (fault address: 0x7ffff80358e0) * frame #0: 0x000000000044335b mongo_c_test`_mongoc_client_new_from_uri + 235 frame #1: 0x0000000000443247 mongo_c_test`mongoc_client_new + 55 frame #2: 0x000000000044252a mongo_c_test`main(argc=1, argv=0x00007fffffffe0b8) + 58 at main.cpp:32 frame #3: 0x00007ffff6a13b15 libc.so.6`__libc_start_main + 245 frame #4: 0x0000000000442429 mongo_c_test`_start + 41 (lldb) f 0 frame #0: 0x000000000044335b mongo_c_test`_mongoc_client_new_from_uri + 235 mongo_c_test`_mongoc_client_new_from_uri: -> 0x44335b <+235>: lock 0x44335c <+236>: incq 0x20(%rcx,%rax) 0x443361 <+241>: movq %rbx, %rax 0x443364 <+244>: addq $0x10, %rsp (lldb) f 1 frame #1: 0x0000000000443247 mongo_c_test`mongoc_client_new + 55 mongo_c_test`mongoc_client_new: 0x443247 <+55>: movq %rax, %r14 0x44324a <+58>: movq %rbx, %rdi 0x44324d <+61>: callq 0x45dbf0 ; mongoc_uri_destroy 0x443252 <+66>: movq %r14, %rax (lldb) f 2 frame #2: 0x000000000044252a mongo_c_test`main(argc=1, argv=0x00007fffffffe0b8) + 58 at main.cpp:32 29 /* 30 * Create a new client instance 31 */ -> 32 client = mongoc_client_new("mongodb://localhost:27017"); 33 34 /* 35 * Get a handle on the database "db_name" and collection "coll_name"