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.