Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bleadperl v5.15.3-244-gaa33328 breaks ASG/List-Gen-0.973.tar.gz #11700

Closed
p5pRT opened this issue Oct 16, 2011 · 9 comments
Closed

Bleadperl v5.15.3-244-gaa33328 breaks ASG/List-Gen-0.973.tar.gz #11700

p5pRT opened this issue Oct 16, 2011 · 9 comments

Comments

@p5pRT
Copy link

p5pRT commented Oct 16, 2011

Migrated from rt.perl.org#101430 (status was 'resolved')

Searchable as RT101430$

@p5pRT
Copy link
Author

p5pRT commented Oct 16, 2011

From @andk

git bisect


commit aa33328
Author​: Brian Fraser <fraserbn@​gmail.com>
Date​: Sat Jul 23 18​:48​:51 2011 -0300

  util.c for threads​: stashpv_hvname_match UTF8 cleanup.

diagnostics


When run with a threaded perl, the test t/listgenerator.t of
ASG/List-Gen-0.973.tar.gz dumps core for all bleadperls >=
v5.15.3-244-gaa33328. The stacktrace looks like this​:
(gdb) bt
#0 0x00002b08212954ea in ?? () from /lib/libc.so.6
#1 0x00000000004807e4 in Perl_stashpv_hvname_match (my_perl=0x14f8010,
  c=<value optimized out>, hv=0x16f53a8) at util.c​:5853
#2 0x00000000004d7ddf in S_doeval (my_perl=0x14f8010,
  gimme=<value optimized out>, startop=0x0, outside=<value optimized out>,
  seq=<value optimized out>) at pp_ctl.c​:3503
#3 0x00000000004d9c1e in Perl_pp_require (my_perl=0x14f8010) at pp_ctl.c​:4102
#4 0x000000000049dd26 in Perl_runops_standard (my_perl=0x14f8010) at run.c​:41
#5 0x00000000004344cc in Perl_call_sv (my_perl=<value optimized out>,
  sv=0x16f53d8, flags=14) at perl.c​:2680
#6 0x000000000043499d in Perl_call_list (my_perl=<value optimized out>,
  oldscope=<value optimized out>, paramList=<value optimized out>)
  at perl.c​:4742
#7 0x000000000041e907 in S_process_special_blocks (my_perl=0x14f8010,
  fullname=<value optimized out>, gv=0x16f5450, cv=0x16f53d8) at op.c​:6786
#8 0x000000000042ec7c in Perl_newATTRSUB (my_perl=0x14f8010,
  floor=<value optimized out>, o=<value optimized out>,
  proto=<value optimized out>, attrs=<value optimized out>,
  block=<value optimized out>) at op.c​:6757
#9 0x000000000045de4b in Perl_yyparse (my_perl=0x14f8010,
  gramtype=<value optimized out>) at perly.y​:317
#10 0x00000000004d7f6e in S_doeval (my_perl=0x14f8010,
  gimme=<value optimized out>, startop=0x0, outside=<value optimized out>,
  seq=<value optimized out>) at pp_ctl.c​:3534
#11 0x00000000004d9c1e in Perl_pp_require (my_perl=0x14f8010) at pp_ctl.c​:4102
#12 0x000000000049dd26 in Perl_runops_standard (my_perl=0x14f8010) at run.c​:41
#13 0x00000000004344cc in Perl_call_sv (my_perl=<value optimized out>,
  sv=0x16c51d0, flags=14) at perl.c​:2680
#14 0x000000000043499d in Perl_call_list (my_perl=<value optimized out>,
  oldscope=<value optimized out>, paramList=<value optimized out>)
  at perl.c​:4742
#15 0x000000000041e907 in S_process_special_blocks (my_perl=0x14f8010,
  fullname=<value optimized out>, gv=0x15196d8, cv=0x16c51d0) at op.c​:6786
#16 0x000000000042ec7c in Perl_newATTRSUB (my_perl=0x14f8010,
  floor=<value optimized out>, o=<value optimized out>,
  proto=<value optimized out>, attrs=<value optimized out>,
  block=<value optimized out>) at op.c​:6757
