[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] thread-pool.c race condition?
From: |
Stefan Hajnoczi |
Subject: |
[Qemu-devel] thread-pool.c race condition? |
Date: |
Thu, 2 Apr 2015 17:26:02 +0100 |
John Snow has reported that qemu-io can hang when the host is under
heavy load. He made the following observations in gdb:
1. The program is sitting in aio_poll() (called by bdrv_prwv_co())
waiting for request completion.
2. The thread pool has a ThreadPoolElement with ->state == THREAD_DONE.
The ThreadPoolElement should have been reaped by
thread_pool_completion_bh() and its callback invoked. For some reason
this didn't happen and the program is blocked in poll(2) waiting.
This suggests a race condition in thread-pool.c or qemu_bh_schedule()
(used to complete ThreadPoolElement from a QEMU event loop).
I don't have a good theory why this happens yet. Just wanted to share
in case someone else hits this problem.
Stefan
- [Qemu-devel] thread-pool.c race condition?,
Stefan Hajnoczi <=