wizard-engine icon indicating copy to clipboard operation
wizard-engine copied to clipboard

JIT: crash in GC

Open vouillon opened this issue 2 months ago • 1 comments

I have a larger program that crashes after some time. I have not been able to produce a small repro.

$ wizeng.x86-64-linux --dir=/tmp --mode=jit bug.wasm
!GcError: invalid reference @ 0x000000001E1E2078 -> 0x000001C400000000!GcError: fatal
	in Semispace.scanSlot() [/home/jerome/sources/virgil/rt/gc/SemiSpace.v3 @ 82:29]
	in RiGc.scanRefMap() [/home/jerome/sources/virgil/rt/gc/RiGc.v3 @ 184:56]
	in RiGc.scanObject() [/home/jerome/sources/virgil/rt/gc/RiGc.v3 @ 122:58]
	in Semispace.collect() [/home/jerome/sources/virgil/rt/gc/SemiSpace.v3 @ 137:79]
	in RiRuntime.gc() [/home/jerome/sources/virgil/rt/native/RiRuntime.v3 @ 86:33]
	in X86_64Stack.readI31OrObject() [src/engine/x86-64/X86_64Stack.v3 @ 546:33]
	in X86_64Stack.peekRef() [src/engine/x86-64/X86_64Stack.v3 @ 380:39]
	in X86_64Runtime.runtime_doCast() [src/engine/x86-64/X86_64Runtime.v3 @ 212:40]
	in [spc-module] !GcError: reentrant call to SemiSpace.collect
	in NameSection.lazyDecode() [src/engine/NameSection.v3 @ 36:67]
	in NameSection.getFuncName() [src/engine/NameSection.v3 @ 20:27]
	in FuncDecl.render() [src/engine/Module.v3 @ 145:64]
	in X86_64SpcCode.describeFrame() [src/engine/x86-64/X86_64SinglePassCompiler.v3 @ 1162:31]
	in NativeStackPrinter.printStack() [/home/jerome/sources/virgil/rt/native/NativeStackPrinter.v3 @ 19:55]
	in System.error() [/home/jerome/sources/virgil/rt/x86-64-linux/System.v3 @ 116:51]
	in Semispace.scanSlot() [/home/jerome/sources/virgil/rt/gc/SemiSpace.v3 @ 82:29]
	in RiGc.scanRefMap() [/home/jerome/sources/virgil/rt/gc/RiGc.v3 @ 184:56]
	in RiGc.scanObject() [/home/jerome/sources/virgil/rt/gc/RiGc.v3 @ 122:58]
	in Semispace.collect() [/home/jerome/sources/virgil/rt/gc/SemiSpace.v3 @ 137:79]
	in RiRuntime.gc() [/home/jerome/sources/virgil/rt/native/RiRuntime.v3 @ 86:33]
	in X86_64Stack.readI31OrObject() [src/engine/x86-64/X86_64Stack.v3 @ 546:33]
	in X86_64Stack.peekRef() [src/engine/x86-64/X86_64Stack.v3 @ 380:39]
	in X86_64Runtime.runtime_doCast() [src/engine/x86-64/X86_64Runtime.v3 @ 212:40]
	in [spc-module] #336
	in [spc-module] #372
	in [spc-module] #64
	in [spc-module] #145
	in [spc-module] #248
	in [spc-module] #357
	in [spc-module] #299
	in [spc-module] #274
	in [spc-module] #351
	in [return-parent-stub]
	in X86_64Stack.resume() [src/engine/x86-64/X86_64Stack.v3 @ 74:56]
	in X86_64StackManager.runOnFreshStack() [src/engine/x86-64/X86_64Stack.v3 @ 1137:62]
	in X86_64ExecutionStrategy.call() [src/engine/x86-64/X86_64Target.v3 @ 167:58]
	in Execute.call() [src/engine/Execute.v3 @ 18:36]
	in WasmMode.executeMainFunction() [src/WasmMode.v3 @ 161:37]
	in WasmMode.linkAndExecuteMain() [src/WasmMode.v3 @ 117:60]
	in WasmMode.run() [src/WasmMode.v3 @ 25:64]
	in main() [src/wizeng.main.v3 @ 89:48]

vouillon avatar Oct 14 '25 20:10 vouillon