#17 0x000000000042d869 in Perl_utilize (my_perl=0x14f8010,
  aver=<value optimized out>, floor=<value optimized out>,
  version=<value optimized out>, idop=0x16c36f0, arg=<value optimized out>)
  at op.c​:4633
#18 0x000000000045dd9a in Perl_yyparse (my_perl=0x14f8010,
  gramtype=<value optimized out>) at perly.y​:361
#19 0x00000000004d7f6e in S_doeval (my_perl=0x14f8010,
  gimme=<value optimized out>, startop=0x0, outside=<value optimized out>,
  seq=<value optimized out>) at pp_ctl.c​:3534
#20 0x00000000004d8b3c in Perl_pp_entereval (my_perl=0x14f8010)
  at pp_ctl.c​:4227
#21 0x000000000049dd26 in Perl_runops_standard (my_perl=0x14f8010) at run.c​:41
#22 0x00000000004344cc in Perl_call_sv (my_perl=<value optimized out>,
  sv=0x16ad138, flags=14) at perl.c​:2680
#23 0x000000000043499d in Perl_call_list (my_perl=<value optimized out>,
  oldscope=<value optimized out>, paramList=<value optimized out>)
  at perl.c​:4742
#24 0x000000000041e907 in S_process_special_blocks (my_perl=0x14f8010,
  fullname=<value optimized out>, gv=0x15196d8, cv=0x16ad138) at op.c​:6786
#25 0x000000000042ec7c in Perl_newATTRSUB (my_perl=0x14f8010,
  floor=<value optimized out>, o=<value optimized out>,
  proto=<value optimized out>, attrs=<value optimized out>,
  block=<value optimized out>) at op.c​:6757
#26 0x000000000045de4b in Perl_yyparse (my_perl=0x14f8010,
  gramtype=<value optimized out>) at perly.y​:317
#27 0x000000000043665a in S_parse_body (my_perl=0x14f8010,
  env=<value optimized out>, xsinit=<value optimized out>) at perl.c​:2221
#28 0x0000000000437439 in perl_parse (my_perl=<value optimized out>,
  xsinit=<value optimized out>, argc=<value optimized out>,
  argv=0x7fff0e742df8, env=<value optimized out>) at perl.c​:1628
#29 0x000000000041cd02 in main (argc=3, argv=0x7fff0e742df8,
  env=0x7fff0e742e18) at perlmain.c​:118

perl -V


Summary of my perl5 (revision 5 version 15 subversion 3) configuration​:
  Commit id​: aa33328
  Platform​:
  osname=linux, osvers=2.6.32-5-amd64, archname=x86_64-linux-thread-multi
  uname='linux k83 2.6.32-5-amd64 #1 smp mon oct 3 03​:59​:20 utc 2011 x86_64 gnulinux '
  config_args='-Dprefix=/home/src/perl/repoperls/installed-perls/perl/v5.15.3-244-gaa33328/ba65 -Dinstallusrbinperl=n -Uversiononly -Dusedevel -des -Ui_db -Duseithreads -Uuselongdouble -DDEBUGGING=-g'
  hint=recommended, useposix=true, d_sigaction=define
  useithreads=define, usemultiplicity=define
  useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
  use64bitint=define, use64bitall=define, uselongdouble=undef
  usemymalloc=n, bincompat5005=undef
  Compiler​:
  cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
  optimize='-O2 -g',
  cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
  ccversion='', gccversion='4.4.5', gccosandvers=''
  intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
  d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
  ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
  alignbytes=8, prototype=define
  Linker and Libraries​:
  ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
  libpth=/usr/local/lib /lib/../lib /usr/lib/../lib /lib /usr/lib /lib64 /usr/lib64
  libs=-lnsl -ldb -ldl -lm -lcrypt -lutil -lpthread -lc
  perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
  libc=/lib/libc-2.11.2.so, so=so, useshrplib=false, libperl=libperl.a
  gnulibc_version='2.11.2'
  Dynamic Linking​:
  dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
  cccdlflags='-fPIC', lddlflags='-shared -O2 -g -L/usr/local/lib -fstack-protector'

