Skip to content

QuickJS crashes when size of loaded module exceeds the memory limit #396

@webmaster128

Description

@webmaster128

We found a number of different crash types that can happen when quickjs loads modules with too little memory. We can reproduce this with any value of the memory limit and any limit of the size. Simple code can crash with a limit below 128 KB. But also with a 1MB limit it is only a matter of module sizes until you get a crash.

The different crashes we encountered are

Crash type Assertion failed: in function:
SIGABRT: abort (class_id < rt->class_count) JS_SetClassProto
SIGABRT: abort (list_empty(&rt->gc_obj_list)) JS_FreeRuntime
SIGABRT: abort (label >= 0 && label < s->label_count) update_label
SIGSEGV: segmentation violation
SIGBUS: bus error

The PR #395 adds a test to reproduce this. uncomment the 5k lines and run go test -run TestModuleDifferentSizes -count 1 -v to get the cash.

logs
=== RUN   TestModuleDifferentSizes
=== RUN   TestModuleDifferentSizes/5k
Assertion failed: (label >= 0 && label < s->label_count), function update_label, file quickjs.c, line 21656.
SIGABRT: abort
PC=0x192a98388 m=0 sigcode=0
signal arrived during cgo execution

goroutine 8 gp=0x14000148a80 m=0 mp=0x100721100 [syscall, locked to thread]:
runtime.cgocall(0x1003e70e4, 0x1400006ec58)
        /[go]/libexec/src/runtime/cgocall.go:167 +0x44 fp=0x1400006ec20 sp=0x1400006ebe0 pc=0x10028f414
github.com/buke/quickjs-go._Cfunc_JS_Eval(0x127f11d30, 0x150008000, 0x28f64, 0x127e040e0, 0x21)
        _cgo_gotypes.go:384 +0x34 fp=0x1400006ec50 sp=0x1400006ec20 pc=0x10034d5f4
github.com/buke/quickjs-go.(*Context).LoadModule.func3(...)
        /[me]/quickjs-go/context.go:374
github.com/buke/quickjs-go.(*Context).LoadModule(0x1400010bb90, {0x140005ba000?, 0x28f64}, {0x1400006ee28, 0x5})
        /[me]/quickjs-go/context.go:374 +0x10c fp=0x1400006edd0 sp=0x1400006ec50 pc=0x1003536dc
github.com/buke/quickjs-go_test.TestModuleDifferentSizes.func1(0x140001488c0)
        /[me]/quickjs-go/quickjs_test.go:884 +0x1c4 fp=0x1400006ef60 sp=0x1400006edd0 pc=0x1003bf144
testing.tRunner(0x140001488c0, 0x14000078600)
        /[go]/libexec/src/testing/testing.go:1792 +0xe4 fp=0x1400006efb0 sp=0x1400006ef60 pc=0x100301dd4
testing.(*T).Run.gowrap1()
        /[go]/libexec/src/testing/testing.go:1851 +0x2c fp=0x1400006efd0 sp=0x1400006efb0 pc=0x100302c5c
runtime.goexit({})
        /[go]/libexec/src/runtime/asm_arm64.s:1223 +0x4 fp=0x1400006efd0 sp=0x1400006efd0 pc=0x100299df4
created by testing.(*T).Run in goroutine 7
        /[go]/libexec/src/testing/testing.go:1851 +0x374

goroutine 1 gp=0x140000021c0 m=nil [chan receive]:
runtime.gopark(0x10029acf0?, 0x140001459b8?, 0xfe?, 0x17?, 0x1007c80d0?)
        /[go]/libexec/src/runtime/proc.go:435 +0xc8 fp=0x14000145970 sp=0x14000145950 pc=0x1002921e8
runtime.chanrecv(0x14000022770, 0x14000145a77, 0x1)
        /[go]/libexec/src/runtime/chan.go:664 +0x42c fp=0x140001459f0 sp=0x14000145970 pc=0x10022c95c
runtime.chanrecv1(0x1007200c0?, 0x100584940?)
        /[go]/libexec/src/runtime/chan.go:506 +0x14 fp=0x14000145a20 sp=0x140001459f0 pc=0x10022c4f4
testing.(*T).Run(0x14000148380, {0x1004a0ca9?, 0x14000145b38?}, 0x10057d628)
        /[go]/libexec/src/testing/testing.go:1859 +0x388 fp=0x14000145b00 sp=0x14000145a20 pc=0x100302b38
