It seem I got a clean bill of health locally after fixing the obvious bug I had:
>>> Running tests for x64.debug >>> Running with test processors [70:10|% 96|+ 18516|- 0]: Done >>> 19139 base tests produced 18516 (96%) non-filtered tests >>> 18516 tests ran On Wednesday, 27 September 2023 at 15:25:18 UTC+3 Aapo Alasuutari wrote: > Oops, yeah. > > Locally I already have related failed DCHECKs so this ain't gonna be > pretty. > > # Fatal error in ../../src/sandbox/sandboxed-pointer-inl.h, line 35 > # Check failed: GetProcessWideSandbox()->Contains(pointer). > # > # > # > #FailureMessage Object: 0x7fad9b7e54f8 > ==== C stack trace =============================== > > > /sources/aapoalas/v8/v8/out/x64.debug/libv8_libbase.so(v8::base::debug::StackTrace::StackTrace()+0x1e) > > [0x7fae87a1ef0e] > /sources/aapoalas/v8/v8/out/x64.debug/libv8_libplatform.so(+0x5219d) > [0x7fae8797419d] > /sources/aapoalas/v8/v8/out/x64.debug/libv8_libbase.so(V8_Fatal(char > const*, int, char const*, ...)+0x1ac) [0x7fae879eeeec] > > /sources/aapoalas/v8/v8/out/x64.debug/cctest(v8::internal::WriteSandboxedPointerField(unsigned > > long, v8::internal::PtrComprCageBase, unsigned long)+0x59) [0x5561832b6a49] > > /sources/aapoalas/v8/v8/out/x64.debug/libv8_for_testing.so(v8::internal::HeapObject::WriteSandboxedPointerField(unsigned > > long, v8::internal::Isolate*, unsigned long)+0x47) [0x7fae8ce2eee7] > > /sources/aapoalas/v8/v8/out/x64.debug/libv8_for_testing.so(v8::internal::JSArrayBuffer::set_backing_store(v8::internal::Isolate*, > > void*)+0x40) [0x7fae8da717d0] > > /sources/aapoalas/v8/v8/out/x64.debug/libv8_for_testing.so(v8::internal::JSArrayBuffer::Attach(std::__Cr::shared_ptr<v8::internal::BackingStore>)+0x45c) > > [0x7fae8da6e81c] > > On Wednesday, 27 September 2023 at 15:18:43 UTC+3 Clemens Backes wrote: > >> I guess you meant to link to https://crrev.com/c/4896678. I triggered >> dry-runs, let's see what happens. >> >> On Wed, Sep 27, 2023 at 2:12 PM Aapo Alasuutari <aapo.al...@gmail.com> >> wrote: >> >>> Thank you for the response! >>> >>> Hopefully this was then much easier than I even expected. I opened this >>> CL: https://groups.google.com/g/v8-dev/c/wuncGizO1EU >>> Unfortunately I'm not a dry-runner so I cannot start try-bots on this >>> myself. I'll try running some tests locally at least. >>> >>> -Aapo >>> >>> On Wednesday, 27 September 2023 at 14:15:23 UTC+3 Clemens Backes wrote: >>> >>>> This is the place where we store the special "empty backing store >>>> buffer" in the ArrayBuffer if the passed BackingStore is empty: >>>> >>>> https://source.chromium.org/chromium/chromium/src/+/main:v8/src/objects/js-array-buffer.cc;l=82;drc=57bf7660f3e50a0f68f329059f0dff8f641effc4 >>>> >>>> In a non-sandbox build, this will just store nullptr. >>>> >>>> That said, I can't tell you why we have this optimization and which >>>> part(s) of the system depend on that. As the backing store is kept alive >>>> by >>>> the ArrayBuffer anyway, I guess we could also just store the actual >>>> buffer's start in the ArrayBuffer::backing_store field. >>>> Waiting to be corrected :) >>>> >>>> On Wed, Sep 27, 2023 at 11:22 AM Aapo Alasuutari <aapo.al...@gmail.com> >>>> wrote: >>>> >>>>> Hello >>>>> >>>>> I'm trying to take a look at the `v8::ArrayBuffer::Data()` method with >>>>> the intention of fixing this bug: >>>>> https://bugs.chromium.org/p/v8/issues/detail?id=13488 (and by >>>>> extension possibly unblock >>>>> https://bugs.chromium.org/p/v8/issues/detail?id=13489) >>>>> >>>>> Put it short: The method returns a null pointer for all zero-length >>>>> buffers even when the ArrayBuffer is internally backed by an external >>>>> pointer. These sorts of externally backed zero-length buffers are >>>>> sometimes >>>>> used in eg. Node API to pass opaque pointers to and from JavaScript. >>>>> Getting the proper pointer requires using the >>>>> `v8::ArrayBuffer::GetBackingStore()` API, after which its `Data()` API >>>>> returns the real external pointer. >>>>> >>>>> I've been trying to track where this difference springs from but >>>>> haven't had much success. The `Data()` method calls the `backing_store()` >>>>> method of a `i::Handle<i::JSArrayBuffer>` which I _think_ is defined with >>>>> the `DEF_GETTER` macro in `js-array-buffer-inl.h` line 48: >>>>> >>>>> DEF_GETTER(JSArrayBuffer, backing_store, void*) { >>>>> Address value = ReadSandboxedPointerField(kBackingStoreOffset, >>>>> cage_base); >>>>> return reinterpret_cast<void*>(value); >>>>> } >>>>> >>>>> But here I get confused: `ReadSandboxedPointerField` (in >>>>> `sandboxed-pointer-inl.h`) seems simple enough that there should be >>>>> absolutely no checks against the length of the buffer, nor does it seem >>>>> particularly likely for the backing store offset parameter to be somehow >>>>> wrong. >>>>> >>>>> If anyone has an idea of where I should look into, that'd be much >>>>> appreciated >>>>> -Aapo Alasuutari >>>>> >>>>> -- >>>>> -- >>>>> 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 on the web visit >>>>> https://groups.google.com/d/msgid/v8-dev/350ede0e-0c6d-433e-b9b3-a85525c7049fn%40googlegroups.com >>>>> >>>>> <https://groups.google.com/d/msgid/v8-dev/350ede0e-0c6d-433e-b9b3-a85525c7049fn%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> >>>> >>>> >>>> -- >>>> >>>> Clemens Backes >>>> >>>> Software Engineer >>>> >>>> clem...@google.com >>>> >>>> Google Germany GmbH >>>> >>>> Erika-Mann-Straße 33 >>>> >>>> 80636 München >>>> >>>> Geschäftsführer: Paul Manicle, Liana Sebastian >>>> >>>> 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 on the web visit >>> https://groups.google.com/d/msgid/v8-dev/25a7a109-5b44-4250-b5f2-bc060ef307b4n%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/v8-dev/25a7a109-5b44-4250-b5f2-bc060ef307b4n%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> >> >> -- >> >> Clemens Backes >> >> Software Engineer >> >> clem...@google.com >> >> Google Germany GmbH >> >> Erika-Mann-Straße 33 >> >> 80636 München >> >> Geschäftsführer: Paul Manicle, Liana Sebastian >> >> 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-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 on the web visit https://groups.google.com/d/msgid/v8-dev/0b2657ee-20a1-4530-b1ad-3e0aa22ef217n%40googlegroups.com.