At 11:52 AM +0000 3/6/08, Nicholas Clark wrote:
>On Wed, Mar 05, 2008 at 08:11:59PM -0600, Craig A. Berry wrote:
>> At 11:52 PM +0000 3/5/08, Nicholas Clark wrote:
>> >I've made another 5.8.x snapshot.
>> >
>> >http://www.ccl4.org/~nick/P/perl-33444.tar.bz2
>> >(or http://www.ccl4.org/~nick/P/perl-33444.tar.gz )
>> >
>> >It's closing in on what 5.8.9 is going to be, give or take breakage, late
>> >interesting bug fixes, and resolution of some things that aren't quite there
>> >yet
>> >
>> >Aside from -Dodgy.pm on VOS, what is still broken that wasn't broken in 
>> >5.8.8?
>>
>> At 33430 (always just a bit behind you) on VMS I see:
>>
>> t/op/threads................................FAILED--expected 10 tests, saw 9
>> ext/threads/shared/t/stress.................FAILED at test 1
>> ext/threads/t/blocks........................FAILED--expected 5 tests, saw 4
>> lib/ExtUtils/t/cd...........................FAILED at test 1
>> lib/ExtUtils/t/eu_command...................FAILED at test 21
> > lib/ExtUtils/t/xs...........................FAILED--non-zero wait status: 
> > 1024
>> Failed 6 tests out of 1080, 99.44% okay.
>>
>> Obviously that's a threaded build.  The threads failures are access
> > violations; I'll check whether 33436 does us any good there.

It doesn't.

>
>Did these fail that way on 5.8.8?

The only failing test scripts that even existed in 5.8.8 were
t/op/threads.t and lib/ExtUtils/t/xs.t.  Both do a great deal more
now than they did then.

>I'd be surprised if anything that changed recently changed threaded behaviour.

It appears to be something about global destruction under threads.
If I take blocks.t and run it under 5.8.8, I get:

$ perl d0:[craig.perl-5_8.ext.threads.t]blocks.t
1..5
Attempt to free unreferenced scalar: SV 0x579b28, Perl interpreter: 0x570370 at 
d0:[craig.perl-5_8.ext.threads.t]blocks.t line 91 during global destruction.
ok 1 - Loaded
Attempt to free unreferenced scalar: SV 0x5bcbe0, Perl interpreter: 0x570370 at 
d0:[craig.perl-5_8.ext.threads.t]blocks.t line 91 during global destruction.
ok 2 - Main thread
ok 3 - BEGIN thread
ok 4 - Main join
Attempt to free unreferenced scalar: SV 0x819cd8, Perl interpreter: 0x803820 at 
d0:[craig.perl-5_8.ext.threads.t]blocks.t line 91 during global destruction.
ok 5 - BEGIN join

but under [EMAIL PROTECTED] I get:

$ perl  [-.ext.threads.t]blocks.t
1..5
ok 1 - Loaded
ok 2 - Main thread
ok 3 - BEGIN thread
ok 4 - Main join
%SYSTEM-F-ACCVIO, access violation, reason mask=00, virtual 
address=0000000000000014, PC=00000000001641D4, PS=0000001B
%TRACE-F-TRACEBACK, symbolic stack dump follows
  image    module    routine             line      rel PC           abs PC
 DBGPERLSHR  VMS  Perl_flex_fstat      114875 000000000001C0D4 00000000001641D4
 DBGPERLSHR  VMS  Perl_my_flush        113516 0000000000019AE8 0000000000161BE8
 DBGPERLSHR  PERLIO  PerlIOStdio_flush  74500 0000000000007F24 00000000000CD524
 DBGPERLSHR  PERLIO  Perl_PerlIO_flush  72872 0000000000003B2C 00000000000C912C
 DBGPERLSHR  PERLIO  Perl_PerlIO_flush  72896 0000000000003BD0 00000000000C91D0
 DBGPERLSHR  UTIL  Perl_my_fflush_all   67339 0000000000005B94 000000000011DDD4
 DBGPERLSHR  PERL  perl_destruct        64424 0000000000000DF4 00000000000B9EF4
 PL_THREADS  THREADS  S_ithread_clear   66939 0000000000000344 00000000004C8344
 PL_THREADS  THREADS  XS_threads_join   67973 0000000000006998 00000000004CE998
 DBGPERLSHR  PP_HOT  Perl_pp_entersub   66441 000000000000CDA4 00000000001BDE94
 DBGPERLSHR  DUMP  Perl_runops_debug    68864 0000000000007034 0000000000186DD4
 DBGPERLSHR  PERL  S_run_body           66189 00000000000046D4 00000000000BD7D4
 DBGPERLSHR  PERL  perl_run             66104 0000000000004300 00000000000BD400
 NDBGPERL  PERLMAIN  main               63706 00000000000001FC 00000000000201FC
 NDBGPERL  PERLMAIN  __main             63650 00000000000000A0 00000000000200A0
 PTHREAD$RTL                                0 0000000000057618 FFFFFFFF80E77618
 PTHREAD$RTL                                0 0000000000030444 FFFFFFFF80E50444
                                            0 FFFFFFFF80377CE4 FFFFFFFF80377CE4
%TRACE-I-END, end of TRACE stack dump

The line where it blows up in the VMS-specific Perl_flex_fstat looks
like so with its macro expansion under it:

      3  114875     if (VMSISH_TIME) {
       E                ((my_perl->Tcurcop)->op_private & ((0x80000000) >> 24))

Tcurcop has already been zeroed:

DBG> examine my_perl->Tcurcop
VMS\Perl_flex_fstat\my_perl->Tcurcop:   0

Something like the following safety check may do the trick.  I'll try
it out and see what happens.

--- vms/vmsish.h;-0     Wed Mar  5 21:52:48 2008
+++ vms/vmsish.h        Thu Mar  6 11:00:14 2008
@@ -296,7 +296,7 @@
 #define HINT_M_VMSISH_TIME     0x80000000 /* times are local, not UTC */
 #define NATIVE_HINTS           (PL_hints >> HINT_V_VMSISH)  /* used in op.c */
 
-#define TEST_VMSISH(h) (PL_curcop->op_private & ((h) >> HINT_V_VMSISH))
+#define TEST_VMSISH(h) (PL_curcop && (PL_curcop->op_private & ((h) >> 
HINT_V_VMSISH)))
 #define VMSISH_STATUS  TEST_VMSISH(HINT_M_VMSISH_STATUS)
 #define VMSISH_TIME    TEST_VMSISH(HINT_M_VMSISH_TIME)
 
[end]

> > For the MakeMaker failures, eu_command.t and xs.t behaved after
>> upgrading to 6.43_01.  cd.t I just patched last night:
>>
>> https://rt.cpan.org/Ticket/Display.html?id=33813
>>
>> If there are no further integrations of MakeMaker in the cards (I
>> think 6.44 is out), I can mark tests as TODO or otherwise patch the
>> tests if you wish.
>
>I'm not sure what to do here.
>Is MakeMaker in blead passing everywhere?
>There are still patches outstanding in ExtUtils::Install, aren't there?

Not sure how to advise you on this.  I'm not aware of anything that
worked under 5.8.8 that is not working now, but the tests are more
extensive now.  Sorry to be the spoilsport but these remaining items
don't seem gigantic.
-- 
________________________________________
Craig A. Berry
mailto:[EMAIL PROTECTED]

"... getting out of a sonnet is much more
 difficult than getting in."
                 Brad Leithauser

Reply via email to