Bug#869122: perl: 5.26 FTBFS on hppa: broken miniperl?
John David Anglin
dave.anglin at bell.net
Fri Jul 21 02:23:39 UTC 2017
On 2017-07-20, at 1:45 PM, Niko Tyni wrote:
> so it looks like something's seriously wrong.
It looks like miniperl branches to non existent code:
Jul 20 20:18:48 mx3210 kernel: do_page_fault() command='miniperl' type=6 address=0xbf600703 in libcrypt-2.24.so[f77f9000+9000]
Jul 20 20:18:48 mx3210 kernel: trap #6: Instruction TLB miss fault, vm_start = 0x001e3000, vm_end = 0x005b4000
0x0002eac8 <Perl_rpeep+2896>: b,l 0x1a8d0 <Perl_custom_op_get_field>,rp
0x0002eacc <Perl_rpeep+2900>: copy r4,r26
0x0002ead0 <Perl_rpeep+2904>: movb,= ret0,r22,0x2e284 <Perl_rpeep+780>
0x0002ead4 <Perl_rpeep+2908>: copy r3,r25
0x0002ead8 <Perl_rpeep+2912>: copy r15,r24
0x0002eadc <Perl_rpeep+2916>: copy r4,r26
0x0002eae0 <Perl_rpeep+2920>: b,l 0x3b218,r31
0x0002eae4 <Perl_rpeep+2924>: copy r31,rp
The branch seems from 2eae0 which might be here:
(gdb) break *0x0002eae0
Breakpoint 1 at 0x2eae0: file op.c, line 14791.
0x0002eae4 14791 cpeep(aTHX_ o, oldop);
The call at 2eae0 is an indirect call using $$dyncall. Register $r22 is supposed to point either to
a function descriptor or in rare cases directly to the callee. The value in $r22 is 0xbf600701. It is neither
a valid function pointer or function address.
There are a couple of warnings in the build that might be serious:
hppa-linux-gnu-gcc -c -DPERL_CORE -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -std=c89 -O2 -g -Wall -Werror=declaration-after-statement -Wextra -Wc++-compat -Wwrite-strings gv.c
In file included from perl.h:5644:0,
from gv.c:36:
gv.c: In function 'S_gv_magicalize':
gv.c:1999:46: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
sv_magic(MUTABLE_SV(av), (SV*)uv, PERL_MAGIC_regdata, NULL, 0);
^
embed.h:645:51: note: in definition of macro 'sv_magic'
#define sv_magic(a,b,c,d,e) Perl_sv_magic(aTHX_ a,b,c,d,e)
^
gv.c:2167:42: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
sv_magic(MUTABLE_SV(av), (SV*)uv, PERL_MAGIC_regdata, NULL, 0);
^
embed.h:645:51: note: in definition of macro 'sv_magic'
#define sv_magic(a,b,c,d,e) Perl_sv_magic(aTHX_ a,b,c,d,e)
and
hppa-linux-gnu-gcc -c -DPERL_CORE -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -Wformat -Werror=format-security -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -std=c89 -O2 -g -Wall -Werror=declaration-after-statement -Wextra -Wc++-compat -Wwrite-strings mg.c
mg.c: In function 'Perl_magic_regdata_cnt':
mg.c:641:20: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
UV uv= (UV)mg->mg_obj;
^
mg.c: In function 'Perl_magic_regdatum_get':
mg.c:677:26: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
const UV uv= (UV)mg->mg_obj;
Pointers are 32 bits. In the first warning, it's argument `b' that's the problem.
That's all I have time for now,
Dave
--
John David Anglin dave.anglin at bell.net
More information about the Perl-maintainers
mailing list