buf_LRU_free_page() crashes at !buf_page_hash_get_low( buf_pool, b->space, b->offset, fold)
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Percona Server moved to https://jira.percona.com/projects/PS |
Fix Released
|
High
|
Laurynas Biveinis | ||
5.5 |
Invalid
|
High
|
Unassigned | ||
5.6 |
Fix Released
|
High
|
Laurynas Biveinis |
Bug Description
2014-11-22 10:31:53 7fcbe6ffd700 InnoDB: Assertion failure in thread 140513730615040 in file buf0lru.cc line 2079
InnoDB: Failing assertion: !buf_page_
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://
InnoDB: about forcing recovery.
10:31:53 UTC - mysqld got signal 6 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help
diagnose the problem, but since we have already crashed,
something is definitely wrong and this may fail.
Please help us make Percona Server better by reporting any
bugs at http://
key_buffer_
read_buffer_
max_used_
max_threads=20002
thread_count=352
connection_
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_
Hope that's ok; if not, decrease some variables in the equation.
Thread pointer: 0x0
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 0 thread_stack 0x40000
/usr/sbin/
/usr/sbin/
/lib/x86_
/lib/x86_
/lib/x86_
/usr/sbin/
/usr/sbin/
/usr/sbin/
/usr/sbin/
/lib/x86_
/lib/x86_
Related branches
- Sergei Glushchenko (community): Approve (g2)
tags: | added: i46600 |
tags: |
added: i48376 removed: i46600 |
summary: |
- Percona Server 5.6.20-68.0-657.precise crashes in file buf0lru.cc line - 2079 + buf_LRU_free_page() crashes at !buf_page_hash_get_low( buf_pool, + b->space, b->offset, fold) |
This is caused by a race condition between purge (Thread 53) and
LRU flushing (Thread 1).
A plausible sequence leading to the crash:
Thread 1 calls buf_LRU_ free_page( bpage, false). bpage is an block_remove_ hashed( bpage, false), which
uncompressed frame of a compressed page. The code takes the page
hash lock, calls buf_LRU_
removes the page from the page hash and releases the hash lock.
Then thread 53 takes the hash lock and calls buf_pool_watch_set
for the same page. It does not find it in the page hash, unlocks
the hash lock, locks all the hash locks, inserts a page into page
hash, unlocks all but the original hash lock.
Then thread 1 buf_LRU_free_page takes hash lock and the page
mutex, finds the page in page_hash, crashes.
Does not happen in upstream because there buf_pool_watch_set LRU_free_ page hold the buffer pool mutex throughout the race
acquires the buffer pool mutex, rechecks page hash, and
buf_
window.