Closed
Description
Hi!
Perl 5.32 has introduced a regression which results in miniperl
segfaulting during build.
The backtrace with gdb
looks like this:
root@pacman:/srv/perl2/perl-5.32.0~rc1/build-static# gdb --args ./miniperl -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl. Please run make mint/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl. Please run make mininiperl. Please run make minitminiperl. Please run make minitest; exit 1'
GNU gdb (Debian 9.2-1) 9.2
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "m68k-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./miniperl...
(gdb) r
Starting program: /srv/perl2/perl-5.32.0~rc1/build-static/miniperl -w -Ilib -Idist/Exporter/lib -MExporter -e \<\?\>
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/m68k-linux-gnu/libthread_db.so.1".
Program received signal SIGSEGV, Segmentation fault.
S_link_freed_op (o=0x803120aa, slab=<optimized out>, slab=<optimized out>,
my_perl=0x8030a190) at op.c:269
269 if (!slab->opslab_freed) {
(gdb) bt
#0 S_link_freed_op (o=0x803120aa, slab=<optimized out>, slab=<optimized out>,
my_perl=0x8030a190) at op.c:269
#1 0x8000901e in Perl_Slab_Free (op=0x80312136, my_perl=0x8030a190)
at op.c:505
#2 Perl_Slab_Free (my_perl=0x8030a190, op=0x803120aa) at op.c:484
#3 0x8000fae6 in S_op_destroy (o=<optimized out>, my_perl=<optimized out>)
at op.c:6416
#4 Perl_op_append_list (type=<optimized out>, last=<optimized out>,
first=0x80312136, my_perl=<optimized out>) at op.c:6416
#5 Perl_op_append_list (my_perl=<optimized out>, type=<optimized out>,
first=<optimized out>, last=<optimized out>) at op.c:6397
#6 0x800625c8 in Perl_yyparse (my_perl=0x8030a190, gramtype=258)
at perly.y:239
#7 0x800321fe in S_parse_body (xsinit=0x801885f8 <xs_init>, env=0x0,
my_perl=0x8030a190) at perl.c:2576
#8 perl_parse (my_perl=0x8030a190, xsinit=0x801885f8 <xs_init>, argc=7,
argv=0xeffffc14, env=0x0) at perl.c:1871
#9 0x800050ae in main (argc=<optimized out>, argv=<optimized out>,
env=<optimized out>) at miniperlmain.c:132
(gdb)
A wild guess is that might be an alignment issue as the natural alignment for m68k is 16 bits, not 32 bits.