Skip to content

Conversation

thomasknauth
Copy link

This patch fixes a deadlock issues I ran into. In a nutshell, the main thread sends a signal to the report_thread. This can lead to a deadlock: report_thread acquires sb_histogram_t->lock, gets killed, later on the main thread calls report_cumulative() which will block indefinitely trying to acquire the lock again.

I can replicate the deadlock reliably in my environment with a version of sysbench compiled from source (say 8 out of 10 runs will deadlock). The system version (Ubuntu) of sysbench seems to lock up much less frequently. In any case, the issue remains that deadlock are possible given the right sequence of events.

Instead of killing the thread forcefully, this patch uses a variable to signal when the report thread shall break out of its reporting loop. This ensures that the report thread will properly release its locks.

The main thread sends a signal to the report_thread. This can lead to
a deadlock: report_thread acquires sb_histogram_t->lock, gets killed,
later on the main thread calls report_cumulative() which will block
indefinitely trying to acquire the lock again.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant