>With a pointer compression cage per process there's probably already quite some crosstalk in very indirect ways without even sharing pages.
Just to clarify: The problem for us is when the crosstalk triggers a synchronous embedder call on behalf of a different isolate – e.g., tearing down one isolate triggers a synchronous call to another isolate's task runner. On Friday, June 13, 2025 at 12:42:14 PM UTC-4 mlippa...@chromium.org wrote: > On Fri, Jun 13, 2025 at 4:12 PM ClearScript Developers < > clearsc...@gmail.com> wrote: > >> Hello V8 folks, >> >> First, the patch works for us! Thank you very much! >> >> Interestingly, we've confirmed that putting each isolate into its own >> group also works, and that seems a more robust solution. If only it didn't >> require pointer compression :) >> >> Anyway, we understand that, since isolate groups were designed to improve >> pointer compression, no effort will be made to enable it for other >> scenarios. >> >> Nevertheless, the patch only seems to sidestep the issue in the teardown >> case. Are there any other current or planned scenarios where this "isolate >> crosstalk" could occur? >> >> > Compilers use a process-global dispatcher at this point. > > With a pointer compression cage per process there's probably already quite > some crosstalk in very indirect ways without even sharing pages. > > WebAssembly probably also has quite some infrastructure that is > process-global. @Jakob Kummerow may have some pointers. > > > > >> Cheers! >> >> On Friday, June 13, 2025 at 6:30:13 AM UTC-4 mlip...@chromium.org wrote: >> >>> On Fri, Jun 13, 2025 at 12:06 PM Erik Corry <erik...@chromium.org> >>> wrote: >>> >>>> This isn't really caused by the IsolateGroup feature. The PagePool >>>> allows unused pages to be put in a pool so that other isolates can reuse >>>> them. This is a new performance feature from V8. It is more efficient to >>>> reuse a page than to unmap and then remap it later, which is two syscalls >>>> and probably disrupts the TLB. >>>> >>>> The page pool would cause the same inter-isolate interactions if >>>> IsolateGroups did not exist. >>>> >>>> I think the following untested uncompiled patch might fix your problem: >>>> >>>> diff --git a/src/heap/heap.cc b/src/heap/heap.cc >>>> index 090c1f780d2..d063998a963 100644 >>>> --- a/src/heap/heap.cc >>>> +++ b/src/heap/heap.cc >>>> @@ -6402,6 +6402,7 @@ void Heap::TearDown() { >>>> >>>> read_only_space_ = nullptr; >>>> >>>> + memory_allocator()->pool()->ReleaseImmediately(isolate()); >>>> memory_allocator()->pool()->ReleaseOnTearDown(isolate()); >>>> memory_allocator()->TearDown(); >>>> >>>> >>>> This will just release pages immediately, instead of putting them in >>>> the shared pool where other isolates can use them. >>>> >>> >>> Yes, this will work. We will need to refactor the pool a bit in the near >>> term and can add a few flags to disable it selectively. >>> >>> >>>> >>>> On Thu, Jun 12, 2025 at 4:44 PM 'James Snell' via v8-dev < >>>> v8-...@googlegroups.com> wrote: >>>> >>>>> Hey all, >>>>> >>>>> Yeah, we (Cloudflare Workers runtime folks) worked with Igalia and >>>>> asked them to implement the IsolateGroups mechanism specifically for >>>>> pointer compression support and would really have no intention of >>>>> supporting it without pointer compression. In workers we will create >>>>> thousands of isolates within a single process and can't afford to be >>>>> limited by the single pointer compression cage for the entire process. We >>>>> also want to start making use of the v8 sandbox. We were running a >>>>> non-supported configuration with pointer compression enabled but >>>>> otherwise >>>>> diverging from the supported configuration in a way that was not >>>>> sustainable and isolate groups allow us to have better alignment there. >>>>> It >>>>> *might* be possible to have a variation of isolate groups that works >>>>> without pointer compression but it's not something that we'd be >>>>> interested >>>>> in and not something we'd ask our friends at Igalia to work on. >>>>> >>>>> - James >>>>> >>>>> >>>>> On Thu, Jun 12, 2025 at 7:10 AM Michael Lippautz <mlip...@chromium.org> >>>>> wrote: >>>>> >>>>>> >>>>>> >>>>>> On Thu, Jun 12, 2025 at 3:37 PM ClearScript Developers < >>>>>> clearsc...@gmail.com> wrote: >>>>>> >>>>>>> Greetings! >>>>>>> >>>>>>> We've run into a new issue in V8 13.7 (upgrading from 13.5). In a >>>>>>> multi-isolate application, tearing down one isolate can trigger >>>>>>> synchronous >>>>>>> activity in another – specifically, the posting of >>>>>>> ReleasePooledChunksTask. >>>>>>> >>>>>>> Evidently, that happens because, by default, both isolates are in >>>>>>> the same group. Our understanding is that isolate groups are a new >>>>>>> feature >>>>>>> that allows isolates to share certain resources, and that, >>>>>>> unfortunately, >>>>>>> is a problem for us. In our case, isolates must remain... isolated. >>>>>>> >>>>>>> Setting up a dedicated group for each isolate appears to be >>>>>>> possible, but isolate groups require pointer compression, which we'd >>>>>>> prefer >>>>>>> to disable. Even if we enabled it, pointer compression isn't supported >>>>>>> on >>>>>>> 32-bit systems, which we still support. >>>>>>> >>>>>>> Can someone shed some light? Why do isolate groups require pointer >>>>>>> compression? How difficult would it be to remove that restriction? >>>>>>> >>>>>>> >>>>>> At this point V8 only officially supports a configuration with a >>>>>> single IsolateGroup. >>>>>> >>>>>> The concept of IsolateGroup was introduced by other embedders and as >>>>>> you wrote it's really for sharing a bunch of resources. E.g., read-only >>>>>> space, page pool, and at this point also a pointer compression cage. You >>>>>> could imagine an IsolateGroup without pointer compression -- at this >>>>>> point >>>>>> this is just not implemented. >>>>>> >>>>>> For maintenance and security reasons we can't accept any non-trivial >>>>>> patches for this area at this point as we cannot reliably test other >>>>>> configurations and ensure that they don't cause security problems down >>>>>> the >>>>>> line. >>>>>> >>>>>> -Michael >>>>>> >>>>>> >>>>>> -- >>>>>> -- >>>>>> 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/CAH%2BmL5CWjvnpqfYPvv_rdsmH6h-x4mWOtzqDCdPjLA%2BV0c4oQA%40mail.gmail.com >>>>>> >>>>>> <https://groups.google.com/d/msgid/v8-dev/CAH%2BmL5CWjvnpqfYPvv_rdsmH6h-x4mWOtzqDCdPjLA%2BV0c4oQA%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>>>> . >>>>>> >>>>> -- >>>>> -- >>>>> 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/CACFvHWnXBZNRsFWwJtuoHnXhf4KHZgtQGYdM5z9XBcQXdWh3pA%40mail.gmail.com >>>>> >>>>> <https://groups.google.com/d/msgid/v8-dev/CACFvHWnXBZNRsFWwJtuoHnXhf4KHZgtQGYdM5z9XBcQXdWh3pA%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> >>>> -- >>>> -- >>>> 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/CAHZxHpjOTR1T35eHRE2O71t9HTbd4jX2hNv6HZHy3ed%2B-U1Acw%40mail.gmail.com >>>> >>>> <https://groups.google.com/d/msgid/v8-dev/CAHZxHpjOTR1T35eHRE2O71t9HTbd4jX2hNv6HZHy3ed%2B-U1Acw%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> -- >> -- >> 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/9417bdcc-72cc-40de-aae8-6e9adfc18bebn%40googlegroups.com >> >> <https://groups.google.com/d/msgid/v8-dev/9417bdcc-72cc-40de-aae8-6e9adfc18bebn%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/cd330b4d-a7a0-4313-acae-8b5b1d277887n%40googlegroups.com.