Tcl Source Code

View Ticket
Login
Ticket UUID: ac601b59bab79fbe0559f19f65620c28a3287517
Title: using the Thread package in a debugging build of Tcl results in a segmentation fault at exit
Type: Bug Version: 8.7
Submitter: pooryorick Created on: 2022-03-21 21:50:50
Subsystem: - New Builtin Commands Assigned To: pooryorick
Priority: 5 Medium Severity: Important
Status: Closed Last Modified: 2022-04-14 10:33:21
Resolution: Fixed Closed By: jan.nijtmans
    Closed on: 2022-04-14 10:33:21
Description:

In a debugging build of core_8_branch, a script that does nothing more than require the Thread package results in a segmentation fault when the process exits. This is due to the fact that since commit [3b0e92b198], LoadCleanupProc() unloads every loaded library when an interp is deleted. Later, FinalizeThread() calls exit handlers set up by the Thread library, but those handlers have been unloaded, causing a segmentation fault.

User Comments: jan.nijtmans added on 2022-04-14 10:33:21:

Since the fix is in core-8-branch now, this ticket can be closed.

Thanks, pooryorick, for the fix!


pooryorick added on 2022-03-22 00:52:43:

Fixed in [f0a6d62a1ade872d]. With this fix, a library is only unloaded from the process if it provides a "Unload" function. Since it requires some care to produce a library fit for dynamic unloading, it makes sense to limit unload functionality only to those libraries specifically designed to support it. Checking for the existence of an "Unload" function is a good way to differentiate between modules that can be unloaded, and modules that cannot.