Sorry type I'm trying to take a snapshot in a controller manor. On Tuesday, November 26, 2024 at 5:00:29 PM UTC+8 Ronald Fenner wrote:
> 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/cb04bd25-cfe2-4612-aac9-afe6bf23535fn%40googlegroups.com.