Package: swi-prolog-nox
Version: 5.10.4-1
Severity: serious
Justification: fails to build from source
The current version of swi-prolog fails to build on mipsel with bus
error. I tried to investigate using qemu. The error happens in function
put_double(). gdb shows that current instruction is
sdc1 $f20,4(v1)
According to MIPS instruction set manual it is "store doubleword from
coprocessor". The destination address (here, 4+v1) should be "naturally
aligned" (I guess in this case alignment should be 8). But register dump
shows that v1 contains 0x00428df8 that combined with displacement 4
gives wrong alignment.
This is all that I found for now. GDB log with additional information is
attached.
-- System Information:
Debian Release: wheezy/sid
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.39-2-amd64 (SMP w/2 CPU cores)
Locale: LANG=uk_UA.UTF-8, LC_CTYPE=uk_UA.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages swi-prolog-nox depends on:
ii libc6 2.13-10 Embedded GNU C Library: Shared lib
ii libgmp10 2:5.0.1+dfsg-7 Multiprecision arithmetic library
ii libgmp3-dev 2:5.0.1+dfsg-7 Multiprecision arithmetic library
ii libncurses5 5.9-1 shared libraries for terminal hand
ii libreadline-dev 6.2-2 GNU readline and history libraries
ii libreadline6 6.2-2 GNU readline and history libraries
swi-prolog-nox recommends no packages.
Versions of packages swi-prolog-nox suggests:
pn prolog-el <none> (no description available)
pn swi-prolog-doc <none> (no description available)
-- no debconf information
-- debsums errors found:
debsums: changed file /usr/lib/swi-prolog/library/INDEX.pl (from swi-prolog-nox
package)
#0 0x2aaed2b0 in put_double () from ../lib/mipsel/libswipl.so.5.10.4
#1 0x2ab83798 in put_number () from ../lib/mipsel/libswipl.so.5.10.4
#2 0x2ab83e50 in PL_unify_number () from ../lib/mipsel/libswipl.so.5.10.4
#3 0x2ab3cc38 in pl_statistics_ld () from ../lib/mipsel/libswipl.so.5.10.4
#4 0x2ab3d4f0 in pl_statistics2_va () from ../lib/mipsel/libswipl.so.5.10.4
#5 0x2ab00194 in PL_next_solution () from ../lib/mipsel/libswipl.so.5.10.4
#6 0x2ab3d918 in callProlog () from ../lib/mipsel/libswipl.so.5.10.4
#7 0x2ab78740 in pl_with_mutex () from ../lib/mipsel/libswipl.so.5.10.4
#8 0x2ab000cc in PL_next_solution () from ../lib/mipsel/libswipl.so.5.10.4
#9 0x2ab3d918 in callProlog () from ../lib/mipsel/libswipl.so.5.10.4
#10 0x2ab78740 in pl_with_mutex () from ../lib/mipsel/libswipl.so.5.10.4
#11 0x2ab000cc in PL_next_solution () from ../lib/mipsel/libswipl.so.5.10.4
#12 0x2ab3d918 in callProlog () from ../lib/mipsel/libswipl.so.5.10.4
#13 0x2ab66a54 in compileFile () from ../lib/mipsel/libswipl.so.5.10.4
#14 0x2ab69d2c in compileFileList () from ../lib/mipsel/libswipl.so.5.10.4
#15 0x2ab8184c in PL_initialise () from ../lib/mipsel/libswipl.so.5.10.4
#16 0x0040083c in main ()
Undefined command: "disasm". Try "help".
Dump of assembler code for function put_double:
0x2aaed218 <+0>: lui gp,0x10
0x2aaed21c <+4>: addiu gp,gp,1624
0x2aaed220 <+8>: addu gp,gp,t9
0x2aaed224 <+12>: addiu sp,sp,-48
0x2aaed228 <+16>: sw s1,32(sp)
0x2aaed22c <+20>: sdc1 $f20,40(sp)
0x2aaed230 <+24>: lw s1,68(sp)
0x2aaed234 <+28>: mtc1 a2,$f20
0x2aaed238 <+32>: lw a1,64(sp)
0x2aaed23c <+36>: sw s0,28(sp)
0x2aaed240 <+40>: sw gp,16(sp)
0x2aaed244 <+44>: sw ra,36(sp)
0x2aaed248 <+48>: li v0,4
0x2aaed24c <+52>: move s0,a0
0x2aaed250 <+56>: mtc1 a3,$f21
0x2aaed254 <+60>: beq a1,v0,0x2aaed288 <put_double+112>
0x2aaed258 <+64>: lw v1,88(s1)
0x2aaed25c <+68>: lw a0,92(s1)
0x2aaed260 <+72>: addiu v0,v1,44
0x2aaed264 <+76>: sltu v0,a0,v0
0x2aaed268 <+80>: bnez v0,0x2aaed2d0 <put_double+184>
0x2aaed26c <+84>: lw t9,-32680(gp)
0x2aaed270 <+88>: lw v0,144(s1)
0x2aaed274 <+92>: lw a0,148(s1)
0x2aaed278 <+96>: addiu v0,v0,24
0x2aaed27c <+100>: sltu v0,a0,v0
0x2aaed280 <+104>: bnez v0,0x2aaed2d0 <put_double+184>
0x2aaed284 <+108>: move at,at
0x2aaed288 <+112>: lw a1,284(s1)
0x2aaed28c <+116>: li a0,1042
0x2aaed290 <+120>: subu a1,v1,a1
0x2aaed294 <+124>: sll a1,a1,0x5
0x2aaed298 <+128>: addiu v0,v1,16
0x2aaed29c <+132>: ori a1,a1,0xa
0x2aaed2a0 <+136>: sw v0,88(s1)
0x2aaed2a4 <+140>: sw a1,0(s0)
0x2aaed2a8 <+144>: li v0,1
0x2aaed2ac <+148>: sw a0,0(v1)
=> 0x2aaed2b0 <+152>: sdc1 $f20,4(v1)
0x2aaed2b4 <+156>: sw a0,12(v1)
0x2aaed2b8 <+160>: lw ra,36(sp)
0x2aaed2bc <+164>: lw s1,32(sp)
0x2aaed2c0 <+168>: lw s0,28(sp)
0x2aaed2c4 <+172>: ldc1 $f20,40(sp)
0x2aaed2c8 <+176>: jr ra
0x2aaed2cc <+180>: addiu sp,sp,48
0x2aaed2d0 <+184>: jalr t9
0x2aaed2d4 <+188>: li a0,4
0x2aaed2d8 <+192>: li v1,1
0x2aaed2dc <+196>: bne v0,v1,0x2aaed2bc <put_double+164>
0x2aaed2e0 <+200>: lw ra,36(sp)
0x2aaed2e4 <+204>: b 0x2aaed288 <put_double+112>
0x2aaed2e8 <+208>: lw v1,88(s1)
End of assembler dump.
Undefined show command: "all-registers". Try "help show".
zero at v0 v1 a0 a1 a2 a3
R0 00000000 3000a401 00000001 00428df8 00000412 0001538a 66666666 3fe66666
t0 t1 t2 t3 t4 t5 t6 t7
R8 00000000 00000000 00000000 00000000 00000001 004c4b40 6671c96e 00000000
s0 s1 s2 s3 s4 s5 s6 s7
R16 7fafe794 2abe8e38 00000001 7fafe794 00000000 2aafc000 2aaec000 2aaec000
t8 t9 k0 k1 gp sp s8 ra
R24 00000000 2ab2a068 2abe8e38 00000000 2abed870 7fafe708 2aafc000 2ab83798
status lo hi badvaddr cause pc
0000a413 7e88ea52 000005cf 00428dfc 10800014 2aaed2b0
f0: 0x66666666 flt: 2.72008302e+23 dbl: 0.69999999999999996
f1: 0x3fe66666 flt: 1.79999995
f2: 0x00000046 flt: 9.80908925e-44 dbl: 0.59999990463257613
f3: 0x3fe33333 flt: 1.77499998
f4: 0x4e23ebae flt: 687532928 dbl: -nan
f5: 0xffffffff flt: -nan
f6: 0xffffffff flt: -nan dbl: -nan
f7: 0xffffffff flt: -nan
f8: 0xffffffff flt: -nan dbl: -nan
f9: 0xffffffff flt: -nan
f10: 0xffffffff flt: -nan dbl: -nan
f11: 0xffffffff flt: -nan
f12: 0x66666666 flt: 2.72008302e+23 dbl: 0.69999999999999996
f13: 0x3fe66666 flt: 1.79999995
f14: 0xffffffff flt: -nan dbl: -nan
f15: 0xffffffff flt: -nan
f16: 0xffffffff flt: -nan dbl: -nan
f17: 0xffffffff flt: -nan
f18: 0xffffffff flt: -nan dbl: -nan
f19: 0xffffffff flt: -nan
f20: 0x66666666 flt: 2.72008302e+23 dbl: 0.69999999999999996
f21: 0x3fe66666 flt: 1.79999995
f22: 0xffffffff flt: -nan dbl: -nan
f23: 0xffffffff flt: -nan
f24: 0xffffffff flt: -nan dbl: -nan
f25: 0xffffffff flt: -nan
f26: 0xffffffff flt: -nan dbl: -nan
f27: 0xffffffff flt: -nan
f28: 0xffffffff flt: -nan dbl: -nan
f29: 0xffffffff flt: -nan
f30: 0xffffffff flt: -nan dbl: -nan
f31: 0xffffffff flt: -nan
fcsr fir restart
00001004 00000000 00000000
quit
A debugging session is active.
Inferior 1 [process 2113] will be killed.
Quit anyway? (y or n)