Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Perl: porters

[perl #70748] threads panic in del_backref

 

 

Perl porters RSS feed   Index | Next | Previous | View Threaded


perlbug-followup at perl

Nov 23, 2009, 7:25 AM

Post #1 of 6 (401 views)
Permalink
[perl #70748] threads panic in del_backref

# New Ticket Created by "Jerry D. Hedden"
# Please include the string: [perl #70748]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=70748 >


This is a bug report for perl from jdhedden [at] cpan,
generated with the help of perlbug 1.39 running under perl 5.11.0.

-----------------------------------------------------------------
[Please describe your issue here]

The following:

use threads;

sub foo {
return (sub { });
}

my $bar = threads->create(\&foo)->join();

threads->create(sub { })->join();

produces:

panic: del_backref during global destruction.

This bug was introduced with change 34354
(commit a49ba3fcbe357fbacf7b9898df08daa2cbdfc8c4)

Once fixed, the following can be added to t/op/threads.t:

# Test we don't get:
# panic: del_backref during global destruction.
fresh_perl_is(<<'EOI', 'ok', { }, 'Direct lookup hash for ->isa()');
use threads;
sub foo { return (sub { }); }
my $bar = threads->create(\&foo)->join();
threads->create(sub { })->join();
print "ok";
EOI


[Please do not change anything below this line]
-----------------------------------------------------------------
---
Flags:
category=core
severity=medium
---
Site configuration information for perl 5.11.0:

Configured by Jerry at Mon Nov 23 09:24:58 EST 2009.

Summary of my perl5 (revision 5 version 11 subversion 0 patch 34354)
configuration:
Platform:
osname=cygwin, osvers=1.5.25(0.15642), archname=cygwin-thread-multi-64int
uname='cygwin_nt-5.1 pn100-02-2-364p 1.5.25(0.15642) 2008-06-12
19:34 i686 cygwin '
config_args='-de -Dusedevel -Dversiononly=no -Dinstallusrbinperl
-Uusemallocwrap -Duse64bitint -Dusethreads -Dinc_version_list=none
-Dnoextensions=IPC/SysV Sys/Syslog Devel/DProf Devel/Peek re GDBM_File
NDBM_File ODBM_File Text/Soundex attrs Math/BigInt/FastCalc Time/Piece
-A append:ccflags= -DNO_MATHOMS -A define:optimize=-Os -pipe
-funit-at-a-time -march=pentium4 -mfpmath=sse -mieee-fp -mmmx -msse
-msse2'
hint=recommended, useposix=true, d_sigaction=define
useithreads=define, usemultiplicity=define
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=define, use64bitall=undef, uselongdouble=undef
usemymalloc=y, bincompat5005=undef
Compiler:
cc='gcc', ccflags ='-DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__
-DNO_MATHOMS -fno-strict-aliasing -pipe',
optimize='-Os -pipe -funit-at-a-time -march=pentium4 -mfpmath=sse
-mieee-fp -mmmx -msse -msse2',
cppflags='-DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__ -DNO_MATHOMS
-fno-strict-aliasing -pipe'
ccversion='', gccversion='3.4.4 (cygming special, gdc 0.12, using
dmd 0.125)', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=12345678
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
ivtype='long long', ivsize=8, nvtype='double', nvsize=8,
Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='g++', ldflags =' -Wl,--enable-auto-import
-Wl,--export-all-symbols -Wl,--stack,8388608
-Wl,--enable-auto-image-base -s -L/usr/local/lib'
libpth=/usr/local/lib /usr/lib /lib
libs=-lgdbm -ldl -lcrypt -lgdbm_compat
perllibs=-ldl -lcrypt
libc=/usr/lib/libc.a, so=dll, useshrplib=true, libperl=cygperl5_11_0.dll
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' -s'
cccdlflags=' ', lddlflags=' --shared -Wl,--enable-auto-import
-Wl,--export-all-symbols -Wl,--stack,8388608
-Wl,--enable-auto-image-base -s -L/usr/local/lib'

Locally applied patches:
DEVEL

---
@INC for perl 5.11.0:
lib
/usr/lib/perl5/5.11.0/cygwin
/usr/lib/perl5/5.11.0
/usr/lib/perl5/site_perl/5.11.0/cygwin
/usr/lib/perl5/site_perl/5.11.0
.

---
Environment for perl 5.11.0:
CYGWIN=ntsec
HOME=/home/jhedden
LANG=C
LANGUAGE=C
LC_ALL=C
LD_LIBRARY_PATH (unset)
LOGDIR (unset)
PATH=/home/jhedden/bin:/usr/local/src/perl/bin:/link/work/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/c/Program
Files/WiX:/c/djgpp/bin:/c/bb/tools/apache-ant-1.6.5/bin:/c/Program
Files/nant-0.85/bin:/c/bb/tools/jse5/bin:/c/dev-cpp/bin:/c/WINDOWS/system32:/c/WINDOWS:/c/WINDOWS/system32/WBEM:/c/blp/API/dde:/c/blp/API:/c/oracle/ora92/bin:/c/Program
Files/Oracle/jre/1.3.1/bin:/c/Program
Files/Oracle/jre/1.1.8/bin:/c/Program
Files/Hummingbird/Connectivity/7.10/Accessories:/usr/bin:/c/Program
Files/Windows Imaging/:.
PERLIO=perlio
PERL_BADLANG (unset)
SHELL (unset)


jdhedden at cpan

Nov 25, 2009, 12:32 PM

Post #2 of 6 (373 views)
Permalink
Re: [perl #70748] threads panic in del_backref [In reply to]

> # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=70748 >
>
> The following:
>
>    use threads;
>
>    sub foo {
>        return (sub { });
>    }
>
>    my $bar = threads->create(\&foo)->join();
>
>    threads->create(sub { })->join();
>
> produces:
>
>    panic: del_backref during global destruction.

It get trickier. With commit 789c461534f3eb0346447f8127786b7da3017f6c
the bug "goes away". The only substantive thing that commit did was add
fatal_enabled() to warnings.pm. If I manually edit warnings.pm to remove
that function, the bug reappears.


nick at ccl4

Nov 27, 2009, 3:56 AM

Post #3 of 6 (363 views)
Permalink
Re: [perl #70748] threads panic in del_backref [In reply to]

On Wed, Nov 25, 2009 at 03:32:27PM -0500, Jerry D. Hedden wrote:
> > # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=70748 >
> >
> > The following:
> >
> >    use threads;
> >
> >    sub foo {
> >        return (sub { });
> >    }
> >
> >    my $bar = threads->create(\&foo)->join();
> >
> >    threads->create(sub { })->join();
> >
> > produces:
> >
> >    panic: del_backref during global destruction.
>
> It get trickier. With commit 789c461534f3eb0346447f8127786b7da3017f6c
> the bug "goes away". The only substantive thing that commit did was add
> fatal_enabled() to warnings.pm. If I manually edit warnings.pm to remove
> that function, the bug reappears.

I can't re-create this on any platform I have access to (Linux, OS X, FreeBSD),
with any revision I tried. (Just after the revision you report introduced it,
and with various recent revisions prior to 789c461534f3eb03).

Does this happen on any platform other than Cygwin?

Is it sensitive to external factors? For example, the number of environment
variables set?

Nicholas Clark


jdhedden at cpan

Nov 28, 2009, 1:58 PM

Post #4 of 6 (357 views)
Permalink
Re: [perl #70748] threads panic in del_backref [In reply to]

Jerry D. Hedden wrote:
> # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=70748 >
>
> The following:
>
>    use threads;
>
>    sub foo {
>        return (sub { });
>    }
>
>    my $bar = threads->create(\&foo)->join();
>
>    threads->create(sub { })->join();
>
> produces:
>
>    panic: del_backref during global destruction.

It get trickier.  With commit 789c461534f3eb0346447f8127786b7da3017f6c
the bug "goes away".  The only substantive thing that commit did was add
fatal_enabled() to warnings.pm.  If I manually edit warnings.pm to remove
that function, the bug reappears.

Nicholas Clark wrote:
> I can't re-create this on any platform I have access to (Linux, OS X, FreeBSD),
> with any revision I tried. (Just after the revision you report introduced it,
> and with various recent revisions prior to 789c461534f3eb03).
>
> Does this happen on any platform other than Cygwin?

Yes. I can reproduce it with ActivePerl 5.10.1.
(I tried 5.10.1 under Solaris, but that did not reproduce the bug.)


jdhedden at cpan

Dec 16, 2009, 8:45 AM

Post #5 of 6 (271 views)
Permalink
Re: [perl #70748] threads panic in del_backref [In reply to]

On Tue, Dec 15, 2009 at 19:04, Jesse via RT <perlbug-followup [at] perl> wrote:
> On Sat Nov 28 13:59:06 2009, jdhedden [at] cpan wrote:
>> Jerry D. Hedden wrote:
>> > # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=70748 >
>> >
>> > The following:
>> >
>> >    use threads;
>> >
>> >    sub foo {
>> >        return (sub { });
>> >    }
>> >
>> >    my $bar = threads->create(\&foo)->join();
>> >
>> >    threads->create(sub { })->join();
>> >
>> > produces:
>> >
>> >    panic: del_backref during global destruction.
>>
>> It get trickier.  With commit 789c461534f3eb0346447f8127786b7da3017f6c
>> the bug "goes away".  The only substantive thing that commit did was
>> add fatal_enabled() to warnings.pm.  If I manually edit warnings.pm to
>> remove that function, the bug reappears.
>>
>> Nicholas Clark wrote:
>> > I can't re-create this on any platform I have access to (Linux, OS X, FreeBSD),
>> > with any revision I tried. (Just after the revision you report introduced it,
>> > and with various recent revisions prior to 789c461534f3eb03).
>
> At this point, should this issue still be blocking 5.12.0?

For that it's worth, my opinion is that this should be looked into and
fixed. It looks to be some internal bug that could potentially cause
threaded apps to become unusable.


jesse at fsck

Dec 16, 2009, 10:06 AM

Post #6 of 6 (275 views)
Permalink
Re: [perl #70748] threads panic in del_backref [In reply to]

On Wed, Dec 16, 2009 at 11:45:25AM -0500, Jerry D. Hedden wrote:
> On Tue, Dec 15, 2009 at 19:04, Jesse via RT <perlbug-followup [at] perl> wrote:
> > On Sat Nov 28 13:59:06 2009, jdhedden [at] cpan wrote:
> >> Jerry D. Hedden wrote:
> >> > # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=70748 >
> >> >
> >> > I can't re-create this on any platform I have access to (Linux, OS X, FreeBSD),
> >> > with any revision I tried. (Just after the revision you report introduced it,
> >> > and with various recent revisions prior to 789c461534f3eb03).
> >
> > At this point, should this issue still be blocking 5.12.0?
>
> For that it's worth, my opinion is that this should be looked into and
> fixed. It looks to be some internal bug that could potentially cause
> threaded apps to become unusable.
>
[resent with perlbug on cc list]

I have absolutely no problem keeping it open. But it doesn't look like
it fits the criteria for blocking shipment of 5.12.0.



--

Perl porters RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.