Is that the exact implementation? v8::ArrayBuffer::Allocator is required to be thread-safe [1] as V8 potentially (depends on the platform implementation) offloads the freeing onto a different thread.
Cheers, -Michael [1] https://cs.chromium.org/chromium/src/v8/include/v8.h?dr=CSs&l=4269 On Thu, Mar 15, 2018 at 2:36 AM 'Kenton Varda' via v8-users < v8-users@googlegroups.com> 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. > -- -- 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.