Details
-
Bug
-
Status: Closed (View Workflow)
-
Critical
-
Resolution: Fixed
-
10.6.8, 10.6
Description
This issue was found while analysing MDEV-28800. When lock memory started occupying large amount of buffer pool we fail to terminate the transaction with ER_LOCK_TABLE_FULL. It eventually leads to a server crash with Innodb exiting with Fatal Error.
ib::fatal() << "Over 95 percent of the buffer pool is"
|
" occupied by lock heaps"
|
This is a regression looks to have been introduced in 10.6 by
commit b6a2472489accf0ae9ac3655ffe9b2997ab267ba
|
Author: Daniel Black <daniel@mariadb.org>
|
Date: Tue Feb 22 17:42:59 2022 +1100
|
|
MDEV-27891: SIGSEGV in InnoDB buffer pool resize
|
bool running_out() const
|
{
|
return !recv_recovery_is_on() &&
|
- UNIV_UNLIKELY(UT_LIST_GET_LEN(free) + UT_LIST_GET_LEN(LRU) <
|
- std::min(curr_size, old_size) / 4);
|
+ UT_LIST_GET_LEN(free) + UT_LIST_GET_LEN(LRU) <
|
+ n_chunks_new / 4 * chunks->size;
|
+ }
|
The integer division (n_chunks_new / 4) becomes zero whenever the total number of chunks are < 4 making the check completely ineffective for such cases. Also the check is inaccurate for larger chunks and needs to be corrected.
I will put forward a patch soon.
Attachments
Issue Links
- is caused by
-
MDEV-27891 Delayed SIGSEGV in buf_pool_t::resize on InnoDB buffer pool resize after or during DROP TABLE
-
- Closed
-
Activity
Field | Original Value | New Value |
---|---|---|
Fix Version/s | 10.6 [ 24028 ] | |
Labels | regression-10.6 |
Status | Open [ 1 ] | Confirmed [ 10101 ] |
Assignee | Debarun Banerjee [ JIRAUSER54513 ] | Marko Mäkelä [ marko ] |
Status | Confirmed [ 10101 ] | In Review [ 10002 ] |
Link |
This issue is caused by |
Assignee | Marko Mäkelä [ marko ] | Debarun Banerjee [ JIRAUSER54513 ] |
Status | In Review [ 10002 ] | Stalled [ 10000 ] |
Fix Version/s | 10.6.19 [ 29833 ] | |
Fix Version/s | 10.6 [ 24028 ] | |
Resolution | Fixed [ 1 ] | |
Status | Stalled [ 10000 ] | Closed [ 6 ] |
Fix Version/s | 10.11.9 [ 29834 ] | |
Fix Version/s | 11.1.6 [ 29835 ] | |
Fix Version/s | 11.2.5 [ 29836 ] | |
Fix Version/s | 11.4.3 [ 29837 ] |
Priority | Major [ 3 ] | Critical [ 2 ] |
Zendesk active tickets | 206179 |
The issue can be reproduced by the same test mentioned in MDEV-28800
Start server with --innodb_buffer_pool_size=20M
CREATE TABLE t1 (d DOUBLE) ENGINE=InnoDB;
INSERT INTO t1 VALUES (0x0061),(0x0041),(0x00E0),(0x00C0),(0x1EA3),(0x1EA2),(0x00E3),(0x00C3),(0x00E1),(0x00C1),(0x1EA1),(0x1EA0);
INSERT INTO t1 SELECT t1.* FROM t1,t1 t2,t1 t3,t1 t4,t1 t5,t1 t6;
Also, the mtr test in MDEV-34166 would be the easiest to test it once we have the bug merged to 10.6.
I have uploaded the patch for review.