quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

commit e0f4a099a0b3905213b62623a90c5915f9f0290b
parent 3061ee2130e4a08a9257e47552014be553129f9b
Author: Florian Dold <florian@dold.me>
Date:   Thu,  6 Jul 2023 22:03:03 +0200

crash repro

Diffstat:
Acrash.js | 45+++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+), 0 deletions(-)

diff --git a/crash.js b/crash.js @@ -0,0 +1,45 @@ +import * as std from "std"; +import * as os from "os"; + +function openPromise() { + let resolve = null; + let reject = null; + const promise = new Promise((res, rej) => { + resolve = res; + reject = rej; + }); + if (!(resolve && reject)) { + throw Error(); + } + return { resolve, reject, promise }; +} + +let listener; + +async function waitUntilDone(ws) { + let p2; + listener = (yn) => { + if (!p2) { + return; + } + if (yn) + p2.resolve(); + }; + while (1) { + p2 = openPromise(); + await p2.promise; + } +} + +waitUntilDone(); + +//os.setTimeout(() => { +// std.gc(); +// listener(true); +//}, 0); + +os.setTimeout(() => { + listener(false); + std.gc(); + std.gc(); +}, 0);