我在Android x86上的Boehm上发生了一次奇怪的崩溃(但arm运行得很好),它正在崩溃:
deferred = *(word *)limit;通过以下方式:
LogCat: I/DEBUG ( 6453):信号11 (SIGSEGV),代码1 (SEGV_MAPERR),故障地址0xa31f8
它总是在相同的地址(0xa31f8)上失败;现在,这可能是我做错的事情。这是一种自定义语言,我只是链接到libc.so。是什么导致了这一切?
日志:
LogCat: I/BDWGC ( 7930):在分配0字节后将堆增长到64 KiB LogCat: D/BDWGC ( 7930):创建线程0xb7795160 LogCat: D/BDWGC ( 7930):从0xb7795160停止世界 LogCat: D/BDWGC ( 7930):世界从0xb7795160停止 LogCat: D/BDWGC ( 7930):从线程0xb7795160推进堆栈 LogCat: D/BDWGC ( 7930):线程0xb7795160的堆栈=[0xbf90be1c,0xbf90f000] LogCat: F/libc ( 7930):致命信号11 (SIGSEGV),代码1,故障地址0xa31f8
回溯:
(gdb) bt # 0xa502c9ad在GC_mark_from (mark_stack_top=0xb8b30010,mark_stack=0xb8b30000,mark_stack_limit=0xb8b38000) at mark.c:853 #10xa502c1d0在GC_mark_some (cold_gc_frame=0xbf90beec“l\220 H”\001元μ\220“)在mark.c:409 #2 0xa501f248 ( GC_stopped_mark (stop_func=0xa501e420 ) at alloc.c:702 ) #3 0xa501 eed2 in GC_try_to_collect_inner (stop_func=0xa501e420 ) at alloc.c:488 #4 0xa50254 at在GC_init () at misc.c:1288
发布于 2019-03-19 21:38:03
用于Android的boehm-gc中有一个bug,导致注册一个未映射内存区域的数据根(从而导致在GC初始化期间出现SIGSEGV/SEGV_MAPERR )。现在是固定。
https://stackoverflow.com/questions/45695678
复制相似问题