Bug #79545 When no free cell found, sync_array_reserve_cell should call sync_array_exit.
Submitted: 7 Dec 2015 12:17 Modified: 24 Aug 2018 13:23
Reporter: Takanori Sejima Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: InnoDB storage engine Severity:S3 (Non-critical)
Version:5.6 OS:Any
Assigned to: CPU Architecture:Any

[7 Dec 2015 12:17] Takanori Sejima
Description:
When innodb_sync_array_size is greater than 1, might not found free cell at sync_array_reserve_cell().
However, when did not find a free cell, sync_array_exit() is not called, and may occur deadlock.

How to repeat:
see the code.
https://github.com/mysql/mysql-server/blob/d17ba5d5a98565d1ea1e8c56665bac0957900eee/storag...

Suggested fix:
call sync_array_exit() if no free cell found.

workaround: innodb_sync_array_size do not change from default value(1).
[24 Aug 2018 13:23] MySQL Verification Team
Hi,

Thank you for your bug report.

What you report is quite true and indeed that function call is missing in 5.6.

However, this bug is fixed in one of the releases of 5.7. If you look at the same code in the latest 5.7, you will notice that it is completely rewritten. 

This fix was deemed too big and risky for 5.6, which is why the patch will not be ported back to 5.6.