我在Android x86上的Boehm发生了一次奇怪的崩溃(但手臂工作正常);它崩溃了:
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,tid 7930中的故障地址0xa31f8(ksample.oxygene)
回溯:
(gdb)bt
#0 0xa502c9ad在GC_mark_from(mark_stack_top = 0xb8b30010,mark_stack = 0xb8b30000,mark_stack_limit = 0xb8b38000)at mark.c:853
GC_mark_some中的#1 0xa502c1d0(cold_gc_frame = 0xbf90beec“l¿\220¿Hò\ 001¥ì¾\220¿”)at mark.c:409
#2 0xa501f248在GC_stopped_mark(stop_func = 0xa501e420)的alloc.c:702
在的GC_try_to_collect_inner(stop_func = 0xa501e420)中#3 0xa501eed2:488
#4 0xa50254ff在GC_init()中misc.c:1288
1 个答案:
答案 0 :(得分:2)
boehm-gc for Android中存在一个错误,导致数据根向未映射内存区域的注册(因此在GC初始化期间导致了SIGSEGV / SEGV_MAPERR)。 现在是fixed。