Characteristics of this binary (from libperl)​:
  Compile-time options​: HAS_TIMES MULTIPLICITY PERLIO_LAYERS
  PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT
  PERL_MALLOC_WRAP PERL_PRESERVE_IVUV PERL_USE_DEVEL
  USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS
  USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE
  USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_PERLIO
  USE_PERL_ATOF USE_REENTRANT_API
  Built under linux
  Compiled at Oct 16 2011 09​:39​:56
  @​INC​:
  /home/src/perl/repoperls/installed-perls/perl/v5.15.3-244-gaa33328/ba65/lib/site_perl/5.15.3/x86_64-linux-thread-multi
  /home/src/perl/repoperls/installed-perls/perl/v5.15.3-244-gaa33328/ba65/lib/site_perl/5.15.3
  /home/src/perl/repoperls/installed-perls/perl/v5.15.3-244-gaa33328/ba65/lib/5.15.3/x86_64-linux-thread-multi
  /home/src/perl/repoperls/installed-perls/perl/v5.15.3-244-gaa33328/ba65/lib/5.15.3
  .

--
andreas

@p5pRT
Copy link
Author

p5pRT commented Oct 16, 2011

From @cpansprout

On Sun Oct 16 00​:56​:56 2011, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

git bisect
----------
commit aa33328
Author​: Brian Fraser <fraserbn@​gmail.com>
Date​: Sat Jul 23 18​:48​:51 2011 -0300

util\.c for threads&#8203;: stashpv\_hvname\_match UTF8 cleanup\.

In the diff shown below, the null checks (stashpv && name) are removed.
I should have noticed that when I applied it, so it’s partly my fault.

Before I go and fix this, though, I suspect there is a bug elsewhere, as
PL_curstash is set to an undefined *scalar* at the time this is called.
(PL_curstash is passed into stashpv_hvname_match as the hv argument,
whence the name is extracted.)

- if (stashpv == name)
- return TRUE;
- if (stashpv && name)
- if (strEQ(stashpv, name))
- return TRUE;
+ if ( HvNAMEUTF8(hv) && !(CopSTASH_flags(c) & SVf_UTF8 ? 1 : 0) ) {
+ if (CopSTASH_flags(c) & SVf_UTF8) {
+ return (bytes_cmp_utf8(
+ (const U8*)stashpv, strlen(stashpv),
+ (const U8*)name, HEK_LEN(HvNAME_HEK(hv))) == 0);
+ } else {
+ return (bytes_cmp_utf8(
+ (const U8*)name, HEK_LEN(HvNAME_HEK(hv)),
+ (const U8*)stashpv, strlen(stashpv)) == 0);
+ }
+ }
+ else
+ return (stashpv == name
+ || strEQ(stashpv, name));

@p5pRT
Copy link
Author

p5pRT commented Oct 16, 2011

The RT System itself - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

p5pRT commented Oct 16, 2011

From @Hugmeir

On Sun, Oct 16, 2011 at 5​:56 AM, Andreas J. Koenig via RT <
perlbug-followup@​perl.org> wrote​:

# New Ticket Created by (Andreas J. Koenig)
# Please include the string​: [perl #101430]
# in the subject line of all future correspondence about this issue.
# <URL​: https://rt-archive.perl.org/perl5/Ticket/Display.html?id=101430 >

git bisect
----------
commit aa33328
Author​: Brian Fraser <fraserbn@​gmail.com>
Date​: Sat Jul 23 18​:48​:51 2011 -0300

util.c for threads​: stashpv_hvname_match UTF8 cleanup.

