On Sep 16, 2011, at 5:50 AM, Gaspard Bucher wrote:
See the recent weak tables and finalization discussion, but I think this is another case of:
thread becomes unreachable
... so udata becomes unreachable
... so udata is queued for finalization
... so fenv and everything it leads to is marked in case it's needed for finalization
... so udata_thread gets marked
... so the code to clear weak tables keeps the thread around in your weak table (not shown) for another cycle
Then eventually, we finalize udata and bingo we have a path to a finalized userdatum.
The other discussion was moving toward a suggestion that the logic for clearing weak tables needed to be moved in the GC process.