-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: libmongoc
-
None
While implementing retryable write tests (CDRIVER-2228), I encountered a segfault when I forgot to destroy a session:
mongoc_uri_t *uri; mongoc_client_t *client; mongoc_client_session_t *session; mongoc_collection_t *collection; bson_t test; bson_error_t error; uri = test_framework_get_uri (); mongoc_uri_set_option_as_bool (uri, "retryWrites", false); client = mongoc_client_new_from_uri (uri); test_framework_set_ssl_opts (client); mongoc_uri_destroy (uri); /* TODO: Remove this once start_session initializes the topology */ mongoc_client_command_simple (client, "admin", tmp_bson ("{'ping': 1}"), NULL, NULL, &error); session = mongoc_client_start_session (client, NULL, &error); collection = get_test_collection (client, "retryable_writes"); // Commenting these out, but these are functions that run the JSON test spec // insert_data (collection, scenario); // execute_test (collection, &test, session); if (!mongoc_collection_drop (collection, &error)) { if (strcmp (error.message, "ns not found")) { /* an error besides ns not found */ ASSERT_OR_PRINT (false, error); } } mongoc_collection_destroy (collection); // If the session is not destroyed at all, we get a segfault during client destruction // mongoc_client_session_destroy (session); mongoc_client_destroy (client);
Backtrace:
#0 0x0000000000000000 in ?? () #1 0x0000000000502c2c in mongoc_set_for_each (set=0x502c2c <mongoc_set_for_each+38>, cb=0x7ffd52361f50, ctx=0x7fe8bdd4557d <bson_free+28>) at src/mongoc/mongoc-set.c:163 #2 0x00000000004d1373 in mongoc_client_get_uri (client=0x27a8260) at src/mongoc/mongoc-client.c:1059 #3 0x000000000048f33e in test_all_spec_tests (suite=0x561707) at tests/test-mongoc-retryable-writes.c:656 #4 0x00000000004c3b95 in TestSuite_RunTest (suite=0x7ffd523627b0, test=0x275b1b0, count=0x7ffd52362738) at tests/TestSuite.c:698 #5 0x00000000004c463d in TestSuite_RunNamed (suite=0x7ffd523627b0, testname=0x2736270 "/retryable_writes/*") at tests/TestSuite.c:1021 #6 0x00000000004c4767 in TestSuite_Destroy (suite=0x7ffd523627b0) at tests/TestSuite.c:1061 #7 0x0000000000419a45 in main (argc=5, argv=0x7ffd523628f8) at tests/test-libmongoc.c:2147
- is related to
-
CDRIVER-2192 Implement Driver Sessions API
- Closed
-
CDRIVER-2228 All writes retryable support
- Closed