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.

Reply via email to