testing.runTests.func1(0x14000148380)
        /[go]/libexec/src/testing/testing.go:2279 +0x40 fp=0x14000145b40 sp=0x14000145b00 pc=0x100304ac0
testing.tRunner(0x14000148380, 0x14000145c68)
        /[go]/libexec/src/testing/testing.go:1792 +0xe4 fp=0x14000145b90 sp=0x14000145b40 pc=0x100301dd4
testing.runTests(0x1400000e318, {0x10071a280, 0x1f, 0x1f}, {0x140000785e0?, 0x7?, 0x1007205c0?})
        /[go]/libexec/src/testing/testing.go:2277 +0x3ec fp=0x14000145c90 sp=0x14000145b90 pc=0x1003049dc
testing.(*M).Run(0x14000108e60)
        /[go]/libexec/src/testing/testing.go:2142 +0x588 fp=0x14000145ec0 sp=0x14000145c90 pc=0x100303738
main.main()
        _testmain.go:109 +0x90 fp=0x14000145f40 sp=0x14000145ec0 pc=0x1003c05b0
runtime.main()
        /[go]/libexec/src/runtime/proc.go:283 +0x284 fp=0x14000145fd0 sp=0x14000145f40 pc=0x10025dce4
runtime.goexit({})
        /[go]/libexec/src/runtime/asm_arm64.s:1223 +0x4 fp=0x14000145fd0 sp=0x14000145fd0 pc=0x100299df4

