Bug #44158 | Double mutex locking can occur in Query Cache code, under certain conditions | ||
---|---|---|---|
Submitted: | 8 Apr 2009 16:46 | Modified: | 15 Apr 2009 14:38 |
Reporter: | SINISA MILIVOJEVIC | Email Updates: | |
Status: | Not a Bug | Impact on me: | |
Category: | MySQL Server: Query Cache | Severity: | S3 (Non-critical) |
Version: | 5.1, 6.0-bk | OS: | Any |
Assigned to: | Kristofer Pettersson | CPU Architecture: | Any |
Tags: | qc |
[8 Apr 2009 16:46]
SINISA MILIVOJEVIC
[15 Apr 2009 13:51]
Kristofer Pettersson
Sinisa: My comment was a bit generic in nature perhaps and I was mostly thinking of the embedded library. I think we spoke about this issue before and I still don't see the bug. If you look inside write_result_data you'll see that it has the same principles as append_result_data: <snip snip> my_bool success = allocate_data_chain(result_block, data_len, query_block, type == Query_cache_block::RES_BEG); if (success) { // It is success (nobody can prevent us write data) STRUCT_UNLOCK(&structure_guard_mutex); <snip snip> DBUG_RETURN(success); } <snip snip> As you can see the mutex is unlocked. A failure to unlock the mutex would most likely lead to a server crash when we try to lock the same mutex twice or possibly a dead lock. Did you see any evidence of this?