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