goroutine 2 gp=0x14000002c40 m=nil [force gc (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        /[go]/libexec/src/runtime/proc.go:435 +0xc8 fp=0x14000058f90 sp=0x14000058f70 pc=0x1002921e8
runtime.goparkunlock(...)
        /[go]/libexec/src/runtime/proc.go:441
runtime.forcegchelper()
        /[go]/libexec/src/runtime/proc.go:348 +0xb8 fp=0x14000058fd0 sp=0x14000058f90 pc=0x10025e038
runtime.goexit({})
        /[go]/libexec/src/runtime/asm_arm64.s:1223 +0x4 fp=0x14000058fd0 sp=0x14000058fd0 pc=0x100299df4
created by runtime.init.7 in goroutine 1
        /[go]/libexec/src/runtime/proc.go:336 +0x24

goroutine 3 gp=0x14000003500 m=nil [GC sweep wait]:
runtime.gopark(0x1?, 0x0?, 0x0?, 0x0?, 0x0?)
        /[go]/libexec/src/runtime/proc.go:435 +0xc8 fp=0x14000059760 sp=0x14000059740 pc=0x1002921e8
runtime.goparkunlock(...)
        /[go]/libexec/src/runtime/proc.go:441
runtime.bgsweep(0x14000026080)
        /[go]/libexec/src/runtime/mgcsweep.go:316 +0x108 fp=0x140000597b0 sp=0x14000059760 pc=0x100246ce8
runtime.gcenable.gowrap1()
        /[go]/libexec/src/runtime/mgc.go:204 +0x28 fp=0x140000597d0 sp=0x140000597b0 pc=0x10023aaf8
runtime.goexit({})
        /[go]/libexec/src/runtime/asm_arm64.s:1223 +0x4 fp=0x140000597d0 sp=0x140000597d0 pc=0x100299df4
created by runtime.gcenable in goroutine 1
        /[go]/libexec/src/runtime/mgc.go:204 +0x6c

goroutine 4 gp=0x140000036c0 m=nil [GC scavenge wait]:
runtime.gopark(0x1886a?, 0x6553f100?, 0x0?, 0x0?, 0x0?)
        /[go]/libexec/src/runtime/proc.go:435 +0xc8 fp=0x14000059f60 sp=0x14000059f40 pc=0x1002921e8
runtime.goparkunlock(...)
        /[go]/libexec/src/runtime/proc.go:441
runtime.(*scavengerState).park(0x100720640)
        /[go]/libexec/src/runtime/mgcscavenge.go:425 +0x5c fp=0x14000059f90 sp=0x14000059f60 pc=0x10024478c
runtime.bgscavenge(0x14000026080)
        /[go]/libexec/src/runtime/mgcscavenge.go:658 +0xac fp=0x14000059fb0 sp=0x14000059f90 pc=0x100244d2c
runtime.gcenable.gowrap2()
        /[go]/libexec/src/runtime/mgc.go:205 +0x28 fp=0x14000059fd0 sp=0x14000059fb0 pc=0x10023aa98
runtime.goexit({})
        /[go]/libexec/src/runtime/asm_arm64.s:1223 +0x4 fp=0x14000059fd0 sp=0x14000059fd0 pc=0x100299df4
created by runtime.gcenable in goroutine 1
        /[go]/libexec/src/runtime/mgc.go:205 +0xac

goroutine 5 gp=0x14000003c00 m=nil [finalizer wait]:
runtime.gopark(0x140000585b8?, 0x100292d34?, 0x1?, 0x85?, 0x1002b6104?)
        /[go]/libexec/src/runtime/proc.go:435 +0xc8 fp=0x14000058590 sp=0x14000058570 pc=0x1002921e8
runtime.runfinq()
        /[go]/libexec/src/runtime/mfinal.go:196 +0x108 fp=0x140000587d0 sp=0x14000058590 pc=0x100239af8
runtime.goexit({})
        /[go]/libexec/src/runtime/asm_arm64.s:1223 +0x4 fp=0x140000587d0 sp=0x140000587d0 pc=0x100299df4
created by runtime.createfing in goroutine 1
        /[go]/libexec/src/runtime/mfinal.go:166 +0x80

goroutine 6 gp=0x140001481c0 m=nil [chan receive]:
runtime.gopark(0x14000108d20?, 0x1400000e3a8?, 0x48?, 0x9f?, 0x10035b878?)
        /[go]/libexec/src/runtime/proc.go:435 +0xc8 fp=0x14000069ef0 sp=0x14000069ed0 pc=0x1002921e8
runtime.chanrecv(0x14000022540, 0x0, 0x1)
        /[go]/libexec/src/runtime/chan.go:664 +0x42c fp=0x14000069f70 sp=0x14000069ef0 pc=0x10022c95c
runtime.chanrecv1(0x0?, 0x0?)
        /[go]/libexec/src/runtime/chan.go:506 +0x14 fp=0x14000069fa0 sp=0x14000069f70 pc=0x10022c4f4
runtime.unique_runtime_registerUniqueMapCleanup.func2(...)
        /[go]/libexec/src/runtime/mgc.go:1796
runtime.unique_runtime_registerUniqueMapCleanup.gowrap1()
        /[go]/libexec/src/runtime/mgc.go:1799 +0x3c fp=0x14000069fd0 sp=0x14000069fa0 pc=0x10023dd1c
runtime.goexit({})
        /[go]/libexec/src/runtime/asm_arm64.s:1223 +0x4 fp=0x14000069fd0 sp=0x14000069fd0 pc=0x100299df4
created by unique.runtime_registerUniqueMapCleanup in goroutine 1
        /[go]/libexec/src/runtime/mgc.go:1794 +0x78

goroutine 7 gp=0x14000148700 m=nil [chan receive]:
runtime.gopark(0x10029acf0?, 0x1400006dc78?, 0xd5?, 0x1b?, 0x1007c80d0?)
        /[go]/libexec/src/runtime/proc.go:435 +0xc8 fp=0x1400006dc30 sp=0x1400006dc10 pc=0x1002921e8
runtime.chanrecv(0x14000022850, 0x1400006dd37, 0x1)
        /[go]/libexec/src/runtime/chan.go:664 +0x42c fp=0x1400006dcb0 sp=0x1400006dc30 pc=0x10022c95c
runtime.chanrecv1(0x1007200c0?, 0x100584940?)
        /[go]/libexec/src/runtime/chan.go:506 +0x14 fp=0x1400006dce0 sp=0x1400006dcb0 pc=0x10022c4f4
testing.(*T).Run(0x14000148540, {0x10049a883?, 0x1400006dee8?}, 0x14000078600)
        /[go]/libexec/src/testing/testing.go:1859 +0x388 fp=0x1400006ddc0 sp=0x1400006dce0 pc=0x100302b38
github.com/buke/quickjs-go_test.TestModuleDifferentSizes(0x14000148540)
        /[me]/quickjs-go/quickjs_test.go:872 +0x1a4 fp=0x1400006df60 sp=0x1400006ddc0 pc=0x1003beeb4
testing.tRunner(0x14000148540, 0x10057d628)
        /[go]/libexec/src/testing/testing.go:1792 +0xe4 fp=0x1400006dfb0 sp=0x1400006df60 pc=0x100301dd4
testing.(*T).Run.gowrap1()
        /[go]/libexec/src/testing/testing.go:1851 +0x2c fp=0x1400006dfd0 sp=0x1400006dfb0 pc=0x100302c5c
runtime.goexit({})
        /[go]/libexec/src/runtime/asm_arm64.s:1223 +0x4 fp=0x1400006dfd0 sp=0x1400006dfd0 pc=0x100299df4
created by testing.(*T).Run in goroutine 1
        /[go]/libexec/src/testing/testing.go:1851 +0x374

goroutine 9 gp=0x14000148c40 m=nil [GC worker (idle)]:
runtime.gopark(0x1400005af58?, 0x100301d24?, 0x24?, 0x1d?, 0x1400005af50?)
        /[go]/libexec/src/runtime/proc.go:435 +0xc8 fp=0x1400005af10 sp=0x1400005aef0 pc=0x1002921e8
runtime.gcBgMarkWorker(0x14000022930)
        /[go]/libexec/src/runtime/mgc.go:1423 +0xdc fp=0x1400005afb0 sp=0x1400005af10 pc=0x10023cf8c
runtime.gcBgMarkStartWorkers.gowrap1()
        /[go]/libexec/src/runtime/mgc.go:1339 +0x28 fp=0x1400005afd0 sp=0x1400005afb0 pc=0x10023ce78
runtime.goexit({})
        /[go]/libexec/src/runtime/asm_arm64.s:1223 +0x4 fp=0x1400005afd0 sp=0x1400005afd0 pc=0x100299df4
created by runtime.gcBgMarkStartWorkers in goroutine 8
        /[go]/libexec/src/runtime/mgc.go:1339 +0x140

goroutine 18 gp=0x1400048c380 m=nil [GC worker (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        /[go]/libexec/src/runtime/proc.go:435 +0xc8 fp=0x14000054710 sp=0x140000546f0 pc=0x1002921e8
runtime.gcBgMarkWorker(0x14000022930)
        /[go]/libexec/src/runtime/mgc.go:1423 +0xdc fp=0x140000547b0 sp=0x14000054710 pc=0x10023cf8c
runtime.gcBgMarkStartWorkers.gowrap1()
        /[go]/libexec/src/runtime/mgc.go:1339 +0x28 fp=0x140000547d0 sp=0x140000547b0 pc=0x10023ce78
runtime.goexit({})
        /[go]/libexec/src/runtime/asm_arm64.s:1223 +0x4 fp=0x140000547d0 sp=0x140000547d0 pc=0x100299df4
created by runtime.gcBgMarkStartWorkers in goroutine 8
        /[go]/libexec/src/runtime/mgc.go:1339 +0x140

goroutine 19 gp=0x1400048c540 m=nil [GC worker (idle)]:
runtime.gopark(0x11ec464af95d4?, 0x3?, 0xb2?, 0x7b?, 0x0?)
        /[go]/libexec/src/runtime/proc.go:435 +0xc8 fp=0x14000054f10 sp=0x14000054ef0 pc=0x1002921e8
runtime.gcBgMarkWorker(0x14000022930)
        /[go]/libexec/src/runtime/mgc.go:1423 +0xdc fp=0x14000054fb0 sp=0x14000054f10 pc=0x10023cf8c
runtime.gcBgMarkStartWorkers.gowrap1()
        /[go]/libexec/src/runtime/mgc.go:1339 +0x28 fp=0x14000054fd0 sp=0x14000054fb0 pc=0x10023ce78
runtime.goexit({})
        /[go]/libexec/src/runtime/asm_arm64.s:1223 +0x4 fp=0x14000054fd0 sp=0x14000054fd0 pc=0x100299df4
created by runtime.gcBgMarkStartWorkers in goroutine 8
        /[go]/libexec/src/runtime/mgc.go:1339 +0x140

goroutine 34 gp=0x14000092380 m=nil [GC worker (idle)]:
runtime.gopark(0x11ec464af9269?, 0x1?, 0x59?, 0x91?, 0x0?)
        /[go]/libexec/src/runtime/proc.go:435 +0xc8 fp=0x140000aa710 sp=0x140000aa6f0 pc=0x1002921e8
runtime.gcBgMarkWorker(0x14000022930)
        /[go]/libexec/src/runtime/mgc.go:1423 +0xdc fp=0x140000aa7b0 sp=0x140000aa710 pc=0x10023cf8c
runtime.gcBgMarkStartWorkers.gowrap1()
        /[go]/libexec/src/runtime/mgc.go:1339 +0x28 fp=0x140000aa7d0 sp=0x140000aa7b0 pc=0x10023ce78
runtime.goexit({})
        /[go]/libexec/src/runtime/asm_arm64.s:1223 +0x4 fp=0x140000aa7d0 sp=0x140000aa7d0 pc=0x100299df4
created by runtime.gcBgMarkStartWorkers in goroutine 8
        /[go]/libexec/src/runtime/mgc.go:1339 +0x140

goroutine 10 gp=0x14000148e00 m=nil [GC worker (idle)]:
runtime.gopark(0x11ec464aef3b8?, 0x1?, 0xd?, 0x5f?, 0x0?)
        /[go]/libexec/src/runtime/proc.go:435 +0xc8 fp=0x1400005b710 sp=0x1400005b6f0 pc=0x1002921e8
runtime.gcBgMarkWorker(0x14000022930)
        /[go]/libexec/src/runtime/mgc.go:1423 +0xdc fp=0x1400005b7b0 sp=0x1400005b710 pc=0x10023cf8c
runtime.gcBgMarkStartWorkers.gowrap1()
        /[go]/libexec/src/runtime/mgc.go:1339 +0x28 fp=0x1400005b7d0 sp=0x1400005b7b0 pc=0x10023ce78
runtime.goexit({})
        /[go]/libexec/src/runtime/asm_arm64.s:1223 +0x4 fp=0x1400005b7d0 sp=0x1400005b7d0 pc=0x100299df4
created by runtime.gcBgMarkStartWorkers in goroutine 8
        /[go]/libexec/src/runtime/mgc.go:1339 +0x140

goroutine 20 gp=0x1400048c700 m=nil [GC worker (idle)]:
runtime.gopark(0x1007482e0?, 0x1?, 0xa4?, 0x38?, 0x0?)
        /[go]/libexec/src/runtime/proc.go:435 +0xc8 fp=0x14000055710 sp=0x140000556f0 pc=0x1002921e8
runtime.gcBgMarkWorker(0x14000022930)
        /[go]/libexec/src/runtime/mgc.go:1423 +0xdc fp=0x140000557b0 sp=0x14000055710 pc=0x10023cf8c
runtime.gcBgMarkStartWorkers.gowrap1()
        /[go]/libexec/src/runtime/mgc.go:1339 +0x28 fp=0x140000557d0 sp=0x140000557b0 pc=0x10023ce78
runtime.goexit({})
        /[go]/libexec/src/runtime/asm_arm64.s:1223 +0x4 fp=0x140000557d0 sp=0x140000557d0 pc=0x100299df4
created by runtime.gcBgMarkStartWorkers in goroutine 8
        /[go]/libexec/src/runtime/mgc.go:1339 +0x140

goroutine 35 gp=0x14000092540 m=nil [GC worker (idle)]:
runtime.gopark(0x11ec463a1bafc?, 0x1?, 0x75?, 0x1d?, 0x0?)
        /[go]/libexec/src/runtime/proc.go:435 +0xc8 fp=0x140000aaf10 sp=0x140000aaef0 pc=0x1002921e8
runtime.gcBgMarkWorker(0x14000022930)
        /[go]/libexec/src/runtime/mgc.go:1423 +0xdc fp=0x140000aafb0 sp=0x140000aaf10 pc=0x10023cf8c
runtime.gcBgMarkStartWorkers.gowrap1()
        /[go]/libexec/src/runtime/mgc.go:1339 +0x28 fp=0x140000aafd0 sp=0x140000aafb0 pc=0x10023ce78
runtime.goexit({})
        /[go]/libexec/src/runtime/asm_arm64.s:1223 +0x4 fp=0x140000aafd0 sp=0x140000aafd0 pc=0x100299df4
created by runtime.gcBgMarkStartWorkers in goroutine 8
        /[go]/libexec/src/runtime/mgc.go:1339 +0x140

goroutine 11 gp=0x14000148fc0 m=nil [GC worker (idle)]:
runtime.gopark(0x11ec464aed548?, 0x1?, 0xe0?, 0x35?, 0x0?)
        /[go]/libexec/src/runtime/proc.go:435 +0xc8 fp=0x14000068f10 sp=0x14000068ef0 pc=0x1002921e8
runtime.gcBgMarkWorker(0x14000022930)
        /[go]/libexec/src/runtime/mgc.go:1423 +0xdc fp=0x14000068fb0 sp=0x14000068f10 pc=0x10023cf8c
runtime.gcBgMarkStartWorkers.gowrap1()
        /[go]/libexec/src/runtime/mgc.go:1339 +0x28 fp=0x14000068fd0 sp=0x14000068fb0 pc=0x10023ce78
runtime.goexit({})
        /[go]/libexec/src/runtime/asm_arm64.s:1223 +0x4 fp=0x14000068fd0 sp=0x14000068fd0 pc=0x100299df4
created by runtime.gcBgMarkStartWorkers in goroutine 8
        /[go]/libexec/src/runtime/mgc.go:1339 +0x140

goroutine 21 gp=0x1400048c8c0 m=nil [GC worker (idle)]:
runtime.gopark(0x11ec464af3cf6?, 0x1?, 0xfa?, 0x0?, 0x0?)
        /[go]/libexec/src/runtime/proc.go:435 +0xc8 fp=0x14000055f10 sp=0x14000055ef0 pc=0x1002921e8
runtime.gcBgMarkWorker(0x14000022930)
        /[go]/libexec/src/runtime/mgc.go:1423 +0xdc fp=0x14000055fb0 sp=0x14000055f10 pc=0x10023cf8c
runtime.gcBgMarkStartWorkers.gowrap1()
        /[go]/libexec/src/runtime/mgc.go:1339 +0x28 fp=0x14000055fd0 sp=0x14000055fb0 pc=0x10023ce78
runtime.goexit({})
        /[go]/libexec/src/runtime/asm_arm64.s:1223 +0x4 fp=0x14000055fd0 sp=0x14000055fd0 pc=0x100299df4
created by runtime.gcBgMarkStartWorkers in goroutine 8
        /[go]/libexec/src/runtime/mgc.go:1339 +0x140

goroutine 22 gp=0x1400048ca80 m=nil [GC worker (idle)]:
runtime.gopark(0x1007482e0?, 0x1?, 0x6?, 0x83?, 0x0?)
        /[go]/libexec/src/runtime/proc.go:435 +0xc8 fp=0x14000056710 sp=0x140000566f0 pc=0x1002921e8
runtime.gcBgMarkWorker(0x14000022930)
        /[go]/libexec/src/runtime/mgc.go:1423 +0xdc fp=0x140000567b0 sp=0x14000056710 pc=0x10023cf8c
runtime.gcBgMarkStartWorkers.gowrap1()
        /[go]/libexec/src/runtime/mgc.go:1339 +0x28 fp=0x140000567d0 sp=0x140000567b0 pc=0x10023ce78
runtime.goexit({})
        /[go]/libexec/src/runtime/asm_arm64.s:1223 +0x4 fp=0x140000567d0 sp=0x140000567d0 pc=0x100299df4
created by runtime.gcBgMarkStartWorkers in goroutine 8
        /[go]/libexec/src/runtime/mgc.go:1339 +0x140

r0      0x0
r1      0x0
r2      0x0
r3      0x0
r4      0x0
r5      0x2e
r6      0x0
r7      0x3
r8      0x5b82ec00b4dd4a69
r9      0x5b82ec02b54706e9
r10     0xa
r11     0x0
r12     0x32
r13     0x1e
r14     0x4
r15     0x3c
r16     0x148
r17     0x202a14ac0
r18     0x0
r19     0x6
r20     0x103
r21     0x2019a4d60
r22     0x100840000
r23     0x1004f86e5
r24     0x1ff06b000
r25     0x127e04380
r26     0x2292
r27     0xffffffff
r28     0x127e04210
r29     0x16fbde990
lr      0x192ad188c
sp      0x16fbde970
pc      0x192a98388
fault   0x192a98388
exit status 2
FAIL    github.com/buke/quickjs-go      0.258s

This is not necessarily a bug in quickjs-go. But I want to post it here for visibility and because it is reproducible using quickjs-go.

Any pointers to the root cause is appreciated.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions