On 3/16/2020 3:48 AM, Christopher Chavez wrote:
The addresses involved are inside allocations from Tcl's thread block cache, which I'm guessing could be heavily reused over the life of a Tcl program (to minimize direct calls to malloc()). I'll ask Tcl developers, but is anyone here aware of a way to disable this or make it debugging-friendly to identify what the last user of the block is?
To partially answer my own question: there are some compile-time techniques to try like -DPURIFY https://wiki.tcl-lang.org/page/How+to+debug+memory+faults+in+Tcl+and+extensions That page mentioned the Tcl exit command, which I've never used from Perl. Adding it completely prevents the error: use Tcl; my $i = new Tcl; $i->Init; $i->Eval(<<'EOS'); package require Tk package require Tktable destroy . exit EOS But should things like destroying the root window and Tcl exit really be necessary to prevent errors during normal usage? Christopher A. Chavez