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 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/c9c8701e-245e-4de1-a347-d7a33003f869n%40googlegroups.com.