I played around with some of my ideas and ended tracking the order they get created in a vector and then when the App is disposed of it iterates over the vector in reverse this solved the issue I was running into.
For some reason even though the creator immediately called Enter on the isolate and I called Exit after it's created I later ran into an error still when trying to reenter the isolate and destroying the creator. Also I'm not trying to take a snapshot in a controlled manor so the app itself would know when it's doing a snapshot and the users would be able to run code designed to be snapshot vs just running stuff as a normal run of it. On Tuesday, November 26, 2024 at 4:06:31 PM UTC+8 jgr...@chromium.org wrote: > On Fri, Nov 15, 2024 at 5:38 AM 'Ronald Fenner' via v8-dev < > v8-...@googlegroups.com> wrote: > >> After digging through my code and looking at the comments for the >> creation of the SnapshotCreator i see it explicitly enter the isolate >> however it does not look like it exits until destroye. Thus my creating >> multiple snapshot creators ahead of time is where the issue arises due to >> the stack of entered isolates and why destroying them in the reverse order >> of snapshotting works doesn't hit the error. >> >> This brings up some questions I think you may have hinted at. >> >> My assumptions where isolates were entirely isolated and thus >> snapshotting should only affect that isolate itself thus my pairing and >> isolate and creator when i know the runtime is created for snapshotting, >> however it seems snapshotting may also affecte some shared data structures >> thus when snapshotting you can only do one per process run. >> > > Hi Ronald, please excuse the late reply. > > When the gn arg `v8_enable_extensible_ro_snapshot` is set, snapshotting > can modify RO space which is shared between isolates. Otherwise, its > effects should be limited to the snapshotted isolate. > > Again, snapshotting 1) mutates the isolate and 2) doesn't support > arbitrary heap states. > > >> >> Could i take multiple snapshots but i would need to >> create->snapshot->destroy the creator before I snapshot another. >> >> What is the reasoning behind having the creator explicitly entering the >> runtime rather than allowing for the embedder of telling it when to enter >> it >> >> Can I fix the issue with something as simple as calling Exit on the >> isolate after creation and resolve the issue or does it need to remain >> entered. >> > > I don't think there's a reason besides SnapshotCreator being written with > our main use cases in mind. Would it work for you to snapshot your isolates > one after another, only having one SnapshotCreator active at a time? > > >> >> >> On Thursday, November 14, 2024 at 6:30:32 PM UTC+8 jgr...@chromium.org >> wrote: >> >>> The SnapshotCreator is unfortunately not as flexible as you describe. >>> Specifically: >>> >>> 1. taking a snapshot also mutates the snapshotted Isolate, and >>> 2. snapshotting doesn't fully support arbitrary heap states. See here >>> <https://source.chromium.org/chromium/chromium/src/+/main:v8/test/mjsunit/mjsunit.status;l=1906;drc=981ce1e8f82050b33153a9c4652f2ad1cefabff1> >>> for >>> a list of known test failures in our test variant that attempts to do just >>> that. >>> >>> The only workflow that is extensively tested on our side is essentially >>> what mksnapshot does, i.e.: we take a single snapshot of a well-known, >>> simple heap state and afterwards throw away the Isolate. You can always >>> attempt more advanced scenarios, but I wouldn't be surprised if you soon >>> run into trouble when snapshotting arbitrary heap states / continuing to >>> use the Isolate after. >>> >>> On Wed, Nov 13, 2024 at 7:18 AM 'Ronald Fenner' via v8-dev < >>> v8-...@googlegroups.com> wrote: >>> >>>> I'm testing my sanpshotting process and I create multiple snapshots at >>>> one time. since the main app can have multiple runtimes that it could >>>> snapshot. >>>> >>>> When i go to tear down the Isolates and creators i get this error >>>> # Debug check failed: CurrentPerIsolateThreadData()->isolate_ == this. >>>> >>>> I found after doing some testing that if i teardown the creators and >>>> isolates in the reverse order they were snapshotted in then there is no >>>> error. >>>> >>>> It seems like the snapshoot process isn't fully restoring something and >>>> thus the error occurs. >>>> >>>> I know I can code around it my destorying the isolate and creator as >>>> soon as i take the snapshot however this seems like a bug and I was >>>> planning on be able to have a app that can create snapshots while also >>>> having it's own runtime it's running and not sure if it would cause it >>>> problems. >>>> >>>> The basics of the flow is a runtime class is created which if the >>>> runtime is going to be snapshoted the runtime and created are paired and >>>> stored within the class. >>>> When the snapshot process is called the runtimes are looped over and a >>>> snapshot is created of each. When the runtime is torn down the isolate and >>>> creator are then destroyed. >>>> Note i'm storing the runtimes in a std::map so their order of iteration >>>> apparently can change so this creates the issue. >>>> >>>> I was able to test the order since the app class has it's main runtime >>>> and then the additional and by changing the order in which the main and >>>> hte >>>> additional runtime were torn down it worked, however adding a third the >>>> problem reoccured most likely due a possibly different order of iteration >>>> on the map. >>>> >>>> I looked for a way to try and pop the isolate or something and even >>>> tried entering and exiting but that didn't help. >>>> >>>> -- >>>> -- >>>> v8-dev mailing list >>>> v8-...@googlegroups.com >>>> http://groups.google.com/group/v8-dev >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "v8-dev" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to v8-dev+un...@googlegroups.com. >>>> To view this discussion visit >>>> https://groups.google.com/d/msgid/v8-dev/5d6392f5-a26a-41a9-8d77-974032d0e69an%40googlegroups.com >>>> >>>> <https://groups.google.com/d/msgid/v8-dev/5d6392f5-a26a-41a9-8d77-974032d0e69an%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> Jakob Gruber >>> >>> Software Engineer >>> >>> jgr...@google.com >>> >>> Google Germany GmbH >>> >>> Erika-Mann-Straße 33 >>> >>> 80636 München >>> >>> Geschäftsführer: Paul Manicle, Halimah DeLaine Prado >>> >>> Registergericht und -nummer: Hamburg, HRB 86891 >>> >>> Sitz der Gesellschaft: Hamburg >>> >>> Diese E-Mail ist vertraulich. Falls sie diese fälschlicherweise erhalten >>> haben sollten, leiten Sie diese bitte nicht an jemand anderes weiter, >>> löschen Sie alle Kopien und Anhänge davon und lassen Sie mich bitte wissen, >>> dass die E-Mail an die falsche Person gesendet wurde. >>> >>> >>> This e-mail is confidential. If you received this communication by >>> mistake, please don't forward it to anyone else, please erase all copies >>> and attachments, and please let me know that it has gone to the wrong >>> person. >>> >> -- >> -- >> v8-dev mailing list >> v8-...@googlegroups.com >> http://groups.google.com/group/v8-dev >> --- >> You received this message because you are subscribed to the Google Groups >> "v8-dev" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to v8-dev+un...@googlegroups.com. >> > To view this discussion visit >> https://groups.google.com/d/msgid/v8-dev/80b2bb0a-3f3f-4862-b891-f7f04ee21c56n%40googlegroups.com >> >> <https://groups.google.com/d/msgid/v8-dev/80b2bb0a-3f3f-4862-b891-f7f04ee21c56n%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > > -- -- v8-dev mailing list v8-dev@googlegroups.com http://groups.google.com/group/v8-dev --- You received this message because you are subscribed to the Google Groups "v8-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to v8-dev+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/v8-dev/a98cbc3f-eef7-4fc9-96f2-044c44da7774n%40googlegroups.com.