From: Sergey Vojtovich Date: May 18 2011 10:01am Subject: bzr commit into mysql-5.1 branch (sergey.vojtovich:3622) Bug#12402794 List-Archive: http://lists.mysql.com/commits/137546 X-Bug: 12402794 Message-Id: <201105181008.p4IA81nP008644@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1499412153835056849==" --===============1499412153835056849== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/svoj/mysql/server/mysql-5.1-bug60976/ based on revid:vinay.fisrekar@stripped 3622 Sergey Vojtovich 2011-05-18 BUG#12402794 - 60976: CRASH, VALGRIND WARNING AND MEMORY LEAK WITH PARTITIONED ARCHIVE TABLES CHECK TABLE against archive table, when file descriptors are exhausted, caused server crash. Archive didn't handle errors when opening data file for CHECK TABLE. @ mysql-test/r/archive_debug.result A test case for BUG#12402794. @ mysql-test/t/archive_debug.test A test case for BUG#12402794. @ storage/archive/azio.c A test case for BUG#12402794. @ storage/archive/ha_archive.cc Handle init_archive_reader() failure. added: mysql-test/r/archive_debug.result mysql-test/t/archive_debug.test modified: storage/archive/azio.c storage/archive/ha_archive.cc === added file 'mysql-test/r/archive_debug.result' --- a/mysql-test/r/archive_debug.result 1970-01-01 00:00:00 +0000 +++ b/mysql-test/r/archive_debug.result 2011-05-18 10:01:43 +0000 @@ -0,0 +1,12 @@ +# +# BUG#12402794 - 60976: CRASH, VALGRIND WARNING AND MEMORY LEAK +# WITH PARTITIONED ARCHIVE TABLES +# +CREATE TABLE t1(a INT) ENGINE=ARCHIVE; +INSERT INTO t1 VALUES(1); +SET SESSION debug='d,simulate_archive_open_failure'; +CHECK TABLE t1; +Table Op Msg_type Msg_text +test.t1 check error Corrupt +SET SESSION debug=DEFAULT; +DROP TABLE t1; === added file 'mysql-test/t/archive_debug.test' --- a/mysql-test/t/archive_debug.test 1970-01-01 00:00:00 +0000 +++ b/mysql-test/t/archive_debug.test 2011-05-18 10:01:43 +0000 @@ -0,0 +1,13 @@ +--source include/have_archive.inc +--source include/have_debug.inc + +--echo # +--echo # BUG#12402794 - 60976: CRASH, VALGRIND WARNING AND MEMORY LEAK +--echo # WITH PARTITIONED ARCHIVE TABLES +--echo # +CREATE TABLE t1(a INT) ENGINE=ARCHIVE; +INSERT INTO t1 VALUES(1); +SET SESSION debug='d,simulate_archive_open_failure'; +CHECK TABLE t1; +SET SESSION debug=DEFAULT; +DROP TABLE t1; === modified file 'storage/archive/azio.c' --- a/storage/archive/azio.c 2009-11-17 12:14:27 +0000 +++ b/storage/archive/azio.c 2011-05-18 10:01:43 +0000 @@ -114,6 +114,15 @@ int az_open (azio_stream *s, const char errno = 0; s->file = fd < 0 ? my_open(path, Flags, MYF(0)) : fd; + DBUG_EXECUTE_IF("simulate_archive_open_failure", + { + if (s->file >= 0) + { + my_close(s->file, MYF(0)); + s->file= -1; + my_errno= EMFILE; + } + }); if (s->file < 0 ) { === modified file 'storage/archive/ha_archive.cc' --- a/storage/archive/ha_archive.cc 2011-05-06 08:03:02 +0000 +++ b/storage/archive/ha_archive.cc 2011-05-18 10:01:43 +0000 @@ -1586,11 +1586,12 @@ int ha_archive::check(THD* thd, HA_CHECK azflush(&(share->archive_write), Z_SYNC_FLUSH); pthread_mutex_unlock(&share->mutex); + if (init_archive_reader()) + DBUG_RETURN(HA_ADMIN_CORRUPT); /* Now we will rewind the archive file so that we are positioned at the start of the file. */ - init_archive_reader(); read_data_header(&archive); while (!(rc= get_row(&archive, table->record[0]))) count--; --===============1499412153835056849== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/sergey.vojtovich@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: sergey.vojtovich@stripped\ # mdou0p7ajszmj2lt # target_branch: file:///home/svoj/mysql/server/mysql-5.1-bug60976/ # testament_sha1: 96e6d6cd386c0bb75d9769ab9d7ab0e7f8909f69 # timestamp: 2011-05-18 14:01:48 +0400 # base_revision_id: vinay.fisrekar@stripped\ # 9178kabh4c7y6n92 # # Begin bundle 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 --===============1499412153835056849==--