On Tue, Feb 07, 2012 at 10:54:12PM +0000, Tim Bunce wrote:
> > -        if (!imp_msv) {
> > +        if (!imp_msv || !GvCV(imp_msv)) {
> 
> What's the GvCV test for?

One of the more vicious tests in t/31methcache.t does

    local $DBD::Sponge::st::{fetch};

which causes gv_fetchmeth(...,'fetch') to return a GV that has a null CV
slot (IIRC).

> > +# With this test code and threads, 5.8.1 has issues with freeing freed
> > +# scalars, while 5.8.9 doesn't; I don't know about in-between - DAPM
> 
> "issues"? i.e., warnings at global destruction?

Yes, similar to those that t/35thrclone.t generates; i.e. I assume that
it's a generic issue with ithreads in early 5.8.x releases (I remember
fixing a lot of such issues, and Nicholas backporting them into
maint-5.8). So I decided to just skip the threading-related cache tests
for early 5.8.x's.

> The Mac OS X perl 5.8.8 with threads that I have handy works ok.
> 
> > +my $has_threads = $Config{useithreads} && $] >= 5.008009;
> > +die $use_threads_err if $has_threads && $use_threads_err;
> 
> Umm.
> 
> I'm tempted to disable the cache at compile time for perl < 5.8.8.

I don't think the caching code is bringing up any new threading issues
with early 5.8.x's; i.e. the new test file t/31methcache gives the same
pattern of 'Attempt to free unreferenced scalar' warnings with or without
the cache code.

> Meanwhile, I've applied the patch and uploaded a trial release
> for cpantesters to chew on. Once there are sufficient reports from old
> perls that have threading enabled I'll scan them for warnings.

Ok thanks.

PS - I'm currently working on bringing PERINTERP and DBIS into the
Brave New World of MY_CXT.

-- 
Hofstadter's Law: It always takes longer than you expect, even when you
take into account Hofstadter's Law.

Reply via email to