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: (text/x-fossil-wiki)
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],
<code>LoadCleanupProc()</code> unloads every loaded library when an interp is
deleted.  Later, <code>FinalizeThread()</code> 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: (text/x-fossil-wiki)
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: (text/x-fossil-wiki)
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.