Juerd has asked for the wisdom of the Perl Monks concerning the following question:

Below is the error stack during 'make test': PERL_DL_NONLAZY=1 /usr/local/bin/perl5.8.0 "-MExtUtils::Command::MM" " +-e" "test_harness(0,'blib/lib', 'blib/arch')" t/*.t t/1....Can't undef active subroutine during global destruction. dubious Test returned status 255 (wstat 65280, 0xff00) after all the subtests completed successfully Failed Test Stat Wstat Total Fail Failed List of Failed ---------------------------------------------------------------------- +--------- t/1.t 255 65280 176 0 0.00% ?? Failed 1/1 test scripts, 0.00% okay. 0/176 subtests failed, 100.00% ok +ay. make: *** [test_dynamic] Error 2

This is the FAIL report that I keep getting about Attribute::Property. I guess some Perl bug is involved, but before I report one I'd like to know a bit more.

All FAIL reports were sent by machines that use a threaded 5.8.0, so perhaps it has something to do with threading. Attribute::Property does not use threads, though.

The tests do not fail, as you can see: all 176 tests succeed, and then it dies during global destruction. Because global destruction is something internal to Perl, I can't control or debug this error.

If you have any information that could help me fix or work around this problem, or if you can explain why it goes wrong, please do so.

If you have both a threaded and a threadless Perl, please "make test" for Attribute::Property and let me know if both perls failed or only one did.

Thanks!

Juerd
- http://juerd.nl/
- spamcollector_perlmonks@juerd.nl (do not use).

  • Comment on Can't undef active subroutine during global destruction in threaded 5.8.0
  • Download Code

Replies are listed 'Best First'.
Re: Can't undef active subroutine during global destruction in threaded 5.8.0
by PodMaster (Abbot) on Apr 24, 2003 at 06:58 UTC
    Could be (no problem with ithreads perl)
    E:\new\Attribute-Property-1.04>perl Makefile.PL Checking if your kit is complete... Looks good Writing Makefile for Attribute::Property E:\new\Attribute-Property-1.04>nmake test Microsoft (R) Program Maintenance Utility Version 6.00.8168.0 Copyright (C) Microsoft Corp 1988-1998. All rights reserved. cp Property.pm blib\lib\Attribute\Property.pm G:\Perl\bin\perl.exe "-MExtUtils::Command::MM" "-e" "test_harn +ess(0, 'blib\lib', 'blib\arch')" t\1.t t\1....ok All tests successful. Files=1, Tests=176, 1 wallclock secs ( 0.00 cusr + 0.00 csys = 0.00 + CPU) E:\new\Attribute-Property-1.04>perl -V Summary of my perl5 (revision 5 version 8 subversion 0) configuration: Platform: osname=MSWin32, osvers=4.0, archname=MSWin32-x86-multi-thread uname='' config_args='undef' hint=recommended, useposix=true, d_sigaction=undef usethreads=undef use5005threads=undef useithreads=define usemultip +licity=define useperlio=define d_sfio=undef uselargefiles=define usesocks=undef use64bitint=undef use64bitall=undef uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cl', ccflags ='-nologo -Gf -W3 -MD -DNDEBUG -O1 -DWIN32 -D_CON +SOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IM +P LICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX', optimize='-MD -DNDEBUG -O1', cppflags='-DWIN32' ccversion='', gccversion='', gccosandvers='' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234 d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=10 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='__int64 +', lseeksize=8 alignbytes=8, prototype=define Linker and Libraries: ld='link', ldflags ='-nologo -nodefaultlib -release -libpath:"G:\ +Perl\lib\CORE" -machine:x86' libpth="C:\Program Files\Microsoft Visual Studio\VC98\mfc\lib" "C: +\Program Files\Microsoft Visual Studio\VC98\lib" "G:\Perl\lib\CORE" libs= oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib + comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netap +i 32.lib uuid.lib wsock32.lib mpr.lib winmm.lib version.lib odbc32.lib +odbccp32.lib msvcrt.lib perllibs= oldnames.lib kernel32.lib user32.lib gdi32.lib winspool +.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib n +e tapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib version.lib odbc32. +lib odbccp32.lib msvcrt.lib libc=msvcrt.lib, so=dll, useshrplib=yes, libperl=perl58.lib gnulibc_version='undef' Dynamic Linking: dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' ' cccdlflags=' ', lddlflags='-dll -nologo -nodefaultlib -release -l +ibpath:"G:\Perl\lib\CORE" -machine:x86' Characteristics of this binary (from libperl): Compile-time options: MULTIPLICITY USE_ITHREADS USE_LARGE_FILES PERL +_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS Locally applied patches: ActivePerl Build 804 Built under MSWin32 Compiled at Dec 1 2002 23:15:13 @INC: G:/Perl/lib G:/Perl/site/lib . E:\new\Attribute-Property-1.04>


    MJD says you can't just make shit up and expect the computer to know what you mean, retardo!
    I run a Win32 PPM repository for perl 5.6x+5.8x. I take requests.
    ** The Third rule of perl club is a statement of fact: pod is sexy.

Re: No Worries. Rh7.3 - 5.6.1nothread, 5.8.0ithreads
by submersible_toaster (Chaplain) on Apr 24, 2003 at 07:48 UTC
    Non Threaded;
    Running make test PERL_DL_NONLAZY=1 /usr/local/bin/perl "-MExtUtils::Command::MM" "-e" " +test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/1....ok + All tests successful. Files=1, Tests=176, 0 wallclock secs ( 0.05 cusr + 0.00 csys = 0.05 + CPU) /usr/bin/make test -- OK [root@o3-judgedredd andrewb]# perl -V Summary of my perl5 (revision 5.0 version 6 subversion 1) configuratio +n: Platform: osname=linux, osvers=2.4.18-3smp, archname=i686-linux uname='linux o3-judgedredd.int.omnilab.com.au 2.4.18-3smp #1 smp t +hu apr 18 06:59:55 edt 2002 i686 unknown ' config_args='-ds -e' hint=recommended, useposix=true, d_sigaction=define usethreads=undef use5005threads=undef useithreads=undef usemultipl +icity=undef useperlio=undef d_sfio=undef uselargefiles=define usesocks=undef use64bitint=undef use64bitall=undef uselongdouble=undef Compiler: cc='cc', ccflags ='-fno-strict-aliasing -I/usr/local/include -D_LA +RGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', optimize='-O2', cppflags='-fno-strict-aliasing -I/usr/local/include' ccversion='', gccversion='2.96 20000731 (Red Hat Linux 7.3 2.96-11 +0)', gccosandvers='' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=1 +2 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', + lseeksize=8 alignbytes=4, usemymalloc=n, prototype=define Linker and Libraries: ld='cc', ldflags =' -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib libs=-lnsl -lndbm -lgdbm -ldl -lm -lc -lcrypt -lutil perllibs=-lnsl -ldl -lm -lc -lcrypt -lutil libc=/lib/libc-2.2.5.so, so=so, useshrplib=false, libperl=libperl. +a Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynami +c' cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib' Characteristics of this binary (from libperl): Compile-time options: USE_LARGE_FILES Built under linux Compiled at Nov 1 2002 13:49:05 @INC: /usr/local/lib/perl5/5.6.1/i686-linux /usr/local/lib/perl5/5.6.1 /usr/local/lib/perl5/site_perl/5.6.1/i686-linux /usr/local/lib/perl5/site_perl/5.6.1 /usr/local/lib/perl5/site_perl .
    Threaded 5.8;
    Running make test PERL_DL_NONLAZY=1 /usr/dev/perl/bin/perl "-MExtUtils::Command::MM" "-e +" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/1....ok + All tests successful. Files=1, Tests=176, 0 wallclock secs ( 0.12 cusr + 0.00 csys = 0.12 + CPU) /usr/bin/make test -- OK Summary of my perl5 (revision 5.0 version 8 subversion 0) configuratio +n: Platform: osname=linux, osvers=2.4.18-4sgi_xfs_1.1, archname=i686-linux-thre +ad-multi uname='linux o1-ione 2.4.18-4sgi_xfs_1.1 #1 tue may 28 10:12:13 cd +t 2002 i686 unknown ' config_args='' hint=recommended, useposix=true, d_sigaction=define usethreads=define use5005threads=undef useithreads=define usemulti +plicity=define useperlio=define d_sfio=undef uselargefiles=define usesocks=undef use64bitint=undef use64bitall=undef uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing + -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/u +sr/include/gdbm', optimize='-O2', cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -I/usr/l +ocal/include -I/usr/include/gdbm' ccversion='', gccversion='2.96 20000731 (Red Hat Linux 7.3 2.96-11 +0)', gccosandvers='' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=1 +2 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', + lseeksize=8 alignbytes=4, prototype=define Linker and Libraries: ld='cc', ldflags =' -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib libs=-lnsl -lndbm -lgdbm -ldl -lm -lpthread -lc -lcrypt -lutil perllibs=-lnsl -ldl -lm -lpthread -lc -lcrypt -lutil libc=/lib/libc-2.2.5.so, so=so, useshrplib=false, libperl=libperl. +a gnulibc_version='2.2.5' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynami +c' cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib' Characteristics of this binary (from libperl): Compile-time options: MULTIPLICITY USE_ITHREADS USE_LARGE_FILES PERL +_IMPLICIT_CONTEXT Built under linux Compiled at Nov 1 2002 14:05:59 @INC: /usr/dev/perl/lib/5.8.0/i686-linux-thread-multi /usr/dev/perl/lib/5.8.0 /usr/dev/perl/lib/site_perl/5.8.0/i686-linux-thread-multi /usr/dev/perl/lib/site_perl/5.8.0 /usr/dev/perl/lib/site_perl

      Thank you, PodMaster and submersible_toaster, for providing examples of threaded Perls that don't die when testing Attribute::Property.

      I notice that in the archname part of the FAILed tests, these elements are always present: thread-multi-ld. I don't know what ld stands for, but I see your Perl doesn't have it.

      "ld" is too short to google for. Can anyone please explain to me what it is? (or provide a Google search query that finds something useful)

      Thanks again.

      Juerd
      - http://juerd.nl/
      - spamcollector_perlmonks@juerd.nl (do not use).
      

        Long doubles, I believe. It lets your scalars hold up to somewhere in the range of 10**1700.

        -BronzeWing

        Update: Hmm. I don't know where I got 10**1700, but I just compiled perl 5.8.0 for i686-linux-thread-multi-ld and it actually gets up to 10**4931 before it gives up and turns into 'inf'.