Bug #40311 Assert in MARIA_RECORD_POS during pushbuild 2 test
Submitted: 24 Oct 2008 14:58 Modified: 7 May 2009 8:17
Reporter: Oleksandr Byelkin Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Maria storage engine Severity:S2 (Serious)
Version:5.1-maria OS:Any
Assigned to: CPU Architecture:Any

[24 Oct 2008 14:58] Oleksandr Byelkin
Description:
#2  0x00007f6e451deb1f in __assert_fail () from /lib/libc.so.6
#3  0x000000000089c77f in delete_head_or_tail (info=0x7f6e3c144ef8, page=318, record_number=32767, head=0 '\0', from_update=0 '\0') at ma_blockrec.h:124
#4  0x000000000089d2d3 in _ma_write_abort_block_record (info=0x7f6e3c144ef8) at ma_blockrec.c:3498
#5  0x00000000008aac1a in maria_write (info=0x7f6e3c144ef8, record=0x7f6e3c169260 "") at ma_write.c:381
#6  0x000000000087c1e7 in ha_maria::write_row (this=0x7f6e3c1730e8, buf=0x7f6e3c169260 "") at ha_maria.cc:968
#7  0x00000000006f619d in handler::ha_write_row (this=0x7f6e3c1730e8, buf=0x7f6e3c169260 "") at handler.cc:4470
#8  0x00000000006f9766 in ha_partition::update_row (this=0x7f6e3c168f90, old_data=0x7f6e3c169290 "", new_data=0x7f6e3c169260 "") at ha_partition.cc:2991
#9  0x00000000006f60e9 in handler::ha_update_row (this=0x7f6e3c168f90, old_data=0x7f6e3c169290 "", new_data=<value optimized out>) at handler.cc:4491
#10 0x0000000000697ffb in mysql_update (thd=0x252c438, table_list=0x22a9398, fields=@0x252e438, values=@0x252e810, conds=0x22a9a20, order_num=<value optimized out>, order=0x0, limit=<value optimized out>, handle_duplicates=DUP_ERROR, ignore=false) at sql_update.cc:638
#11 0x00000000006118e6 in mysql_execute_command (thd=0x252c438) at sql_parse.cc:2933
#12 0x0000000000616530 in mysql_parse (thd=0x252c438, inBuf=0x22a91a0 "UPDATE `table100_maria_compressed_key_pk_parts_2_int_autoinc` AS X SET `pk` = 'who' WHERE X . `char` < '2004-06-21 00:19:29' LIMIT 3", length=132, found_semicolon=0x412fbe18) at sql_parse.cc:5745

How to repeat:
clone & build mysql-maria
clone mysql-test-extra-6.0
cd mysql-test-extra-6.0/mysql-test/gentest
./runall.pl --basedir=<path to mysql-maria build> --engine=Maria  --gendata=conf/maria.zz
--grammar=conf/maria_dml_alter.yy  --queries=100000 --duration=1200

it maybe need 2-3 runs to hit the assert. To avoid false alarms it have sens to apply fix for BUG#40308 (otherwise it can hang up more frequent then assert)
[24 Nov 2008 8:48] Guilhem Bichot
Happened again recently:
5.1-maria, push of:
guilhem@mysql.co...
2008-11-20 15:52:38 
test maria_dml_alter
http://clustra.norway.sun.com/~bteam/pb2/web.py?action=archive_download&archive_id=137808&...:
You will see below that UPDATE does call maria_write() and the reason is that it's a partitioned table, where the UPDATE is probably moving the record from one partition to another (so, delete_row in one, write_row in the other).
#9 0x085b3670 in ma_recordpos (page=318, dir_entry=32767) at ma_blockrec.h:124 #10 0x085b7d10 in delete_head_or_tail (info=0xa79e640, page=318,
    record_number=32767, head=0 '\0', from_update=0 '\0') at ma_blockrec.c:3954
#11 0x085b6cdd in _ma_write_abort_block_record (info=0xa79e640)
    at ma_blockrec.c:3498
#12 0x085c5dd9 in maria_write (info=0xa79e640, record=0xa8ba170 "")
    at ma_write.c:382
#13 0x08589af2 in ha_maria::write_row (this=0xa57ffa8, buf=0xa8ba170 "")
    at ha_maria.cc:968
#14 0x0836d379 in handler::ha_write_row (this=0xa57ffa8, buf=0xa8ba170 "")
    at handler.cc:4470
#15 0x083794b5 in ha_partition::update_row (this=0xa8b9e68,
    old_data=0xa8ba1a0 "", new_data=0xa8ba170 "") at ha_partition.cc:2991
#16 0x0836d2bd in handler::ha_update_row (this=0xa8b9e68,
    old_data=0xa8ba1a0 "", new_data=0xa8ba170 "") at handler.cc:4491
#17 0x082fe8c6 in mysql_update (thd=0xa765398, table_list=0xa59d380,
    fields=@0xa76680c, values=@0xa766a20, conds=0xa59d7e0, order_num=0, 
    order=0x0, limit=3, handle_duplicates=DUP_ERROR, ignore=false)
    at sql_update.cc:638
#18 0x0825c0f9 in mysql_execute_command (thd=0xa765398) at sql_parse.cc:2933 #19 0x082628f3 in mysql_parse (thd=0xa765398,
    inBuf=0xa59d128 "UPDATE `table100_maria_compressed_key_pk_parts_2_int_autoinc` AS X SET `pk` = 'who' WHERE X . `char` < '2004-06-21 00:19:29'  LIMIT 3", 
    length=133, found_semicolon=0xb207426c) at sql_parse.cc:5745
#20 0x08263476 in dispatch_command (command=COM_QUERY, thd=0xa765398,
    packet=0xa599109 "UPDATE `table100_maria_compressed_key_pk_parts_2_int_autoinc` AS X SET `pk` = 'who' WHERE X . `char` < '2004-06-21 00:19:29'  LIMIT 3", 
    packet_length=133) at sql_parse.cc:1160
[24 Nov 2008 20:06] Guilhem Bichot
Precision on previous post: it was
5.1-maria, push of:
guilhem@mysql.co... 2008-11-20 15:52:38 
machine "linux x86 sysqa"
test "maria_dml_alter"
http://clustra.norway.sun.com/~bteam/pb2/web.py?action=archive_download&archive_id=137808&...:
[1 Dec 2008 8:50] Guilhem Bichot
and again in pushbuild2:
push: serg@mysql.com-2... 2008-11-29 00:40:55 
machine: linux x86 sysqa
test: maria_dml_alter
http://clustra.norway.sun.com/~bteam/pb2/web.py?action=archive_download&archive_id=155679&...
[22 Dec 2008 0:20] Michael Widenius
Pushed into MySQL-5.1-Maria tree
[17 Feb 2009 11:46] Bugs System
Pushed into 6.0.10-alpha (revid:serg@mysql.com-20090217113558-vpsqsyjule7nz0gk) (version source revid:guilhem@mysql.com-20090213163054-rsg204z5qzcekbfe) (merge vers: 6.0.10-alpha) (pib:6)
[7 May 2009 8:17] MC Brown
Internal only. No changelog entry required.