在load_gc上的Boehm GC android sigsegv

时间:2017-08-15 15:03:49

标签: c android-ndk boehm-gc

我在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