Bug #79973 | blocks are definitely lost in row_vers_old_has_index_entry | ||
---|---|---|---|
Submitted: | 14 Jan 2016 2:57 | Modified: | 14 Jan 2016 22:45 |
Reporter: | Shaohua Wang | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: InnoDB storage engine | Severity: | S3 (Non-critical) |
Version: | 8.0.0 | OS: | Any |
Assigned to: | CPU Architecture: | Any |
[14 Jan 2016 2:57]
Shaohua Wang
[14 Jan 2016 3:03]
Shaohua Wang
Posted by developer: Thread 1: 264 bytes in 1 blocks are definitely lost in loss record 1 of 2 at 0x4C2E112: malloc (vg_replace_malloc.c:299) by 0x1C893BD: ut_allocator<unsigned char>::allocate(unsigned long, unsigned char const*, char const*, bool, bool) (ut0new.h:355) by 0x1F0E753: mem_heap_create_block_func(mem_block_info_t*, unsigned long, char const*, unsigned long, unsigned long) (memory.cc:308) by 0x1E71756: mem_heap_create_func(unsigned long, char const*, unsigned long, unsigned long) (mem0mem.ic:493) by 0x1E70E22: row_vers_old_has_index_entry(unsigned long, unsigned char const*, mtr_t*, dict_index_t*, dtuple_t const*, unsigned long, unsigned long) (row0vers.cc:788) by 0x1E2C37A: row_purge_poss_sec(purge_node_t*, dict_index_t*, dtuple_t const*) (row0purge.cc:272) by 0x1E307AD: row_purge_remove_sec_if_poss_leaf(purge_node_t*, dict_index_t*, dtuple_t const*) (row0purge.cc:492) by 0x1E2F76F: row_purge_remove_sec_if_poss(purge_node_t*, dict_index_t*, dtuple_t const*) (row0purge.cc:590) by 0x1E2ECA0: row_purge_del_mark(purge_node_t*) (row0purge.cc:660) by 0x1E2E5BA: row_purge_record_func(purge_node_t*, unsigned char*, que_thr_t const*, bool) (row0purge.cc:986) by 0x1E2CACF: row_purge(purge_node_t*, unsigned char*, que_thr_t*) (row0purge.cc:1048) by 0x1E2C94B: row_purge_step(que_thr_t*) (row0purge.cc:1127) by 0x1D9D03B: que_thr_step(que_thr_t*) (que0que.cc:1053) by 0x1D9C228: que_run_threads_low(que_thr_t*) (que0que.cc:1113) by 0x1D9BFC2: que_run_threads(que_thr_t*) (que0que.cc:1153) by 0x1E7F625: srv_task_execute() (srv0srv.cc:2404) 1,184 bytes in 1 blocks are definitely lost in loss record 2 of 2 at 0x4C2E112: malloc (vg_replace_malloc.c:299) by 0x1C893BD: ut_allocator<unsigned char>::allocate(unsigned long, unsigned char const*, char const*, bool, bool) (ut0new.h:355) by 0x1F0E753: mem_heap_create_block_func(mem_block_info_t*, unsigned long, char const*, unsigned long, unsigned long) (memory.cc:308) by 0x1E71756: mem_heap_create_func(unsigned long, char const*, unsigned long, unsigned long) (mem0mem.ic:493) by 0x1E70CD6: row_vers_old_has_index_entry(unsigned long, unsigned char const*, mtr_t*, dict_index_t*, dtuple_t const*, unsigned long, unsigned long) (row0vers.cc:771) by 0x1E2C37A: row_purge_poss_sec(purge_node_t*, dict_index_t*, dtuple_t const*) (row0purge.cc:272) by 0x1E307AD: row_purge_remove_sec_if_poss_leaf(purge_node_t*, dict_index_t*, dtuple_t const*) (row0purge.cc:492) by 0x1E2F76F: row_purge_remove_sec_if_poss(purge_node_t*, dict_index_t*, dtuple_t const*) (row0purge.cc:590) by 0x1E2ECA0: row_purge_del_mark(purge_node_t*) (row0purge.cc:660) by 0x1E2E5BA: row_purge_record_func(purge_node_t*, unsigned char*, que_thr_t const*, bool) (row0purge.cc:986) by 0x1E2CACF: row_purge(purge_node_t*, unsigned char*, que_thr_t*) (row0purge.cc:1048) by 0x1E2C94B: row_purge_step(que_thr_t*) (row0purge.cc:1127) by 0x1D9D03B: que_thr_step(que_thr_t*) (que0que.cc:1053) by 0x1D9C228: que_run_threads_low(que_thr_t*) (que0que.cc:1113) by 0x1D9BFC2: que_run_threads(que_thr_t*) (que0que.cc:1153) by 0x1E7F625: srv_task_execute() (srv0srv.cc:2404)
[14 Jan 2016 3:30]
Shaohua Wang
Posted by developer: We definitely forgot to free heaps when INNODB_DD_VC_SUPPORT is defined in row_vers_old_has_index_entry()
[14 Jan 2016 22:45]
Daniel Price
Fixed as of the upcoming 5.8.0 release, and here's the changelog entry: Blocks were lost in row_vers_old_has_index_entry() due to unfreed heaps.
[18 Jun 2016 21:35]
Omer Barnir
Posted by developer: Reported version value updated to reflect release name change from 5.8 to 8.0