Hi,

GetHeapStatistics needs to be used from the main thread and there was a
feature request filed for this here:
https://issues.chromium.org/u/1/issues/345822325. There is also a
workaround discussed in there using RequestInterrupt.

Best,
Dominik

On Mon, Dec 16, 2024 at 11:41 PM 'Elliott Brossard' via v8-dev <
[email protected]> wrote:

> Is there a thread-safe way to get the current heap usage for an isolate?
> What I observed is that if one thread is performing an allocation,
> attempting to call v8::Isolate::getHeapUsage from another triggers a data
> race. Apologies if I missed it, but I didn't see anything relevant in the
> documentation or past discussion threads. The use case is that I'd like to
> be able to track heap usage over time as a long-running call into a
> JavaScript function executes. The output I get (under a recent Clang with
> TSan) is of the form below. Thanks in advance!
>
> 2024-12-16 20:49:36,949     WARNING: ThreadSanitizer: data race (pid=21642)
> 2024-12-16 20:49:36,949     Write of size 8 at 0x725000002be8 by main
> thread (mutexes: write M0):
> 2024-12-16 20:49:36,949     #0
> v8::internal::LinearAllocationArea::IncrementTop(unsigned long) <null>
> (libexternal_Sv8_Slibv8_Ulibshared_Uicu.so+0x36fed5d)
> 2024-12-16 20:49:36,949     #1
> v8::internal::SpaceWithLinearArea::AllocateFastUnaligned(int,
> v8::internal::AllocationOrigin) <null>
> (libexternal_Sv8_Slibv8_Ulibshared_Uicu.so+0x384ab82)
> 2024-12-16 20:49:36,949     #2
> v8::internal::SpaceWithLinearArea::AllocateRaw(int,
> v8::internal::AllocationAlignment, v8::internal::AllocationOrigin) <null>
> (libexternal_Sv8_Slibv8_Ulibshared_Uicu.so+0x384a807)
> 2024-12-16 20:49:36,949     #3 v8::internal::AllocationResult
> v8::internal::HeapAllocator::AllocateRaw<(v8::internal::AllocationType)2>(int,
> v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) <null>
> (libexternal_Sv8_Slibv8_Ulibshared_Uicu.so+0x3849227)
> 2024-12-16 20:49:36,949     #4
> v8::internal::HeapAllocator::AllocateRaw(int, v8::internal::AllocationType,
> v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) <null>
> (libexternal_Sv8_Slibv8_Ulibshared_Uicu.so+0x3848498)
> 2024-12-16 20:49:36,949     #5
> v8::internal::HeapAllocator::AllocateRawWithLightRetrySlowPath(int,
> v8::internal::AllocationType, v8::internal::AllocationOrigin,
> v8::internal::AllocationAlignment) <null>
> (libexternal_Sv8_Slibv8_Ulibshared_Uicu.so+0x39aae43)
> 2024-12-16 20:49:36,949     #6
> v8::internal::HeapAllocator::AllocateRawWithRetryOrFailSlowPath(int,
> v8::internal::AllocationType, v8::internal::AllocationOrigin,
> v8::internal::AllocationAlignment) <null>
> (libexternal_Sv8_Slibv8_Ulibshared_Uicu.so+0x39ab103)
> ...
> 2024-12-16 20:49:36,951     Previous read of size 8 at 0x725000002be8 by
> thread T17 (mutexes: write M1):
> 2024-12-16 20:49:36,951     #0 v8::internal::LinearAllocationArea::top()
> const <null> (libexternal_Sv8_Slibv8_Ulibshared_Uicu.so+0x36fd936)
> 2024-12-16 20:49:36,951     #1
> v8::internal::PagedSpaceBase::CommittedPhysicalMemory() const <null>
> (libexternal_Sv8_Slibv8_Ulibshared_Uicu.so+0x3b4c1c1)
> 2024-12-16 20:49:36,951     #2
> v8::internal::Heap::CommittedPhysicalMemory() <null>
> (libexternal_Sv8_Slibv8_Ulibshared_Uicu.so+0x390d3a1)
> 2024-12-16 20:49:36,951     #3
> v8::Isolate::GetHeapStatistics(v8::HeapStatistics*) <null>
> (libexternal_Sv8_Slibv8_Ulibshared_Uicu.so+0x2ec38ad)
> ...
>
> --
> --
> v8-dev mailing list
> [email protected]
> 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 [email protected].
> To view this discussion visit
> https://groups.google.com/d/msgid/v8-dev/c9c8701e-245e-4de1-a347-d7a33003f869n%40googlegroups.com
> <https://groups.google.com/d/msgid/v8-dev/c9c8701e-245e-4de1-a347-d7a33003f869n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
-- 
v8-dev mailing list
[email protected]
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 [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/v8-dev/CAEf_%3D5BAAZcN0617%3DVh0-SFZeCiAi_1V8ZjmpP5S64qgwy_Ciw%40mail.gmail.com.

Reply via email to