| 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)
