[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

efl FTBFS on mipsel (SIGBUS-related testsuite failure)


I've been trying to debug a testsuite issue on mipsel that causes an
FTBFS for the `efl` package
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?


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

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}}

Reply to: