Hi, It works for me when I save wasm memory and all global variables. Then I restore them. Unfortunately I can't show code because of NDA. Can you explain what did you try?
пн, 24 июн. 2019 г. в 22:55, Grant Nestor <[email protected]>: > > @caiiycuk, can you provide a summary of how you got this working or a link to > a working example? I've done some experimentation but no luck so far... > > On Wednesday, May 15, 2019 at 4:05:24 AM UTC-4, caiiiycuk wrote: >> >> Thanks a lot. Now everything seems working. Changes that helps me: >> 1. Do save/restore operation only if EmterpreterAsync.state === 0 (normal >> state) >> 2. Reset some variables that depends on current time >> >> вт, 14 мая 2019 г. в 22:56, Alon Zakai <[email protected]>: >> > >> > The EmterpreterAsync JS object does have a few fields, yes. I think they >> > only matter during an async event though. >> > >> > To debug this kind of thing, the DETERMINISTIC option may be useful. It >> > makes all timing and random numbers deterministic, which for many programs >> > (without user input, and single-threaded) means it is deterministic, so >> > you can re-run the same reloaded program to debug it. >> > >> > On Tue, May 14, 2019 at 3:56 AM Александр Гурьянов <[email protected]> >> > wrote: >> >> >> >> Thanks for feedback. Now I am saving and restoring all wasm mutable >> >> globals. But seems it does not help, I still have unstable behaviour. >> >> I forgot to say that I use emterpeter too, can it produce additional >> >> problem for save/restore wasm state? >> >> >> >> вс, 12 мая 2019 г. в 22:31, Liam Wilson <[email protected]>: >> >> > >> >> > 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. >> >> >> >> -- >> >> 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/CAKOm%3DVFttict2uVoLWTTdeScUFjeu8FFhFif%3DJSm%3Djvd4%3DFdkA%40mail.gmail.com. >> >> For more options, visit https://groups.google.com/d/optout. >> > >> > -- >> > 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/CAEX4NpTm0pkGNvRuzH42cNUzEPnpCEkrb7xfk_ArW3uaefPKEQ%40mail.gmail.com. >> > For more options, visit https://groups.google.com/d/optout. > > -- > 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/b0b4a6cc-c250-4327-8eef-e77eda604163%40googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- 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/CAKOm%3DVE3FqCBnxmyk59PGZux_6AnY69-KK2MmxHBKsFw86qBtg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
