Bug #40915 Events takes mutex in wrong order which can easily lead to deadlocks
| Submitted: | 21 Nov 2008 6:58 | Modified: | 21 Jul 2010 8:32 |
|---|---|---|---|
| Reporter: | Michael Widenius | Email Updates: | |
| Status: | Can't repeat | Impact on me: | |
| Category: | MySQL Server: General | Severity: | S1 (Critical) |
| Version: | 5.1 | OS: | Any |
| Assigned to: | Dmitry Shulga | CPU Architecture: | Any |
[21 Nov 2008 6:58]
Michael Widenius
[24 Nov 2008 13:49]
Konstantin Osipov
Hi Monty, what is wrong in this order? There does not seem to be any inter-dependences?
[24 Nov 2008 15:26]
Konstantin Osipov
locking diagram
Attachment: locking.jpg (image/jpeg, text), 17.19 KiB.
[24 Nov 2008 15:26]
Konstantin Osipov
Monty, the attached diagram has no cycles.
[25 Nov 2008 15:10]
Michael Widenius
event_scheduler are taking mutex in different order For example, in one case it's doing: mutex_lock(LOCK_event_metadata) ; mutex_lock(LOCK_schduler_state); In other cases: mutex_lock(LOCK_schduler_state); mutex_lock(LOCK_event_metadata); which leads to deadlock senarios
[20 Jan 2010 19:03]
Sven Sandberg
See also BUG#50483
[22 Feb 2010 17:34]
Philip Stoev
See bug #51160
[22 Feb 2010 17:35]
Philip Stoev
See also bug #51391
[4 Mar 2010 10:10]
Philip Stoev
IRC log with davi: Conversation with davi at 22/02/2010 19:31:48 on pstoev@10.100.1.29 (irc) (19:31:48) davi: hi philip, around? (19:31:52) pstoev: hello yes (19:32:36) davi: i see that you are reporting quite a few deadlocks involving event scheduler statements (19:33:22) pstoev: I recently reported one about SET GLOBAL EVENT SCHEDULER OFF | ON. I do not recall any others recently. (19:33:22) davi: for each of those, it would be nice if you could post a "ping" on Bug#40915 so we can track them. (19:33:54) pstoev: ok will do so (19:34:05) davi: i think i also saw 51391 (19:34:31) davi: its just so i can track the thing and later post about the difficult on fixing those.. (19:34:59) davi: it will be hard to fix :/.. there is a wrong lock order involving 4 or more mutexes in some cases (19:35:45) pstoev: oh (19:35:55) pstoev: ok I linked all those bugs together (19:36:06) davi: like: LOCK_event_metadata, LOCK_scheduler_state, LOCK_event_global_system variables.. so any concurrent workload that stresses those (LIKE, SET GLOBAL EVENT SCHEDULER ON/OFF) could easily trigger a deadlock (19:36:12) davi: ok, thanks! (19:36:51) pstoev: uh, not good (19:37:14) pstoev: I am sorry to hear that there is no easy solution -- I thought that swapping some internal event schedulers would be enough (19:37:26) pstoev: but I guess 4 separate bugs would mean that eventually this will be fixed (19:41:31) davi: thanks. it's not easy because the wrong orders are established in the sysvars code and the THD creating code, which are already quite hairy. i just hope concurrent event scheduler maintenance statements aren't very common :) (19:41:58) pstoev: it is a DoS vector, except that it requires SUPER
[25 Mar 2010 16:25]
John Embretsen
See also Bug#52367.
[21 Jul 2010 8:32]
Dmitry Shulga
The bug can not be reproduced in 5.5, most likely due to changes done in scope of the fix for Bug#51160. Manual checking and asserts in 5.1 suggest that the problem is more likely in the deadlock detector code, rather than in the implementation of Events.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.068 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.