Javascript 垃圾收集时断言失败
我将SpiderMonkey嵌入到iOS应用程序中,在执行Javascript 垃圾收集时断言失败,javascript,ios,debugging,garbage-collection,spidermonkey,Javascript,Ios,Debugging,Garbage Collection,Spidermonkey,我将SpiderMonkey嵌入到iOS应用程序中,在执行JS_GC和JS_MaybeGC时,断言失败。在我的iPhone上进行测试时,这种情况更常见,但在模拟器中也会发生。特别是,断言失败是: Assertion failure: kind == GetGCThingTraceKind(*thingp), at /Users/rquesada/progs/Spidermonkey/js/src/gc/Marking.cpp:366 我不太熟悉如何嵌入SpiderMonkey。我应该从哪里开始
JS_GC
和JS_MaybeGC
时,断言失败。在我的iPhone上进行测试时,这种情况更常见,但在模拟器中也会发生。特别是,断言失败是:
Assertion failure: kind == GetGCThingTraceKind(*thingp), at /Users/rquesada/progs/Spidermonkey/js/src/gc/Marking.cpp:366
我不太熟悉如何嵌入SpiderMonkey。我应该从哪里开始找出并修复这个bug?我的应用程序中只有一个全局对象、一个运行时和一个上下文,它们都是从主线程运行的。原因是我将一个
\u块
变量传递给JS\u AddValueRoot
。JS_Add*Root
函数对内存地址进行操作,并且:
__块变量最初是在堆栈上分配的,但是如果复制了引用它们的任何块,它们就会被移动到堆上(malloced)
这导致GCer认为有什么东西没有导致它崩溃