Bug #38798 Assertion mysql_bin_log.is_open() failed in binlog_trans_log_savepos()
| Submitted: | 14 Aug 2008 13:36 | Modified: | 15 Sep 2008 17:13 |
|---|---|---|---|
| Reporter: | Philip Stoev | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Replication | Severity: | S1 (Critical) |
| Version: | 5.1, 6.0 bzr | OS: | Any |
| Assigned to: | Andrei Elkin | CPU Architecture: | Any |
[14 Aug 2008 14:15]
Philip Stoev
SQL Grammar file for bug 38798
Attachment: bug38798.yy (application/octet-stream, text), 410 bytes.
[14 Aug 2008 14:24]
Philip Stoev
To reproduce this bug, please clone the mysql-test-extra-6.0 tree and execute: $ cd mysql-test-extra-6.0/mysql-test/gentest $ perl runall.pl \ --basedir=/path/to/mysql-5.1 \ --grammar=conf/bug38798.yy \ --threads=1 This will proceed to run a non-concurrent random test from the queries in the grammar file - START TRANSACTION, CREATE ... SELECT and INSERT. The special thing is that the INSERT is ran under BINLOG_FORMAT=ROW whereas the system default is MIXED. Crash will happen after a few dozen queries. Since this test is not concurrent, technically it should not have required the full Random Query Generation framework, however when I tried to execute the queries with the client, no crash was observed. Let me know if I can help with anything else.
[15 Aug 2008 8:57]
Sveta Smirnova
Thank you for the report. Verified as described.
[26 Aug 2008 16:49]
Andrei Elkin
The issue looks to be of a critical character as the problem can be reproduced merely with running 4 queries (to be shown in a test that is coming with the patch).
[26 Aug 2008 17:02]
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/52583 2719 Andrei Elkin 2008-08-26 Bug #38798 Assertion mysql_bin_log.is_open() failed in binlog_trans_log_savepos() The assert is about binlogging must have been activated, but it was not actually according to the reported how-to-repeat instuctions. Analysis revealed that binlog_start_trans_and_stmt() was called without prior testing if binlogging is ON. Fixed with avoing entering binlog_start_trans_and_stmt() if binlog is not activated.
[29 Aug 2008 13:53]
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/52910 2725 Andrei Elkin 2008-08-29 Bug #38798 Assertion mysql_bin_log.is_open() failed in binlog_trans_log_savepos() The assert is about binlogging must have been activated, but it was not actually according to the reported how-to-repeat instuctions. Analysis revealed that binlog_start_trans_and_stmt() was called without prior testing if binlogging is ON. Fixed with avoing entering binlog_start_trans_and_stmt() if binlog is not activated.
[29 Aug 2008 14:02]
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/52911 2725 Andrei Elkin 2008-08-29 Bug #38798 Assertion mysql_bin_log.is_open() failed in binlog_trans_log_savepos() The assert is about binlogging must have been activated, but it was not actually according to the reported how-to-repeat instuctions. Analysis revealed that binlog_start_trans_and_stmt() was called without prior testing if binlogging is ON. Fixed with avoing entering binlog_start_trans_and_stmt() if binlog is not activated.
[29 Aug 2008 14:06]
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/52912 2725 Andrei Elkin 2008-08-29 Bug #38798 Assertion mysql_bin_log.is_open() failed in binlog_trans_log_savepos() The assert is about binlogging must have been activated, but it was not actually according to the reported how-to-repeat instuctions. Analysis revealed that binlog_start_trans_and_stmt() was called without prior testing if binlogging is ON. Fixed with avoing entering binlog_start_trans_and_stmt() if binlog is not activated.
[29 Aug 2008 14:20]
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/52914 2725 Andrei Elkin 2008-08-29 Bug #38798 Assertion mysql_bin_log.is_open() failed in binlog_trans_log_savepos() The assert is about binlogging must have been activated, but it was not actually according to the reported how-to-repeat instuctions. Analysis revealed that binlog_start_trans_and_stmt() was called without prior testing if binlogging is ON. Fixed with avoing entering binlog_start_trans_and_stmt() if binlog is not activated.
[29 Aug 2008 14:31]
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/52915 2725 Andrei Elkin 2008-08-29 Bug #38798 Assertion mysql_bin_log.is_open() failed in binlog_trans_log_savepos() The assert is about binlogging must have been activated, but it was not actually according to the reported how-to-repeat instuctions. Analysis revealed that binlog_start_trans_and_stmt() was called without prior testing if binlogging is ON. Fixed with avoing entering binlog_start_trans_and_stmt() if binlog is not activated.
[29 Aug 2008 14:40]
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/52916 2809 Andrei Elkin 2008-08-29 [merge] Bug #38798 Assertion mysql_bin_log.is_open() failed in binlog_trans_log_savepos() merging with 5.1-bugteam
[29 Aug 2008 15:16]
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/52917 2809 Andrei Elkin 2008-08-29 [merge] Bug #38798 Assertion mysql_bin_log.is_open() failed in binlog_trans_log_savepos() merging with 5.1-bugteam
[29 Aug 2008 15:17]
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/52918 2725 Andrei Elkin 2008-08-29 Bug #38798 Assertion mysql_bin_log.is_open() failed in binlog_trans_log_savepos() The assert is about binlogging must have been activated, but it was not actually according to the reported how-to-repeat instuctions. Analysis revealed that binlog_start_trans_and_stmt() was called without prior testing if binlogging is ON. Fixed with avoing entering binlog_start_trans_and_stmt() if binlog is not activated.
[1 Sep 2008 8:38]
Andrei Elkin
pushed to {5.1,6.0}-bugteam.
[13 Sep 2008 20:53]
Bugs System
Pushed into 6.0.7-alpha (revid:aelkin@mysql.com-20080829142008-m69x26h090nh4ibu) (version source revid:hakan@mysql.com-20080725175322-8wgujj5xuzrjz3ke) (pib:3)
[15 Sep 2008 17:13]
Jon Stephens
Documented in the 5.1.29 and 6.0.7 changelogs as follows:
Server code used in binary logging could in some cases be invoked even
though binary logging was not actually enabled, leading to asserts and
other server errors.
[1 Oct 2008 16:07]
Bugs System
Pushed into 5.1.28 (revid:aelkin@mysql.com-20080829142008-m69x26h090nh4ibu) (version source revid:aelkin@mysql.com-20080829142008-m69x26h090nh4ibu) (pib:4)
[28 Oct 2008 21:03]
Bugs System
Pushed into 5.1.29-ndb-6.2.17 (revid:aelkin@mysql.com-20080829142008-m69x26h090nh4ibu) (version source revid:tomas.ulin@sun.com-20081028140209-u4emkk1xphi5tkfb) (pib:5)
[28 Oct 2008 22:21]
Bugs System
Pushed into 5.1.29-ndb-6.3.19 (revid:aelkin@mysql.com-20080829142008-m69x26h090nh4ibu) (version source revid:tomas.ulin@sun.com-20081028194045-0353yg8cvd2c7dd1) (pib:5)
[1 Nov 2008 9:46]
Bugs System
Pushed into 5.1.29-ndb-6.4.0 (revid:aelkin@mysql.com-20080829142008-m69x26h090nh4ibu) (version source revid:jonas@mysql.com-20081101082305-qx5a1bj0z7i8ueys) (pib:5)
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.052 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.
Description: When executing a concurrent workload meant to test replication, the master asserted as follows: #8 0x003df57e in __assert_fail () from /lib/libc.so.6 #9 0x082ff973 in binlog_trans_log_savepos (thd=0x93c0dc0, pos=0xb2b87ea8) at log.cc:1272 #10 0x082ffa13 in THD::binlog_set_stmt_begin (this=0x93c0dc0) at log.cc:3652 #11 0x082ffb19 in THD::binlog_start_trans_and_stmt (this=0x93c0dc0) at log.cc:3623 #12 0x082dc67e in select_create::prepare (this=0x93d1bc8, values=@0x93c21bc, u=0x93c1eb0) at sql_insert.cc:3528 #13 0x082d43b5 in JOIN::prepare (this=0x93d1c60, rref_pointer_array=0x93c2220, tables_init=0x93d19d0, wild_num=1, conds_init=0x0, og_num=0, order_init=0x0, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x93c2128, unit_arg=0x93c1eb0) at sql_select.cc:629 #14 0x082d47ae in mysql_select (thd=0x93c0dc0, rref_pointer_array=0x93c2220, tables=0x93d19d0, wild_num=1, fields=@0x93c21bc, conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2416200192, result=0x93d1bc8, unit=0x93c1eb0, select_lex=0x93c2128) at sql_select.cc:2338 #15 0x082d9524 in handle_select (thd=0x93c0dc0, lex=0x93c1e54, result=0x93d1bc8, setup_tables_done_option=0) at sql_select.cc:269 #16 0x08257e5c in mysql_execute_command (thd=0x93c0dc0) at sql_parse.cc:2503 #17 0x0825f95c in mysql_parse (thd=0x93c0dc0, inBuf=0x93d1650 "CREATE TABLE n SELECT * FROM o ; TRUNCATE TABLE n", length=49, found_semicolon=0xb2b8925c) at sql_parse.cc:5650 #18 0x08260533 in dispatch_command (command=COM_QUERY, thd=0x93c0dc0, packet=0x93c55c9 "CREATE TABLE n SELECT * FROM o ; TRUNCATE TABLE n", packet_length=49) at sql_parse.cc:1137 #19 0x08261692 in do_command (thd=0x93c0dc0) at sql_parse.cc:794 #20 0x0824ede6 in handle_one_connection (arg=0x93c0dc0) at sql_connect.cc:1115 #21 0x0057d32f in start_thread () from /lib/libpthread.so.0 #22 0x0049a27e in clone () from /lib/libc.so.6 (gdb) list 1267 DBUG_ASSERT(pos != NULL); 1268 if (thd_get_ha_data(thd, binlog_hton) == NULL) 1269 thd->binlog_setup_trx_data(); 1270 binlog_trx_data *const trx_data= 1271 (binlog_trx_data*) thd_get_ha_data(thd, binlog_hton); 1272 DBUG_ASSERT(mysql_bin_log.is_open()); <<<<<< HERE 1273 *pos= trx_data->position(); 1274 DBUG_PRINT("return", ("*pos: %lu", (ulong) *pos)); 1275 DBUG_VOID_RETURN; 1276 } (gdb) print mysql_bin_log.is_open $6 = {bool (MYSQL_LOG *)} 0x81bb18a <MYSQL_LOG::is_open()> (gdb) print (bool) mysql_bin_log.is_open $7 = false How to repeat: This bug is repeatable, a test case will be uploaded shortly.