2821 He Zhenxing 2009-03-13
BUG#42244 Segmentation fault at rpl_handler.h
When some error caused the server to exit before calling
delegates_init(), transaction_delegate, etc, were not initialzed,
this would cause segmental fault when calling delegates_destroy
because the latter does not check if the objects were NULL or not.
Fixed the problem by only calling destruction on these objects if
they are not NULL.
modified:
sql/rpl_handler.cc
2820 Andrei Elkin 2009-03-09 [merge]
merging 6.0 main->rpl
removed:
mysql-test/include/UnicodeData.txt
added:
mysql-test/r/mdl_sync.result
mysql-test/r/signal.result
mysql-test/r/signal_code.result
mysql-test/r/signal_demo1.result
mysql-test/r/signal_demo2.result
mysql-test/r/signal_demo3.result
mysql-test/r/signal_sqlmode.result
mysql-test/r/signal_utf32.result
mysql-test/suite/falcon/r/falcon_blob_space-big.result
mysql-test/suite/falcon/r/falcon_bug_23692.result
mysql-test/suite/falcon/r/falcon_bug_33719.result
mysql-test/suite/falcon/r/falcon_bug_34182.result
mysql-test/suite/falcon/r/falcon_bug_34478.result
mysql-test/suite/falcon/r/falcon_bug_42478.result
mysql-test/suite/falcon/t/falcon_blob_space-big.cnf
mysql-test/suite/falcon/t/falcon_blob_space-big.test
mysql-test/suite/falcon/t/falcon_bug_23692.test
mysql-test/suite/falcon/t/falcon_bug_33719.test
mysql-test/suite/falcon/t/falcon_bug_34182.test
mysql-test/suite/falcon/t/falcon_bug_34478.test
mysql-test/suite/falcon/t/falcon_bug_42478.test
mysql-test/t/mdl_sync.test
mysql-test/t/signal.test
mysql-test/t/signal_code.test
mysql-test/t/signal_demo1.test
mysql-test/t/signal_demo2.test
mysql-test/t/signal_demo3.test
mysql-test/t/signal_sqlmode.test
mysql-test/t/signal_utf32.test
sql/sql_signal.cc
sql/sql_signal.h
storage/falcon/SRLTableSpaces.cpp
storage/falcon/SRLTableSpaces.h
modified:
.bzr-mysql/default.conf
.bzrignore
cmd-line-utils/libedit/makelist.sh
cmd-line-utils/libedit/readline.c
cmd-line-utils/libedit/readline/readline.h
cmd-line-utils/libedit/vi.c
configure.in
include/my_sys.h
include/mysql.h
include/mysql.h.pp
libmysql/libmysql.c
libmysqld/CMakeLists.txt
libmysqld/Makefile.am
libmysqld/lib_sql.cc
mysql-test/Makefile.am
mysql-test/mysql-test-run.pl
mysql-test/r/variables.result
mysql-test/suite/backup/t/backup_datatypes.test
mysql-test/suite/backup/t/backup_logs.test
mysql-test/suite/falcon/r/falcon_options.result
mysql-test/suite/falcon/r/falcon_options2.result
mysql-test/suite/falcon/t/disabled.def
mysql-test/suite/funcs_1/r/storedproc.result
mysql-test/suite/funcs_1/t/disabled.def
mysql-test/suite/ndb/t/ndb_read_multi_range.test
mysql-test/suite/rpl_ndb_big/t/disabled.def
mysql-test/suite/rpl_ndb_big/t/rpl_ndb_circular_simplex.test
mysql-test/t/upgrade.test
mysql-test/t/variables.test
sql-common/client.c
sql/CMakeLists.txt
sql/Makefile.am
sql/backup/backup_aux.h
sql/derror.cc
sql/event_db_repository.cc
sql/event_scheduler.cc
sql/ha_ndbcluster_binlog.cc
sql/ha_partition.cc
sql/ha_partition.h
sql/handler.cc
sql/lex.h
sql/lock.cc
sql/log.cc
sql/log_event.cc
sql/mdl.cc
sql/mdl.h
sql/mysql_priv.h
sql/mysqld.cc
sql/protocol.cc
sql/protocol.h
sql/rpl_rli.cc
sql/set_var.cc
sql/share/errmsg.txt
sql/si_objects.cc
sql/slave.cc
sql/sp.cc
sql/sp_head.cc
sql/sp_pcontext.h
sql/sp_rcontext.cc
sql/sp_rcontext.h
sql/sql_acl.cc
sql/sql_base.cc
sql/sql_class.cc
sql/sql_class.h
sql/sql_delete.cc
sql/sql_error.cc
sql/sql_error.h
sql/sql_handler.cc
sql/sql_insert.cc
sql/sql_lex.h
sql/sql_parse.cc
sql/sql_plist.h
sql/sql_plugin.cc
sql/sql_prepare.cc
sql/sql_prepare.h
sql/sql_servers.cc
sql/sql_show.cc
sql/sql_table.cc
sql/sql_trigger.cc
sql/sql_udf.cc
sql/sql_yacc.yy
sql/table.cc
sql/table.h
sql/thr_malloc.cc
sql/unireg.cc
storage/falcon/CMakeLists.txt
storage/falcon/Cache.cpp
storage/falcon/Cache.h
storage/falcon/Collation.h
storage/falcon/CollationCaseless.cpp
storage/falcon/CollationCaseless.h
storage/falcon/CollationUnknown.cpp
storage/falcon/CollationUnknown.h
storage/falcon/Connection.cpp
storage/falcon/Database.cpp
storage/falcon/Dbb.cpp
storage/falcon/Dbb.h
storage/falcon/DeferredIndex.cpp
storage/falcon/DeferredIndex.h
storage/falcon/Event.cpp
storage/falcon/IO.cpp
storage/falcon/Index.cpp
storage/falcon/Index.h
storage/falcon/IndexPage.cpp
storage/falcon/IndexPage.h
storage/falcon/IndexRootPage.cpp
storage/falcon/IndexRootPage.h
storage/falcon/Log.h
storage/falcon/Makefile.am
storage/falcon/MemMgr.cpp
storage/falcon/Mutex.cpp
storage/falcon/Mutex.h
storage/falcon/MySQLCollation.cpp
storage/falcon/MySQLCollation.h
storage/falcon/NBitmap.cpp
storage/falcon/NInSelectBitmap.cpp
storage/falcon/PageInventoryPage.cpp
storage/falcon/PageWriter.cpp
storage/falcon/PriorityScheduler.cpp
storage/falcon/RecordScavenge.cpp
storage/falcon/RecordScavenge.h
storage/falcon/RecordVersion.cpp
storage/falcon/SRLCreateIndex.cpp
storage/falcon/SRLCreateIndex.h
storage/falcon/SRLCreateTableSpace.cpp
storage/falcon/SRLDeleteIndex.cpp
storage/falcon/SRLDeleteIndex.h
storage/falcon/SRLVersion.h
storage/falcon/Sequence.cpp
storage/falcon/Sequence.h
storage/falcon/SequenceManager.cpp
storage/falcon/SequenceManager.h
storage/falcon/SerialLog.cpp
storage/falcon/SerialLogControl.cpp
storage/falcon/SerialLogControl.h
storage/falcon/SerialLogFile.cpp
storage/falcon/SerialLogRecord.h
storage/falcon/StorageDatabase.cpp
storage/falcon/StorageDatabase.h
storage/falcon/StorageTable.cpp
storage/falcon/StorageVersion.h
storage/falcon/SyncObject.cpp
storage/falcon/Table.cpp
storage/falcon/Table.h
storage/falcon/TableSpaceManager.cpp
storage/falcon/TableSpaceManager.h
storage/falcon/Thread.cpp
storage/falcon/Transaction.cpp
storage/falcon/ValueSet.cpp
storage/falcon/ha_falcon.cpp
storage/myisammrg/ha_myisammrg.cc
support-files/Makefile.am
support-files/mysql.spec.sh
tests/mysql_client_test.c
=== modified file 'sql/rpl_handler.cc'
--- a/sql/rpl_handler.cc 2009-01-27 02:08:48 +0000
+++ b/sql/rpl_handler.cc 2009-03-13 08:14:40 +0000
@@ -115,11 +115,15 @@ int delegates_init()
void delegates_destroy()
{
- transaction_delegate->~Trans_delegate();
- binlog_storage_delegate->~Binlog_storage_delegate();
+ if (transaction_delegate)
+ transaction_delegate->~Trans_delegate();
+ if (binlog_storage_delegate)
+ binlog_storage_delegate->~Binlog_storage_delegate();
#ifdef HAVE_REPLICATION
- binlog_transmit_delegate->~Binlog_transmit_delegate();
- binlog_relay_io_delegate->~Binlog_relay_IO_delegate();
+ if (binlog_transmit_delegate)
+ binlog_transmit_delegate->~Binlog_transmit_delegate();
+ if (binlog_relay_io_delegate)
+ binlog_relay_io_delegate->~Binlog_relay_IO_delegate();
#endif /* HAVE_REPLICATION */
}
| Thread |
|---|
| • bzr push into mysql-6.0-rpl branch (zhenxing.he:2820 to 2821) Bug#42244 | He Zhenxing | 13 Mar |