diagnostics
-----------
When run with a threaded perl, the test t/listgenerator.t of
ASG/List-Gen-0.973.tar.gz dumps core for all bleadperls >=
v5.15.3-244-gaa33328. The stacktrace looks like this​:
(gdb) bt
#0 0x00002b08212954ea in ?? () from /lib/libc.so.6
#1 0x00000000004807e4 in Perl_stashpv_hvname_match (my_perl=0x14f8010,
c=<value optimized out>, hv=0x16f53a8) at util.c​:5853
#2 0x00000000004d7ddf in S_doeval (my_perl=0x14f8010,
gimme=<value optimized out>, startop=0x0, outside=<value optimized out>,
seq=<value optimized out>) at pp_ctl.c​:3503
#3 0x00000000004d9c1e in Perl_pp_require (my_perl=0x14f8010) at
pp_ctl.c​:4102
#4 0x000000000049dd26 in Perl_runops_standard (my_perl=0x14f8010) at
run.c​:41
#5 0x00000000004344cc in Perl_call_sv (my_perl=<value optimized out>,
sv=0x16f53d8, flags=14) at perl.c​:2680
#6 0x000000000043499d in Perl_call_list (my_perl=<value optimized out>,
oldscope=<value optimized out>, paramList=<value optimized out>)
at perl.c​:4742
#7 0x000000000041e907 in S_process_special_blocks (my_perl=0x14f8010,
fullname=<value optimized out>, gv=0x16f5450, cv=0x16f53d8) at op.c​:6786
#8 0x000000000042ec7c in Perl_newATTRSUB (my_perl=0x14f8010,
floor=<value optimized out>, o=<value optimized out>,
proto=<value optimized out>, attrs=<value optimized out>,
block=<value optimized out>) at op.c​:6757
#9 0x000000000045de4b in Perl_yyparse (my_perl=0x14f8010,
gramtype=<value optimized out>) at perly.y​:317
#10 0x00000000004d7f6e in S_doeval (my_perl=0x14f8010,
gimme=<value optimized out>, startop=0x0, outside=<value optimized out>,
seq=<value optimized out>) at pp_ctl.c​:3534
#11 0x00000000004d9c1e in Perl_pp_require (my_perl=0x14f8010) at
pp_ctl.c​:4102
#12 0x000000000049dd26 in Perl_runops_standard (my_perl=0x14f8010) at
run.c​:41
#13 0x00000000004344cc in Perl_call_sv (my_perl=<value optimized out>,
sv=0x16c51d0, flags=14) at perl.c​:2680
#14 0x000000000043499d in Perl_call_list (my_perl=<value optimized out>,
oldscope=<value optimized out>, paramList=<value optimized out>)
at perl.c​:4742
#15 0x000000000041e907 in S_process_special_blocks (my_perl=0x14f8010,
fullname=<value optimized out>, gv=0x15196d8, cv=0x16c51d0) at op.c​:6786
#16 0x000000000042ec7c in Perl_newATTRSUB (my_perl=0x14f8010,
floor=<value optimized out>, o=<value optimized out>,
proto=<value optimized out>, attrs=<value optimized out>,
block=<value optimized out>) at op.c​:6757
#17 0x000000000042d869 in Perl_utilize (my_perl=0x14f8010,
aver=<value optimized out>, floor=<value optimized out>,
version=<value optimized out>, idop=0x16c36f0, arg=<value optimized
out>)
at op.c​:4633
#18 0x000000000045dd9a in Perl_yyparse (my_perl=0x14f8010,
gramtype=<value optimized out>) at perly.y​:361
#19 0x00000000004d7f6e in S_doeval (my_perl=0x14f8010,
gimme=<value optimized out>, startop=0x0, outside=<value optimized out>,
seq=<value optimized out>) at pp_ctl.c​:3534
#20 0x00000000004d8b3c in Perl_pp_entereval (my_perl=0x14f8010)
at pp_ctl.c​:4227
#21 0x000000000049dd26 in Perl_runops_standard (my_perl=0x14f8010) at
run.c​:41
#22 0x00000000004344cc in Perl_call_sv (my_perl=<value optimized out>,
sv=0x16ad138, flags=14) at perl.c​:2680
#23 0x000000000043499d in Perl_call_list (my_perl=<value optimized out>,
oldscope=<value optimized out>, paramList=<value optimized out>)
at perl.c​:4742
#24 0x000000000041e907 in S_process_special_blocks (my_perl=0x14f8010,
fullname=<value optimized out>, gv=0x15196d8, cv=0x16ad138) at op.c​:6786
#25 0x000000000042ec7c in Perl_newATTRSUB (my_perl=0x14f8010,
floor=<value optimized out>, o=<value optimized out>,
proto=<value optimized out>, attrs=<value optimized out>,
block=<value optimized out>) at op.c​:6757
#26 0x000000000045de4b in Perl_yyparse (my_perl=0x14f8010,
gramtype=<value optimized out>) at perly.y​:317
#27 0x000000000043665a in S_parse_body (my_perl=0x14f8010,
env=<value optimized out>, xsinit=<value optimized out>) at perl.c​:2221
#28 0x0000000000437439 in perl_parse (my_perl=<value optimized out>,
xsinit=<value optimized out>, argc=<value optimized out>,
argv=0x7fff0e742df8, env=<value optimized out>) at perl.c​:1628
#29 0x000000000041cd02 in main (argc=3, argv=0x7fff0e742df8,
env=0x7fff0e742e18) at perlmain.c​:118

