Hacker News new | past | comments | ask | show | jobs | submit login

There's a major concurrency problem in Wine, the Windows emulator for Linux, related to this, which I encountered several years ago. Wine has its own set of DLLs which provide malloc-level services. When you grow a buffer, but it can't be grown in place, a new buffer has to be allocated and the old buffer copied. The trouble is that the copying takes place while holding a spinlock on the entire buffer pool. I had a multi-thread Rust program go into futex congestion and drop performance by two orders of magnitude due to this. 20 threads were all stuck compute-bound trying to acquire the lock. There are several layers of locking involved, and they fight.

Wine bug only; works OK on real Windows.[1][2] (bugs.winehq.org seems to be down)

[1] https://forum.winehq.org/viewtopic.php?t=37688

[2] https://bugs.winehq.org/show_bug.cgi?id=54979






Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: