Have you compiled with ASAN? Presumably if you're deleting more memory than you have, that would fire. Just for debugging this, you could even put in a map of allocated addresses and sizes and just track what requests come in that don't seem to match.
It seems like requests that would cause this to go negative would end up sticking out like a sore thumb. On Wednesday, March 14, 2018 at 6:36:33 PM UTC-7, Kenton Varda wrote: > > Hi v8-users, > > We have an ArrayBufferAllocator implementation that counts how much memory > has been allocated. It basically looks like this: > > class AllocatorImpl final: public v8::ArrayBuffer::Allocator { > > public: > > AllocatorImpl(): allocated(0) {} > > ~AllocatorImpl(); > > > inline size_t getMemoryUsage() const { return allocated; } > > > void* Allocate(size_t length) { > > allocated += length; > > return calloc(length, 1); > > } > > void* AllocateUninitialized(size_t length) { > > allocated += length; > > return malloc(length); > > } > > void Free(void* data, size_t length) { > > allocated -= length; > > free(data); > > } > > > private: > > size_t allocated; > > }; > > > We're observing something strange: Sometimes (very rarely!), the > `allocated` value drops below zero and wraps around, apparently indicating > that V8 has Free()'d more than it Allocate()ed. However, there don't seem > to be any issues with double-frees or freeing an invalid pointer. > > Any idea what could lead to this? Is it possible for V8 to pass a > different `legth` value to Free() than it passed to Allocate()? > > Unfortunately I have no idea how to reproduce this reliably. It only > happens very occasionally in production. :/ > > -Kenton > -- -- v8-users mailing list v8-users@googlegroups.com http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.