Bug #53390 assert row/row0upd.c:1726 btr_pcur_restore_position(BTR_MODIFY_TREE, pcur, mtr)
Submitted: 3 May 2010 19:55 Modified: 4 May 2010 16:09
Reporter: Mikhail Izioumtchenko Email Updates:
Status: Duplicate Impact on me:
None 
Category:MySQL Server: InnoDB Plugin storage engine Severity:S3 (Non-critical)
Version:mysql-trunk-innodb OS:Any
Assigned to: Assigned Account CPU Architecture:Any

[3 May 2010 19:55] Mikhail Izioumtchenko
Description:
100503 12:01:57  InnoDB: Assertion failure in thread 1102518592 in file row/row0upd.c line 1726
InnoDB: Failing assertion: btr_pcur_restore_position(BTR_MODIFY_TREE, pcur, mtr)

when running an UPDATE on a BLOB field of an 8k compressed table.

Reproduces in the revision where bug#52964 is fixed.

How to repeat:
take the dataset for bug#52626 and run the following SQL:

update t1 set data=substring(data,1,length(data)-1);
commit;
update t1 set data = concat(data,data);

asserts with the followed stack:

 #0  0x0000003c1ae0b9b2 in pthread_kill () from /lib64/libpthread.so.0
 #1  0x000000000083ee3a in my_write_core (sig=6) at stacktrace.c:329
 #2  0x00000000005e055f in handle_segfault (sig=6) at mysqld.cc:2571
 #3  <signal handler called>
 #4  0x0000003c1a230265 in raise () from /lib64/libc.so.6
 #5  0x0000003c1a231d10 in abort () from /lib64/libc.so.6
 #6  0x00002aaaabca4cf7 in row_upd_clust_rec (node=0x7c06380, index=0x7bae3d8,
     thr=0x7c067b0, mtr=0x41b6ea10) at row/row0upd.c:1726
 #7  0x00002aaaabca5434 in row_upd_clust_step (node=0x7c06380, thr=0x7c067b0)
     at row/row0upd.c:1941
 #8  0x00002aaaabca5621 in row_upd (node=0x7c06380, thr=0x7c067b0)
     at row/row0upd.c:2018
 #9  0x00002aaaabca5900 in row_upd_step (thr=0x7c067b0) at row/row0upd.c:2149
 #10 0x00002aaaabc8f950 in row_update_for_mysql (mysql_rec=0x7c09468 "þx\\",
     prebuilt=0x7b888c8) at row/row0mysql.c:1382
 #11 0x00002aaaabc2a958 in ha_innodb::update_row (this=0x7c09240,
     old_row=0x7c09468 "þx\\", new_row=0x7c09430 "þx\\")
     at handler/ha_innodb.cc:5010
 #12 0x00000000006fe99d in handler::ha_update_row (this=0x7c09240,
     old_data=0x7c09468 "þx\\", new_data=0x7c09430 "þx\\") at handler.cc:4671
 #13 0x0000000000693609 in mysql_update (thd=0x7bfd550, table_list=0x7c03f38,
     fields=@0x7bff490, values=@0x7bff870, conds=0x0, order_num=0, order=0x0,
     limit=18446744073709551478, handle_duplicates=DUP_ERROR, ignore=false)
     at sql_update.cc:645
 #14 0x00000000005efe0d in mysql_execute_command (thd=0x7bfd550)
     at sql_parse.cc:3067
 #15 0x00000000005f5c90 in mysql_parse (thd=0x7bfd550,
     inBuf=0x7c03e40 "update t1 set data = concat(data,data)", length=38,
     found_semicolon=0x41b70f40) at sql_parse.cc:5971
 #16 0x00000000005f7173 in dispatch_command (command=COM_QUERY, thd=0x7bfd550,
     packet=0x7bffe11 "update t1 set data = concat(data,data)",
     packet_length=38) at sql_parse.cc:1233
 #17 0x00000000005f8306 in do_command (thd=0x7bfd550) at sql_parse.cc:874
 #18 0x00000000005e743d in handle_one_connection (arg=0x7bfd550)
     at sql_connect.cc:1127
 #19 0x0000003c1ae064a7 in start_thread () from /lib64/libpthread.so.0
 #20 0x0000003c1a2d3c2d in clone () from /lib64/libc.so.6

requires the fix for bug#52964 otherwise the first UPDATE fails.
[4 May 2010 15:50] Mikhail Izioumtchenko
improved fix to bug#52964 fixes this problem
[4 May 2010 15:51] Ryan Mack
Marko has committed a fix for this: http://lists.mysql.com/commits/107268
[4 May 2010 16:09] Calvin Sun
Make bug#53390 as a dup of bug#52964.
[6 May 2010 7:44] Marko Mäkelä
For the record, this bug was introduced by the original fix of Bug #52964 (http://lists.mysql.com/commits/106303). The fix of this bug (http://lists.mysql.com/commits/107268) only mentions Bug #52964, but should have mentioned this one too.