You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
A racing collection can wrap a block's fragmented row count #92
When a collection starts, the collecting thread zeroes every other allocator's spaceEnd without a lock (WaitForSafe), so the allocation code must treat it as volatile. CallAlloc reads it twice when it adds an abandoned hole to the block's mFraggedRows: once for spaceEnd > spaceStart and again for spaceEnd - spaceStart. If the collector zeroes it in between, the difference is negative and the uint16 count wraps (seen as 65318 from a delta of -218). The count feeds the heap statistics that size working memory. test/gc_stress hits it on Linux in debug builds, where the row-count check traps.
Activity
Read an allocator's space end once when counting fragmented rows