Random SIGILL / SIGSEGV on ARMv7 while debugging ?

Antoine Tremblay antoine.tremblay@ericsson.com
Thu Nov 19 18:22:00 GMT 2015


Hi,
   I've been running the testsuite on a Odroid XU4 and I get random 
SIGILL / SIGSEGV signals while running the testsuite.

  It happens around 30% of the time on the same command.

  I can get the following log for example :

(gdb) spawn ../gdbserver/gdbserver --once :2346 
/home/hexa/src/binutils-gdb/build-arm/gdb/testsuite/gdb.trace/change-loc
Process 
/home/hexa/src/binutils-gdb/build-arm/gdb/testsuite/gdb.trace/change-loc 
created; pid = 1326
Listening on port 2346
target remote localhost:2346
Remote debugging using localhost:2346
Reading /lib/ld-linux-armhf.so.3 from remote target...
warning: File transfers from remote targets can be slow. Use "set 
sysroot" to access files locally instead.
Reading /lib/ld-linux-armhf.so.3 from remote target...
Reading symbols from target:/lib/ld-linux-armhf.so.3...Reading 
/lib/ld-2.21.so from remote target...
Reading /lib/.debug/ld-2.21.so from remote target...
(no debugging symbols found)...done.
0xb6fd7a40 in ?? () from target:/lib/ld-linux-armhf.so.3
(gdb) continue
Continuing.
Reading 
/home/hexa/src/binutils-gdb/build-arm/gdb/testsuite/gdb.trace/change-loc-1.sl 
from remote target...
Reading /lib/arm-linux-gnueabihf/libdl.so.2 from remote target...
Reading /lib/arm-linux-gnueabihf/libm.so.6 from remote target...
Reading /lib/arm-linux-gnueabihf/libc.so.6 from remote target...
Reading /lib/arm-linux-gnueabihf/libdl-2.21.so from remote target...
Reading /lib/arm-linux-gnueabihf/.debug/libdl-2.21.so from remote target...
Reading /lib/arm-linux-gnueabihf/libm-2.21.so from remote target...
Reading /lib/arm-linux-gnueabihf/.debug/libm-2.21.so from remote target...
Reading /lib/arm-linux-gnueabihf/libc-2.21.so from remote target...
Reading /lib/arm-linux-gnueabihf/.debug/libc-2.21.so from remote target...

Program received signal SIGILL, Illegal instruction.
0xb6fd99e2 in ?? () from target:/lib/ld-linux-armhf.so.3
(gdb) FAIL: gdb.trace/change-loc.exp: Can't run to main to check for 
trace support

I'm able to reproduce this also with GDB itself using a small program 
like so :

int
func1 (int b)
{
   return b + 2;
}

int
main ()
{
   int c = 1;
   while (c)
     c = func1 (2);
   return c;
}

and running gdb with that script :

set pagination off
start
while 1
   step
   end


I've tested this on kernel 3.10 and 4.2, same results, 4.2 seems a bit 
worse...

I've also tested on a Raspberry Pi2 with kernel 3.18.0 and I can't 
reproduce it.

Has anybody else seen this ?


Regards.
Antoine Tremblay



More information about the Gdb mailing list