perl -V
-------
Summary of my perl5 (revision 5 version 15 subversion 3) configuration​:
Commit id​: aa33328
Platform​:
osname=linux, osvers=2.6.32-5-amd64, archname=x86_64-linux-thread-multi
uname='linux k83 2.6.32-5-amd64 #1 smp mon oct 3 03​:59​:20 utc 2011
x86_64 gnulinux '

config_args='-Dprefix=/home/src/perl/repoperls/installed-perls/perl/v5.15.3-244-gaa33328/ba65
-Dinstallusrbinperl=n -Uversiononly -Dusedevel -des -Ui_db -Duseithreads
-Uuselongdouble -DDEBUGGING=-g'
hint=recommended, useposix=true, d_sigaction=define
useithreads=define, usemultiplicity=define
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=define, use64bitall=define, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler​:
cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe
-fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64',
optimize='-O2 -g',
cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe
-fstack-protector -I/usr/local/include'
ccversion='', gccversion='4.4.5', gccosandvers=''
intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries​:
ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
libpth=/usr/local/lib /lib/../lib /usr/lib/../lib /lib /usr/lib /lib64
/usr/lib64
libs=-lnsl -ldb -ldl -lm -lcrypt -lutil -lpthread -lc
perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
libc=/lib/libc-2.11.2.so, so=so, useshrplib=false, libperl=libperl.a
gnulibc_version='2.11.2'
Dynamic Linking​:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
cccdlflags='-fPIC', lddlflags='-shared -O2 -g -L/usr/local/lib
-fstack-protector'

Characteristics of this binary (from libperl)​:
Compile-time options​: HAS_TIMES MULTIPLICITY PERLIO_LAYERS
PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT
PERL_MALLOC_WRAP PERL_PRESERVE_IVUV PERL_USE_DEVEL
USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS
USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE
USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_PERLIO
USE_PERL_ATOF USE_REENTRANT_API
Built under linux
Compiled at Oct 16 2011 09​:39​:56
@​INC​:

/home/src/perl/repoperls/installed-perls/perl/v5.15.3-244-gaa33328/ba65/lib/site_perl/5.15.3/x86_64-linux-thread-multi

/home/src/perl/repoperls/installed-perls/perl/v5.15.3-244-gaa33328/ba65/lib/site_perl/5.15.3

/home/src/perl/repoperls/installed-perls/perl/v5.15.3-244-gaa33328/ba65/lib/5.15.3/x86_64-linux-thread-multi

/home/src/perl/repoperls/installed-perls/perl/v5.15.3-244-gaa33328/ba65/lib/5.15.3
.

--
andreas

