https://bugs.winehq.org/show_bug.cgi?id=54979
--- Comment #4 from John Nagle nagle@animats.com --- Any progress on this?
What usually sets this off is growing an array. That calls realloc, and attempts to grow the buffer in place. If that's not possible due to a lack of free space after the buffer, the realloc code allocates a new buffer, copies the data, and releases the old buffer. The bottleneck seems to be at the point where the old buffer is released. That's somewhat unexpected.
A test case might involve a large number of compute-bound threads, all growing arrays slowly.