-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: APIs, Checkpoint Cleanup
-
Storage Engines - Foundations
-
373.08
-
SE Foundations - 2026-09-15
-
1
Problem:
__wti_connection_workers starts the checkpoint cleanup server (__wt_checkpoint_cleanup_create, conn_open.c). Only the normal close path, __conn_close (conn_api.c), stops it. When wiredtiger_open fails after the workers were started (for example a failure in __conn_startup_cleanup_and_verify), teardown goes through __wti_connection_close which destroys every other server but not this one. The thread keeps running against a freed connection. Reproduced: a wiredtiger_open that fails after worker startup, followed by other connections in the same process, crashes with SIGSEGV in the checkpoint-cleanup thread of the failed connection.
Solution:
Call __wt_checkpoint_cleanup_destroy in __wti_connection_close next to the other server destroys (after the background compact server, before the checkpoint server). The destroy is idempotent, so the normal close path which already stopped it in __conn_close, is unaffected.