Leopold Toetsch via RT wrote:
Will Coleda <[EMAIL PROTECTED]> wrote:
I noticed after a recent update that parts of the tcl test suite started failing. I finally tracked it down to the fact that I was NOT running with '-G'.
tcl.pl dies at 19, removing "or die" fixes that.
In my rush to get check back in to duplicate the bug, I created the same bug I did before since I hadn't pruned empty directories. Fixed.
To your problem:
C<tclobject> is an abstract object, it doesn't have a vtable. But the bundling code *does* C<pmc_register> this PMC. This leads to an empty vtable slot, dereferencing that NULL is an operation, which many systems don't like.
After fixing that (or better working around - C<pmc_register> shouldn't be called) it dies later and as usual by loosing C<TclWords> - it seems.
My gut feeling is that C<TclArray> isn't quite up to data. It duplicates at firt sight just C<PerlHash>. But the latter has recent changes WRT hash creation, which aren't in C<TclArray>.
Yup. Tcl* are all (except TclWord) cargo culted from the first time I submitted a patch. They've not been kept current since they were uncompilable until a week or two ago.
I'd first reduce C<TclArray> to a bare minimum. Specifically the creation functions (init, clone) should be inherited (or follow the C<PerlHash> conventions). The same applies to any PMC that can hold pointers to other PMCs.
These changes are necessary to make a PMC compliant with incremental GC. Please grep through the docs and the sources for DOD_WRITE_BARRIER.
Hey, finally one of the GC bugs is my fault! I've claimed the ticket, I'll see what I can do.