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.

Reply via email to