| Bug #46646 | Assertion `! is_set()' in Diagnostics_area::set_ok_status() on Innodb + UPDATE | ||
|---|---|---|---|
| Submitted: | 11 Aug 2009 10:16 | Modified: | 15 May 2010 9:05 |
| Reporter: | Philip Stoev | Email Updates: | |
| Status: | Can't repeat | Impact on me: | |
| Category: | MySQL Server | Severity: | S2 (Serious) |
| Version: | 5.4 | OS: | Any |
| Assigned to: | Philip Stoev | CPU Architecture: | Any |
| Tags: | innodb, InnoDB plugin, innodb_plugin, regression | ||
[13 Aug 2009 13:33]
Guilhem Bichot
Here are all other bug reports (of any status) which are about this group of Diagnostics_area assertions: | 34417 | Assertion failure in Diagnostics_area::set_error_status() | | 36135 | void Diagnostics_area::set_eof_status(THD*): Assertion `! is_set()' failed. | | 36473 | Assertion "! is_set()" fails in Diagnostics_area::set_ok_status with Falcon | | 38994 | Diagnostics_area::set_error_status Assertion `! is_set() || can_overwrite_status | | 46425 | crash in Diagnostics_area::set_ok_status , empty statement, DELETE IGNORE |
[18 Aug 2009 10:10]
Alexey Botchkov
i wasn't able to reproduce this one with the mysql-trunk (it was reproducible though with the older mysql-5.1)
[14 Sep 2009 9:33]
Guilhem Bichot
Unrelated bug report but could give an idea of possible cause types: http://bugs.mysql.com/bug.php?id=46958
[15 May 2010 9:05]
Philip Stoev
Not seen recently, setting to Can't repeat .

Description: When executing a concurrent transactional Innodb workload that contains a subquery in an UPDATE, against mysql-trunk, which contains the innodb plugin as a built-in default Innodb, mysqld asserted as follows: mysqld: sql_class.cc:437: void Diagnostics_area::set_ok_status(THD*, ha_rows, ulonglong, const char*): Assertion `! is_set()' failed. # 13:11:34 #6 0x000000315a42bec9 in __assert_fail () from /lib64/libc.so.6 # 13:11:34 #7 0x000000000060de24 in Diagnostics_area::set_ok_status (this=0x5ca51f8, thd=0x5ca3bc8, affected_rows_arg=0, last_insert_id_arg=0, message_arg=0x0) # 13:11:34 at sql_class.cc:437 # 13:11:34 #8 0x000000000053e4ca in my_ok (thd=0x5ca3bc8, affected_rows=0, id=0, message=0x0) at sql_class.h:2298 # 13:11:34 #9 0x00000000006ea254 in mysql_update (thd=0x5ca3bc8, table_list=0x5cb5a00, fields=@0x5ca5b58, values=@0x5ca5f38, conds=0x5cb6f90, order_num=0, order=0x0, # 13:11:34 limit=5, handle_duplicates=DUP_ERROR, ignore=false, found_return=0x7f1419743108, updated_return=0x7f1419743100) at sql_update.cc:341 # 13:11:34 #10 0x000000000063a4c6 in mysql_execute_command (thd=0x5ca3bc8) at sql_parse.cc:3058 # 13:11:34 #11 0x0000000000640e4c in mysql_parse (thd=0x5ca3bc8, # 13:11:34 inBuf=0x5cb5878 "UPDATE `C` AS X SET `time_key` = 6 WHERE X . `pk` = ( SELECT `pk` FROM `D` WHERE `pk` = 2 ) LIMIT 5", length=99, # 13:11:34 found_semicolon=0x7f1419743ee0) at sql_parse.cc:6003 # 13:11:34 #12 0x0000000000641c79 in dispatch_command (command=COM_QUERY, thd=0x5ca3bc8, # 13:11:34 packet=0x5cad7e9 "UPDATE `C` AS X SET `time_key` = 6 WHERE X . `pk` = ( SELECT `pk` FROM `D` WHERE `pk` = 2 ) LIMIT 5", packet_length=99) # 13:11:34 at sql_parse.cc:1222 # 13:11:34 #13 0x000000000064305e in do_command (thd=0x5ca3bc8) at sql_parse.cc:855 # 13:11:34 #14 0x000000000062f8bd in handle_one_connection (arg=0x5ca3bc8) at sql_connect.cc:1131 # 13:11:34 #15 0x000000315b0073da in start_thread () from /lib64/libpthread.so.0 # 13:11:34 #16 0x000000315a4e627d in clone () from /lib64/libc.so.6 Previously this assertion was reported against Falcon and Maria, so it may be a storage engine API issue. Bug is not repeatable in 5.1-bugteam. How to repeat: RQG grammar: query: transaction | UPDATE _table AS X SET _field_no_pk = _digit WHERE X . `pk` = ( SELECT `pk` FROM _table WHERE `pk` = _digit ) LIMIT 5; transaction: START TRANSACTION | SELECT SLEEP( 1 );; Command line: $ perl runall.pl \ --engine=Innodb \ --reporters=Backtrace \ --mysqld=--loose-innodb-lock-wait-timeout=1 \ --mysqld=--log-output=none \ --mysqld=--skip-safemalloc \ --rows=10000 \ --threads=16 \ --duration=600 \ --basedir=/path/to/mysql/trunk \ --grammar=/path/to/grammar