Since the build log says "illegal instruction", what instruction is it
trying to execute? Since there's so much variation in supported ARM
instructions, maybe Racket's JIT is trying to use one not supported by
the machine. Or maybe execution has just jumped to a bad place, such as
the middle of an instruction.

In gdb, you should be able to use `disassemble` in the vicinity of the
address where Racket crashes (like 0xb6ea3254), but you may need to use

 set arm fallback-mode thumb

or (less likely)

 set arm fallback-mode arm

to get sensible results.


If execution appears to have jumped to a bad place, it may be worth
changing line 149 of "jit.h" to comment out `#define NEED_LONG_JUMPS`.
If that changes anything, then maybe the JIT is not switching property
between short- and long-jump mode.

Another possible reason from jumping to a bad place is mismanaging ARM
vs. Thumb function pointers. Disabling Thumb support by changing
"racket/src/lightning/arm/asm.h" could be a way to check that.


At Wed, 15 Jan 2020 13:43:19 -0400, David Bremner wrote:
> 
> 
> I get segfault from racketcgc trying to run compile-startup.rkt
> 
> https://buildd.debian.org/status/fetch.php?pkg=racket&arch=armhf&ver=7.5%2Bdfsg
> 2-1&stamp=1577755807&raw=0
> 
> I can duplicate the segfault in GDB, but the backtrace looks corrupted
> at first glance [1].
> 
> I'm happy to gather more data if someone has an idea what to try.
> 
> We're tracking this in Debian at [0]
> 
> [0]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=948789
> [1]: output from gdb
> 
> #0  0xb6ea3254 in malloc_stats () from /lib/arm-linux-gnueabihf/libc.so.6
> #1  <function called from gdb>
> #2  hamt_make2 (kind=-1368709120, shift=747399, 
>     shift@entry=<error reading variable: DWARF-2 expression error: Loop 
> detected (257).>, code1=3204429948, 
>     key1=0x6, val1=val1@entry=0xb5d15ae8, code2=code2@entry=3204429948, 
> key2=key2@entry=0xb6916410, 
>     val2=val2@entry=0xa) at ./src/racket/src/hash.c:2594
> #3  0x0044c722 in hamt_make2 (kind=<optimized out>, 
>     shift=<error reading variable: DWARF-2 expression error: Loop detected 
> (257).>, code1=<optimized out>, 
>     key1=<optimized out>, val1=val1@entry=0xb5d15ae8, 
> code2=code2@entry=3204429948, key2=key2@entry=0xb6916410, 
>     val2=val2@entry=0xa) at ./src/racket/src/hash.c:2599
> #4  0x0044c722 in hamt_make2 (kind=<optimized out>, 
>     shift=<error reading variable: DWARF-2 expression error: Loop detected 
> (257).>, code1=<optimized out>, 
>     key1=<optimized out>, val1=val1@entry=0xb5d15ae8, 
> code2=code2@entry=3204429948, key2=key2@entry=0xb6916410, 
>     val2=val2@entry=0xa) at ./src/racket/src/hash.c:2599
> #5  0x0044c722 in hamt_make2 (kind=<optimized out>, 
>     shift=<error reading variable: DWARF-2 expression error: Loop detected 
> (257).>, code1=<optimized out>, 
>     key1=<optimized out>, val1=val1@entry=0xb5d15ae8, 
> code2=code2@entry=3204429948, key2=key2@entry=0xb6916410, 
>     val2=val2@entry=0xa) at ./src/racket/src/hash.c:2599
> #6  0x0044c722 in hamt_make2 (kind=<optimized out>, 
>     shift=<error reading variable: DWARF-2 expression error: Loop detected 
> (257).>, code1=<optimized out>, 
>     key1=<optimized out>, val1=val1@entry=0xb5d15ae8, 
> code2=code2@entry=3204429948, key2=key2@entry=0xb6916410, 
>     val2=val2@entry=0xa) at ./src/racket/src/hash.c:2599
> #7  0x0044c722 in hamt_make2 (kind=<optimized out>, 
>     shift=<error reading variable: DWARF-2 expression error: Loop detected 
> (257).>, code1=<optimized out>, 
>     key1=<optimized out>, val1=val1@entry=0xb5d15ae8, 
> code2=code2@entry=3204429948, key2=key2@entry=0xb6916410, 
>     val2=val2@entry=0xa) at ./src/racket/src/hash.c:2599
> #8  0x0044c722 in hamt_make2 (kind=<optimized out>, 
>     shift=<error reading variable: DWARF-2 expression error: Loop detected 
> (257).>, code1=<optimized out>, 
>     key1=<optimized out>, val1=val1@entry=0xb5d15ae8, 
> code2=code2@entry=3204429948, key2=key2@entry=0xb6916410, 
>     val2=val2@entry=0xa) at ./src/racket/src/hash.c:2599
> #9  0x0044c722 in hamt_make2 (kind=<optimized out>, 
>     shift=<error reading variable: DWARF-2 expression error: Loop detected 
> (257).>, code1=<optimized out>, 
>     key1=<optimized out>, val1=val1@entry=0xb5d15ae8, 
> code2=code2@entry=3204429948, key2=key2@entry=0xb6916410, 
>     val2=val2@entry=0xa) at ./src/racket/src/hash.c:2599
> #10 0x0044c722 in hamt_make2 (kind=<optimized out>, 
>     shift=<error reading variable: DWARF-2 expression error: Loop detected 
> (257).>, code1=<optimized out>, 
>     key1=<optimized out>, val1=val1@entry=0xb5d15ae8, 
> code2=code2@entry=3204429948, key2=key2@entry=0xb6916410, 
>     val2=val2@entry=0xa) at ./src/racket/src/hash.c:2599
> #11 0x0044c722 in hamt_make2 (kind=<optimized out>, 
>     shift=<error reading variable: DWARF-2 expression error: Loop detected 
> (257).>, code1=<optimized out>, 
>     key1=<optimized out>, val1=val1@entry=0xb5d15ae8, 
> code2=code2@entry=3204429948, key2=key2@entry=0xb6916410, 
>     val2=val2@entry=0xa) at ./src/racket/src/hash.c:2599
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Racket Developers" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to racket-dev+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/racket-dev/87blr4zkco.fsf%40tethera.net.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-dev/20200115194306.D7E4F6501A2%40mail-svr1.cs.utah.edu.

Reply via email to