Random SIGILL / SIGSEGV on ARMv7 while debugging ?

Antoine Tremblay <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.