Bug #47774 InnoDB: Assertion failure in thread 1769970576 in file row/row0mysql.c line 1355

Submitted: 1 Oct 2009 21:55 Modified: 12 Nov 2009 12:00
Reporter: Patrick Crews Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Partitions Severity:S3 (Non-critical)
Version:5.5 WL#3352 OS:Any
Assigned to: Mikael Ronström CPU Architecture:Any
Tags: crashing bug, innodb, partitioning, RANGE COLUMN_LIST, UPDATE

[1 Oct 2009 21:55] Patrick Crews
Description:
This query:
UPDATE `PP_G` SET `varchar_5` = 'c' WHERE ( `PP_G` . `varchar_5` > 'f' )

On an Innodb table, partitioned by RANGE COLUMN_LIST crashed as follows (partial output, full text attached as separate file)

This does *not* fail on MyISAM.  I also could not duplicate this failure when I tried using 10 rows, but that is likely luck of the random numbers : )

091002  0:00:48 [Note] <path>/mysql-5.1/sql/mysqld: ready for connections.
Version: '5.4.3-beta-gcov-debug-log'  socket: '<path>/mysql-5.1/mysql-test/var/tmp/master.sock'  port: 19306  Source distribution
091002  0:01:06  InnoDB: Assertion failure in thread 1769970576 in file row/row0mysql.c line 1355
InnoDB: Failing assertion: node->pcur->rel_pos == BTR_PCUR_ON
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
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://dev.mysql.com/doc/refman/5.1/en/forcing-recovery.html
InnoDB: about forcing recovery.
091002  0:01:06 - mysqld got signal 6 ;

<snip>
# 17:01:09 Thread 1 (process 23956):
# 17:01:09 #0  0xb7fac430 in __kernel_vsyscall ()
# 17:01:09 #1  0xb7f8f1c8 in pthread_kill () from /lib/tls/i686/cmov/libpthread.so.0
# 17:01:09 #2  0x08de4e4f in my_write_core (sig=6) at stacktrace.c:310
# 17:01:09 #3  0x0840befc in handle_segfault (sig=6) at mysqld.cc:2569
# 17:01:09 #4  <signal handler called>
# 17:01:09 #5  0xb7fac430 in __kernel_vsyscall ()
# 17:01:09 #6  0xb7dd66d0 in raise () from /lib/tls/i686/cmov/libc.so.6
# 17:01:09 #7  0xb7dd8098 in abort () from /lib/tls/i686/cmov/libc.so.6
# 17:01:09 #8  0x08b10a36 in row_update_for_mysql (mysql_rec=0xd469c70 "\021?", prebuilt=0xd483170) at row/row0mysql.c:1355
# 17:01:09 #9  0x08a4d052 in ha_innobase::update_row (this=0xd480720, old_row=0xd469c70 "\021?", new_row=0xd469c28 "\021?") at handler/ha_innodb.cc:4663
# 17:01:09 #10 0x0878b533 in handler::ha_update_row (this=0xd480720, old_data=0xd469c70 "\021?", new_data=0xd469c28 "\021?") at handler.cc:4690
# 17:01:09 #11 0x087b0373 in ha_partition::update_row (this=0xd4695a0, old_data=0xd469c70 "\021?", new_data=0xd469c28 "\021?") at ha_partition.cc:3090
# 17:01:09 #12 0x0878b533 in handler::ha_update_row (this=0xd4695a0, old_data=0xd469c70 "\021?", new_data=0xd469c28 "\021?") at handler.cc:4690
# 17:01:09 #13 0x0863d305 in mysql_update (thd=0xd3ee750, table_list=0xd40c820, fields=@0xd3efb84, values=@0xd3efda0, conds=0xd40cc70, order_num=0, order=0x0, 
# 17:01:09     limit=18446744073709551590, handle_duplicates=DUP_ERROR, ignore=false, found_return=0x697f86a0, updated_return=0x697f8698) at sql_update.cc:649
# 17:01:09 #14 0x08448cd4 in mysql_execute_command (thd=0xd3ee750) at sql_parse.cc:3057
# 17:01:09 #15 0x0845f33f in mysql_parse (thd=0xd3ee750, inBuf=0xd40c708 "UPDATE `PP_G` SET `varchar_5` = 'c' WHERE ( `PP_G` . `varchar_5` > 'f' )", length=72, 
# 17:01:09     found_semicolon=0x697f9054) at sql_parse.cc:6002
# 17:01:09 #16 0x08461ae4 in dispatch_command (command=COM_QUERY, thd=0xd3ee750, 
# 17:01:09     packet=0xd400691 "UPDATE `PP_G` SET `varchar_5` = 'c' WHERE ( `PP_G` . `varchar_5` > 'f' )", packet_length=72) at sql_parse.cc:1222
# 17:01:09 #17 0x08465739 in do_command (thd=0xd3ee750) at sql_parse.cc:855
# 17:01:09 #18 0x0842a3bf in handle_one_connection (arg=0xd3ee750) at sql_connect.cc:1131
# 17:01:09 #19 0xb7f8a4ff in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
# 17:01:09 #20 0xb7e8f49e in clone () from /lib/tls/i686/cmov/libc.so.6
# 17:01:09 The last 100 lines from <path>/mysql-5.0/mysql-test/var/master-data/../log/master.err :
CURRENT_TEST: alias
091002  0:00:52 [Warning] <path>/mysql-5.0/sql/mysqld: unknown variable 'loose-falcon-debug-mask=2'
InnoDB: The first specified data file ./ibdata1 did not exist:
InnoDB: a new database to be created!
091002  0:00:52  InnoDB: Setting file ./ibdata1 size to 10 MB
InnoDB: Database physically writes the file full: wait...
091002  0:00:52  InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 5 MB
InnoDB: Database physically writes the file full: wait...
091002  0:00:52  InnoDB: Log file ./ib_logfile1 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile1 size to 5 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: Creating foreign key constraint system tables
InnoDB: Foreign key constraint system tables created
091002  0:00:53  InnoDB: Started; log sequence number 0 0
091002  0:00:53 [Note] <path>/mysql-5.0/sql/mysqld: ready for connections.
Version: '5.0.87-debug-log'  socket: '<path>/mysql-5.0/mysql-test/var/tmp/master.sock'  port: 19308  Source distribution
# 17:01:09 datadir is <path>/mysql-5.0/mysql-test/var/master-data/
# 17:01:09 Core file appears to be 
"<path>/rqg/mysql-test/gentest/" is not a core dump: Is a directory
No stack.
# 17:01:09 
"<path>/rqg/mysql-test/gentest/" is not a core dump: Is a directory
<path>/rqg/mysql-test/gentest/backtrace-all.gdb:1: Error in sourced command file:
No registers.
# 17:01:10 
# 17:01:10 Test completed with failure status 101.
# 17:01:10 gentest.pl exited with exit status 101
Thu Oct  1 17:01:10 2009 [23794] ./runall.pl will exit with exit status 101

