Bug #81674 | LeakSanitizer-enabled build fails to bootstrap server for MTR | ||
---|---|---|---|
Submitted: | 1 Jun 2016 11:12 | Modified: | 21 Jul 2016 13:22 |
Reporter: | Laurynas Biveinis (OCA) | Email Updates: | |
Status: | Verified | Impact on me: | |
Category: | MySQL Server: InnoDB storage engine | Severity: | S3 (Non-critical) |
Version: | 5.6.30, 5.6.31 | OS: | Any |
Assigned to: | CPU Architecture: | Any | |
Tags: | asan, bootstrap, lsan, mtr |
[1 Jun 2016 11:12]
Laurynas Biveinis
[1 Jun 2016 11:13]
Laurynas Biveinis
A 5.6-only issue; 5.5 and 5.7 bootstrap OK
[7 Jun 2016 9:39]
MySQL Verification Team
Hello Laurynas, Thank you for the report. Observed this with 5.6.31 source build. Thanks, Umesh
[7 Jun 2016 9:40]
MySQL Verification Team
Build log and test results
Attachment: 81674_5.6.31.build_log (application/octet-stream, text), 141.63 KiB.
[21 Jul 2016 13:22]
Laurynas Biveinis
The fix would be to backport [1]. Then, running MTR with LeakSanitiser uncovers a few other minor bugs. [1]: commit 30a08cf60cfa08655f553da2795b68eee8dba53c Author: Vasil Dimov <vasil.dimov@oracle.com> Date: Thu May 15 15:07:12 2014 +0300 Fix Bug#18253089 BUF_POOL->FLUSH_RBT IS CREATED WHEN RECOVERY IS NOT NEEDED, THEN NEVER FREED * recv_recovery_from_checkpoint_start() is only called from innobase_start_or_create_for_mysql() and recv_recovery_from_checkpoint_start() calls recv_sys_create()&recv_sys_init() but those two functions have already been called earlier in innobase_start_or_create_for_mysql(). Those two functions return immediately if recv_sys is created/initialized. From this follows that their invokations from recv_recovery_from_checkpoint_start() are noops and thus I am removing them. * The code used to initialize buf_pool->flush_rbt (buf_flush_init_flush_rbt()) from recv_sys_init(). Change this so that it is initialized directly from recv_recovery_from_checkpoint_start(). This is the only functional change in this patch - buf_pool->flush_rbt will now be initialized later in the startup code path. * The code used to free buf_pool->flush_rbt (buf_flush_free_flush_rbt()) from recv_sys_debug_free(). Change this so that the free is done from recv_recovery_from_checkpoint_finish(), which is the only caller of recv_sys_debug_free(). This is a noop, but made for consistency wrt where alloc/free is done - call buf_flush_init_flush_rbt() from recv_recovery_from_checkpoint_start() and buf_flush_free_flush_rbt() from recv_recovery_from_checkpoint_finish(). This way the code will be restored as of before annamalai.gurusami@oracle.com-20140210082850-vqlzadis1asdws0e (the fix of Bug#18144349 INNODB CANNOT USE THE DOUBLEWRITE BUFFER FOR THE FIRST PAGE OF SYSTEM TABLESPACE) wrt buf_pool->flush_rbt initialization. Approved by: Yasufumi (rb:5409)