Assertion `pageno < ((1ULL) << 40)' failed at ma_pagecache.c:3438: pagecache_read or table corruption on INSERT into a ucs2 table
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
MariaDB |
Fix Released
|
Undecided
|
Michael Widenius |
Bug Description
#8 0x4023f014 in __assert_fail () from /lib/libc.so.6
#9 0x085fc17a in pagecache_read (pagecache=
pageno=
type=
at ma_pagecache.c:3438
#10 0x0863a3b6 in _ma_fetch_keypage (page=0x4894d854, info=0x9471b18,
keyinfo=
level=3, buff=0x4894ae80 "", return_buffer=0 '\000') at ma_page.c:109
#11 0x08601ab0 in w_search (info=0x9471b18, comp_flag=131076, key=0x4894e3dc,
page_
insert_last=1 '\001') at ma_write.c:632
#12 0x086015ea in _ma_ck_
root=
#13 0x0860147b in _ma_ck_
root=0x946ca30, comp_flag=131076) at ma_write.c:491
#14 0x086012eb in _ma_ck_write_btree (info=0x9471b18, key=0x4894e3dc)
at ma_write.c:451
#15 0x0860125a in _ma_ck_write (info=0x9471b18, key=0x4894e3dc)
at ma_write.c:436
#16 0x08600b85 in maria_write (info=0x9471b18, record=0x946afc0 "\376@\006")
at ma_write.c:189
#17 0x08595998 in ha_maria::write_row (this=0x946aac0,
buf=0x946afc0 "\376@\006") at ha_maria.cc:1135
#18 0x08438821 in handler:
buf=0x946afc0 "\376@\006") at handler.cc:4918
#19 0x0838b2b5 in write_record (thd=0x93eaa98, table=0x9495148,
info=
#20 0x08389320 in mysql_insert (thd=0x93eaa98, table_list=
fields=..., values_list=..., update_fields=..., update_values=...,
duplic=
#21 0x082e5b87 in mysql_execute_
#22 0x082ee463 in mysql_parse (thd=0x93eaa98,
rawbuf=
found_
#23 0x082e0e66 in dispatch_command (command=COM_QUERY, thd=0x93eaa98,
packet=
at sql_parse.cc:1227
#24 0x082e0310 in do_command (thd=0x93eaa98) at sql_parse.cc:922
#25 0x082dd2d5 in handle_
#26 0x400c2b25 in start_thread () from /lib/libpthread
bzr version-info
revision-id: <email address hidden>
date: 2011-12-16 08:05:14 -0800
build-date: 2011-12-17 23:21:13 +0400
revno: 3358
branch-nick: maria-5.3
Also crashes on 5.1.60, 5.2.10, 5.3.2 releases.
Possibly related to bug#905716, as again I could only reproduce it so far on a table with charset ucs2.
Unlike the other bug, this one only crashed on my 32-bit machine, but not on a 64-bit box (both SUSE 11.3). However, on the 64-bit it reaches the CHECK TABLE, which shows that the table got corrupted. Same behavior on Windows 32-bit.
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check error Found key marked for transid on page that is not marked for transid at: 8192
test.t1 check error Corrupt
Test case:
CREATE TABLE t1 (a VARCHAR(
ENGINE=Aria CHARACTER SET ucs2;
INSERT INTO t1 VALUES (REPEAT('abc ',200));
CHECK TABLE t1;
Here is the last enter into pagecache_read from the debug output, which shows the very bad pageno value:
w_search: enter: page: 4294967295
_ma_fetch_keypage: enter: page: 4294967295
pagecache_read: enter: fd: 51 page: 2251799813685247 buffer: 0x4894ae80 level: 3 t:LSN (1)free -> write->write -> write unpinned -> pinned->pinned -> pinned