On Sat, 25 Aug 2012, Matthew Flatt wrote:
At Sat, 25 Aug 2012 20:04:45 +0100 (BST), Jan Wedekind wrote:
I tried to debug
However then the
program reports the following segmentation fault instead:

     Program received signal SIGSEGV, Segmentation fault.
     0x00282540 in scheme_gmp_tls_unload (s=0x4031cedc, data=0x0) at
./gmp/gmp.c:5813
     5813      s[0] = 0;
     (gdb) l
     5808    void scheme_gmp_tls_unload(intptr_t *s, void *data)
[...]

According to [2] this is a GC write barrier and one needs to ignore
semgentation faults as follows

     (gdb) handle SIGSEGV nostop noprint

Yes.

But in that case it is not possible to debug the initial segmentation fault
though.

Does it work to set a breakpoint on abort()?

(gdb) br abort


Thanks. That seems to ignore the GC write barrier related signals. Unfortunately there is no debug information for the stack frame (0xffff050c) of the current crash:

jan@wedemob:~$ ~/android-ndk-r8b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gdb GNU gdb (GDB) 7.3.1-gg2
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=x86_64-linux-gnu --target=arm-linux-android".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
(gdb) target remote 192.168.0.3:1234
Remote debugging using 192.168.0.3:1234
0xb0001000 in ?? ()
(gdb) file /home/jan/build/cross/racket-5.3.0/src/racket/racket3m A program is being debugged already.
Are you sure you want to change the file? (y or n) y
Reading symbols from 
/home/jan/build/cross/racket-5.3.0/src/racket/racket3m...done.
(gdb) cont
Continuing.
Cannot access memory at address 0x0

Program received signal SIGSEGV, Segmentation fault.
0x00282540 in scheme_gmp_tls_unload (s=0x4031cedc, data=0x0) at ./gmp/gmp.c:5813
5813      s[0] = 0;
(gdb) up
#1  0x0024b390 in done_with_GC () at xsrc/thread.c:8739
8739 scheme_gmp_tls_unload (scheme_current_thread -> gmp_tls , scheme_current_thread -> gmp_tls_data ) ; (gdb) handle SIGSEGV nostop noprint
Signal        Stop      Print   Pass to program Description
SIGSEGV       No        No      Yes             Segmentation fault
(gdb) br abort
Breakpoint 1 at 0x22658
(gdb) cont
Continuing.

Breakpoint 1, 0x00022658 in abort ()
(gdb) up
#1  0x0028ce30 in fault_handler (sn=11, si=0x3437a8, ctx=0x343828) at 
./sighand.c:99
99          abort();
(gdb) #2 0xffff050c in ?? () (gdb) #3 0xffff050c in ?? () (gdb) Initial frame selected; you cannot go up.
(gdb) cont
Continuing.

Breakpoint 1, 0x00022658 in abort ()
(gdb) up
#1  0x0028ce30 in fault_handler (sn=11, si=0x3433f0, ctx=0x343470) at 
./sighand.c:99
99          abort();
(gdb) #2 0xffff050c in ?? () (gdb) #3 0xffff050c in ?? () (gdb) Initial frame selected; you cannot go up.
(gdb) cont
Continuing.

Breakpoint 1, 0x00022658 in abort ()
(gdb) up
#1  0x0028ce30 in fault_handler (sn=11, si=0x343038, ctx=0x3430b8) at 
./sighand.c:99
99          abort();
(gdb) #2 0xffff050c in ?? () (gdb) #3 0xffff050c in ?? () (gdb) Initial frame selected; you cannot go up.
(gdb)

_________________________
 Racket Developers list:
 http://lists.racket-lang.org/dev

Reply via email to