How to repeat:
MTR test case:
./mtr --mysqld=--loose-innodb --record <whatever_you_name_the_test>
My apologies for this being kind of messy.  RQG query simplification was giving me troubles on this.
However, I have verified that you can observe the crash with this as a .test file.

I had to attach the test as a separate file due to length restrictions.

Suggested fix:
Ensure crash-free query processing.
[1 Oct 2009 21:59] Patrick Crews
Full RQG-generated crash output

Attachment: bug47774_crash_output.txt (text/plain), 32.88 KiB.

[1 Oct 2009 22:04] Patrick Crews
Full RQG-generated crash output

Attachment: bug47774_crash_output.txt (text/plain), 32.88 KiB.

[1 Oct 2009 22:05] Patrick Crews
MTR test case for the crash

Attachment: bug47774_test.txt (text/plain), 9.85 KiB.

[5 Nov 2009 14:46] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/89482

2924 Mikael Ronstrom	2009-11-05
      BUG#48447, BUG#48161, fixed a regression from fix of BUG#6045, where binary collations can use indexes/partition pruning for cases using equality conditions, however it cannot be used for any other condition like <, >, <=, >=, <>, also added test case for verification of BUG#47774 in this patch
[10 Nov 2009 18:29] Omer Barnir
Issue was wrongly classified as a 5.1 issue - removing SR51MRU and changing SRMRTBD to SR55MR
[11 Nov 2009 6:48] Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20091110093407-rw5g8dys2baqkt67) (version source revid:alik@sun.com-20091110083317-h00x61ugz9fxhdod) (merge vers: 6.0.14-alpha) (pib:13)
[12 Nov 2009 8:19] Bugs System
Pushed into 5.5.0-beta (revid:alik@sun.com-20091110093229-0bh5hix780cyeicl) (version source revid:alik@sun.com-20091110083426-bm3am5445pfrrci9) (merge vers: 5.5.0-beta) (pib:13)
[12 Nov 2009 12:00] Jon Stephens
Doesn't appear in an actual release. Closed without further action.

Portions of this website are copyright © 2001, 2002 The PHP Group

Page generated in 0.045 sec. using MySQL 8.4.7-u6-cloud

Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the respective copyright holders.
It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.