Huh. This happens when either of the stash names are NULL -- But how can
that be?
Help getting a reduced test case would rock.

@p5pRT
Copy link
Author

p5pRT commented Oct 16, 2011

From @cpansprout

On Sun Oct 16 12​:49​:06 2011, sprout wrote​:

On Sun Oct 16 00​:56​:56 2011, andreas.koenig.7os6VVqR@​franz.ak.mind.de
wrote​:

git bisect
----------
commit aa33328
Author​: Brian Fraser <fraserbn@​gmail.com>
Date​: Sat Jul 23 18​:48​:51 2011 -0300

util\.c for threads&#8203;: stashpv\_hvname\_match UTF8 cleanup\.

In the diff shown below, the null checks (stashpv && name) are removed.
I should have noticed that when I applied it, so it’s partly my fault.

Before I go and fix this, though, I suspect there is a bug elsewhere, as
PL_curstash is set to an undefined *scalar* at the time this is called.

List​::Generator contains this code​:

package List​::Generator;
BEGIN {require List​::Gen}

List​::Gen does *List​::Generator​:: = *List​::Gen​::;

So when ‘require List​::Gen’ finishes, PL_curstash points to an SV that
has been freed and re-used. That explains why name can be null in
stashpv_hvname_match. But that’s a separate bug. stashpv_hvname_match
is an API function, so it should continue to check for nulls. I’ll have
it fixed soon....

@p5pRT
Copy link
Author

p5pRT commented Oct 16, 2011

From @cpansprout

On Sun Oct 16 13​:11​:35 2011, sprout wrote​:

On Sun Oct 16 12​:49​:06 2011, sprout wrote​:

On Sun Oct 16 00​:56​:56 2011, andreas.koenig.7os6VVqR@​franz.ak.mind.de
wrote​:

git bisect
----------
commit aa33328
Author​: Brian Fraser <fraserbn@​gmail.com>
Date​: Sat Jul 23 18​:48​:51 2011 -0300

util\.c for threads&#8203;: stashpv\_hvname\_match UTF8 cleanup\.

In the diff shown below, the null checks (stashpv && name) are removed.
I should have noticed that when I applied it, so it’s partly my fault.

Before I go and fix this, though, I suspect there is a bug elsewhere, as
PL_curstash is set to an undefined *scalar* at the time this is called.

List​::Generator contains this code​:

package List​::Generator;
BEGIN {require List​::Gen}

List​::Gen does *List​::Generator​:: = *List​::Gen​::;

So when ‘require List​::Gen’ finishes, PL_curstash points to an SV that
has been freed and re-used. That explains why name can be null in
stashpv_hvname_match. But that’s a separate bug. stashpv_hvname_match
is an API function, so it should continue to check for nulls. I’ll have
it fixed soon....

Now fixed with commit 6852b00.

@p5pRT
Copy link
Author

p5pRT commented Oct 16, 2011

@cpansprout - Status changed from 'open' to 'resolved'

@p5pRT p5pRT closed this as completed Oct 16, 2011
@p5pRT
Copy link
Author

p5pRT commented Oct 16, 2011

From @cpansprout

On Sun Oct 16 12​:51​:01 2011, Hugmeir wrote​:

Huh. This happens when either of the stash names are NULL -- But how
can
that be?
Help getting a reduced test case would rock.

See the other message I sent to this ticket.

But you can also blow away a stash’s name with undef %Foo​::. That’s by
design. It does lead to ‘fun’ in some cases, like __PACKAGE__ returning
two different values from the same package (which I consider a
__PACKAGE__ bug, rather than an undef bug; but probably not worth fixing).

@p5pRT
Copy link
Author

p5pRT commented Oct 22, 2011

From @cpansprout

On Sun Oct 16 13​:11​:35 2011, sprout wrote​:

So when ‘require List​::Gen’ finishes, PL_curstash points to an SV that
has been freed and re-used. That explains why name can be null in
stashpv_hvname_match. But that’s a separate bug.

That’s bug #101486.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant