efl FTBFS on mipsel (SIGBUS-related testsuite failure)
Hi,
I've been trying to debug a testsuite issue on mipsel that causes an
FTBFS for the `efl` package
(https://buildd.debian.org/status/fetch.php?pkg=efl&arch=mipsel&ver=1.8.3-1&stamp=1389324403),
but I can't seem to find the actual cause of the issue.
Essentially what the test does is mmap() a file and access it. The
code installs a signal handler to catch a possible SIGBUS when
accessing the mmap'ed region and handle it when it happens. Running a
simple testcase in GDB (see attached log file) shows that the program
generates a SIGBUS at a valid address, but it looks like once the
signal handler is called, siginfo->si_addr is 0 and I don't really
understand why.
Does anyone know what could be happening and/or what I can do to try
and pinpoint the issue?
Thanks,
--
Albin
Program received signal SIGBUS, Bus error.
eet_dictionary_string_get_double (ed=0x45de80, idx=<optimized out>, result=0x468bec) at lib/eet/eet_dictionary.c:460
460 *result = convert->d;
(gdb) info registers
zero at v0 v1 a0 a1 a2 a3
R0 00000000 1000a4e1 00000004 80100000 0045de90 00000000 00000000 7efefeff
t0 t1 t2 t3 t4 t5 t6 t7
R8 77fe32e4 0fffffff 77b9f730 f0000000 00000000 00000000 00000004 7ffe9ba8
s0 s1 s2 s3 s4 s5 s6 s7
R16 0045de90 00468bec 00469040 00000000 00000168 00000010 769f4c68 004380c8
t8 t9 k0 k1 gp sp s8 ra
R24 00000067 77e8d630 769fa930 00000000 77a4f290 7ffe9d50 7ffe9f48 77a20788
status lo hi badvaddr cause pc
0000a4f3 00001cb2 000001a2 00468bec 10000014 77a29214
fcsr fir restart
00800004 00000501 00000000
(gdb) disass 0x77a29214,+1
Dump of assembler code from 0x77a29214 to 0x77a29215:
=> 0x77a29214 <eet_dictionary_string_get_double+204>: sdc1 $f0,0(s1)
End of assembler dump.
(gdb) p result
$1 = (double *) 0x468bec
(gdb) b _eina_mmap_safe_sigbus
Breakpoint 1 at 0x77ed1480: file lib/eina/eina_mmap.c, line 84.
(gdb) c
Continuing.
Breakpoint 1, _eina_mmap_safe_sigbus (sig=<optimized out>, siginfo=<optimized out>, ptr=<optimized out>) at lib/eina/eina_mmap.c:84
84 {
(gdb) s
[Thread 0x769f34a0 (LWP 19151) exited]
89 perrno = errno;
(gdb) p siginfo->_sifields
$3 = {_pad = {0 <repeats 29 times>}, _kill = {si_pid = 0, si_uid = 0}, _timer = {si_tid = 0, si_overrun = 0, si_sigval = {sival_int = 0, sival_ptr = 0x0}}, _rt = {si_pid = 0, si_uid = 0, si_sigval = {sival_int = 0, sival_ptr = 0x0}}, _sigchld = {si_pid = 0,
si_uid = 0, si_status = 0, si_utime = 0, si_stime = 0}, _sigfault = {si_addr = 0x0}, _sigpoll = {si_band = 0, si_fd = 0}}
(gdb)
Reply to: