A couple of years ago was playing around with something similar with Emscripten in asm.js mode. I was able to snapshot/restore program state by saving the contents of the heap to another array, and also saving STACKTOP. I also had to replace _malloc and _free as there seemed to be some internal state in there too.
Code is here https://github.com/cosinusoidally/emscripten_experiments/blob/master/jpeg_decoding/time_travel_test.js Thanks Liam Wilson On Friday, May 10, 2019 at 12:33:05 PM UTC+1, caiiiycuk wrote: > > Hi is it possible to make snapshot of runtime, serelize it to file and > then restore runtime on other client. I understand that snapshotting > have a lot of pitfalls. But for now I want to implement simpliest > case. My target is wasm, main loop is executed by requestAnimation > frame. > > So stack always same: > > request animation frame -> loop function -> create/resotre memory -> > actual programm implementation > > The first code in loop function is to restore/save heap, like this: > > static void em_main_loop(void) { > if (doHeapOperation()) { > return; > } > > // actual programm implementation > } > > As heapOperation I use this: > > Module.heapOperation = function() { > delete Module.heapOperation; > var buffer = new ArrayBuffer(Module.HEAPU8.byteLength); > window.heapCopy = new Uint8Array(buffer); > window.heapCopy.set(Module.HEAPU8); > console.log("INFO: heapCopy created"); > > function restore() { > Module.heapOperation = function() { > delete Module.heapOperation; > Module.HEAPU8.set(window.heapCopy); > console.log("INFO: heapCopy loaded"); > } > }; > > setTimeout(restore, 1000); > } > > So, I just saving all wasm memory, and then restore it after 1 sec. > And this code works in 50% cases, sometimes program is start as 1 > second before, but other time it continue with unpredictable > behaviour. > > Because we paused / resume with same memory and same stack I assume > that everything should works. But, in reality it does not. Is > emscripten also save some state in javascript? What I am missing. > Assume that my program did not use FS, GPU, SOUNDS and pure native (no > EM_ASM inside), is this technique should works? > -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/emscripten-discuss/ca1ab65c-d418-4ba6-89b8-8f2fc08501f1%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
