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

S_gv_stashpvn_internal: Assertion `((svtype)((_gvgp)->sv_flags & 0xff)) == SVt_PVGV || ((svtype)((_gvgp)->sv_flags & 0xff)) == SVt_PVLV' failed (gv.c:1416) #14790

Closed
p5pRT opened this issue Jul 3, 2015 · 6 comments

Comments

@p5pRT
Copy link

p5pRT commented Jul 3, 2015

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

Searchable as RT125541$

@p5pRT
Copy link
Author

p5pRT commented Jul 3, 2015

From @geeknik

The attached script causes an assertion failure in Perl v5.23.0-69-gf907dd3. Does not crash or cause any errors in Perl 5.21.6-602-ge9d2bd8.

perl​: gv.c​:1416​: S_gv_stashpvn_internal​: Assertion `((svtype)((_gvgp)->sv_flags & 0xff)) == SVt_PVGV || ((svtype)((_gvgp)->sv_flags & 0xff)) == SVt_PVLV' failed.

Program received signal SIGABRT, Aborted.
0x00007ffff6d90165 in *__GI_raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c​:64
64 ../nptl/sysdeps/unix/sysv/linux/raise.c​: No such file or directory.
(gdb) bt
#0 0x00007ffff6d90165 in *__GI_raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c​:64
#1 0x00007ffff6d933e0 in *__GI_abort () at abort.c​:92
#2 0x00007ffff6d89311 in *__GI___assert_fail (
  assertion=0xeb4b30 "((svtype)((_gvgp)->sv_flags & 0xff)) == SVt_PVGV || ((svtype)((_gvgp)->sv_flags & 0xff)) == SVt_PVLV", file=<optimized out>, line=1416, function=0xef2580 "S_gv_stashpvn_internal")
  at assert.c​:81
#3 0x0000000000562d15 in Perl_gv_stashsv () at gv.c​:1416
#4 0x0000000000907453 in Perl_pp_method_redir () at pp_hot.c​:3583
#5 0x00000000007cdfcf in Perl_runops_debug () at dump.c​:2224
#6 0x000000000053c819 in perl_run ()
#7 0x000000000042af18 in main () at perlmain.c​:116
(gdb) i r
rax 0x0 0
rbx 0x7fffffffe624 140737488348708
rcx 0xffffffffffffffff -1
rdx 0x6 6
rsi 0xeead 61101
rdi 0xeead 61101
rbp 0x7ffff6ea9c67 0x7ffff6ea9c67
rsp 0x7fffffffde58 0x7fffffffde58
r8 0x7ffff7fdc700 140737353991936
r9 0x564c56505f745653 6218440088690644563
r10 0x8 8
r11 0x202 514
r12 0xeb4b30 15420208
r13 0xef2580 15672704
r14 0x7ffff6ea9c67 140737335958631
r15 0x588 1416
rip 0x7ffff6d90165 0x7ffff6d90165 <*__GI_raise+53>
eflags 0x202 [ IF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0

@p5pRT
Copy link
Author

p5pRT commented Jul 3, 2015

From @geeknik

test28-min

@p5pRT
Copy link
Author

p5pRT commented Jul 7, 2015

From @cpansprout

On Fri Jul 03 10​:03​:56 2015, brian.carpenter@​gmail.com wrote​:

The attached script causes an assertion failure in Perl v5.23.0-69-
gf907dd3. Does not crash or cause any errors in Perl 5.21.6-602-
ge9d2bd8.

When I try bisecting, it crashes for all perls I can compile.

Here is my one-liner version​:

$ ./miniperl -e '%​::=(); J->${\"​::"}'

gv_fetchpvn_flags assumes that $​::{"main​::"} holds a GV. If it does not, things go awry. %​::=() is what wipes $​::{"main​::"}. So the solution would be to restore *main​:: somewhere, but I am not sure which would be the best place to do it.

--

Father Chrysostomos

@p5pRT
Copy link
Author

p5pRT commented Jul 7, 2015

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

@p5pRT
Copy link
Author

p5pRT commented Jul 24, 2015

From @cpansprout

Fixed in d2fcb1d.

--

Father Chrysostomos

@p5pRT p5pRT closed this as completed Jul 24, 2015
@p5pRT
Copy link
Author

p5pRT commented Jul 24, 2015

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

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

No branches or pull requests

1 participant