List:Commits« Previous MessageNext Message »
From:Luís Soares Date:September 27 2010 4:11pm
Subject:Re: bzr commit into mysql-next-mr-bugfixing branch
(tor.didriksen:3298) Bug#52002
View as plain text  
Approved. Thx Tor.

On Tue, 2010-09-21 at 15:34 +0000, Tor Didriksen wrote:
> #At file:///export/home/didrik/repo/next-mr-bf-binlogcore/ based on
> revid:tor.didriksen@stripped
> 
>  3298 Tor Didriksen	2010-09-21
>       Bug#52002 binlog_index may cause incorrect failure report on failing test that
> follows it
>       
>       For crash testing: kill the server without generating core file.
>      @ include/my_dbug.h
>         Use kill(getpid(), SIGKILL) which cannot be caught by signal handlers.
>      @ sql/binlog.cc
>         Kill server without generating core.
>      @ sql/handler.cc
>         Kill server without generating core.
>      @ unittest/gunit/CMakeLists.txt
>         Add unit test.
>      @ unittest/gunit/dbug-t.cc
>         Add unit test.
> 
>     added:
>       unittest/gunit/dbug-t.cc
>     modified:
>       include/my_dbug.h
>       sql/binlog.cc
>       sql/handler.cc
>       unittest/gunit/CMakeLists.txt
> === modified file 'include/my_dbug.h'
> --- a/include/my_dbug.h	2010-07-15 11:16:06 +0000
> +++ b/include/my_dbug.h	2010-09-21 15:34:07 +0000
> @@ -16,6 +16,14 @@
>  #ifndef _dbug_h
>  #define _dbug_h
>  
> +#ifdef HAVE_SYS_TYPES_H
> +#include <sys/types.h>
> +#endif
> +
> +#ifndef __WIN__
> +#include <signal.h>
> +#endif
> +
>  #ifdef  __cplusplus
>  extern "C" {
>  #endif
> @@ -111,6 +119,19 @@ extern  const char* _db_get_func_(void);
>  #define DBUG_CRASH_VOID_RETURN \
>    DBUG_CHECK_CRASH (_db_get_func_(), "_crash_return")
>  
> +/*
> +  Make the program fail, without creating a core file.
> +  abort() will send SIGABRT which (most likely) generates core.
> +  Use SIGKILL instead, which cannot be caught.
> +  An alternative would be to use _exit(EXIT_FAILURE),
> +  but then valgrind would report lots of memory leaks.
> + */
> +#ifdef __WIN__
> +#define DBUG_SUICIDE() DBUG_ABORT()
> +#else
> +#define DBUG_SUICIDE() (_db_flush_(), kill(getpid(), SIGKILL))
> +#endif
> +
>  #else                                           /* No debugger */
>  
>  #define DBUG_ENTER(a1)
> @@ -144,6 +165,9 @@ extern  const char* _db_get_func_(void);
>  #define DBUG_CRASH_RETURN(val)          do { return(val); } while(0)
>  #define DBUG_CRASH_VOID_RETURN          do { return; } while(0)
>  
> +/* NOOP in optimized mode. */
> +#define DBUG_SUICIDE() do { } while(0)
> +
>  #endif
>  
>  #ifdef EXTRA_DEBUG
> 
> === modified file 'sql/binlog.cc'
> --- a/sql/binlog.cc	2010-09-17 13:22:22 +0000
> +++ b/sql/binlog.cc	2010-09-21 15:34:07 +0000
> @@ -1568,7 +1568,7 @@ bool MYSQL_BIN_LOG::open(const char *log
>      sql_print_error("MSYQL_BIN_LOG::open failed to sync the index file.");
>      DBUG_RETURN(1);
>    }
> -  DBUG_EXECUTE_IF("crash_create_non_critical_before_update_index", DBUG_ABORT(););
> +  DBUG_EXECUTE_IF("crash_create_non_critical_before_update_index",
> DBUG_SUICIDE(););
>  #endif
>  
>    write_error= 0;
> @@ -1668,7 +1668,7 @@ bool MYSQL_BIN_LOG::open(const char *log
>      if (write_file_name_to_index_file)
>      {
>  #ifdef HAVE_REPLICATION
> -      DBUG_EXECUTE_IF("crash_create_critical_before_update_index", DBUG_ABORT(););
> +      DBUG_EXECUTE_IF("crash_create_critical_before_update_index",
> DBUG_SUICIDE(););
>  #endif
>  
>        DBUG_ASSERT(my_b_inited(&index_file) != 0);
> @@ -1687,7 +1687,7 @@ bool MYSQL_BIN_LOG::open(const char *log
>          goto err;
>  
>  #ifdef HAVE_REPLICATION
> -      DBUG_EXECUTE_IF("crash_create_after_update_index", DBUG_ABORT(););
> +      DBUG_EXECUTE_IF("crash_create_after_update_index", DBUG_SUICIDE(););
>  #endif
>      }
>    }
> @@ -2139,7 +2139,7 @@ int MYSQL_BIN_LOG::purge_first_log(Relay
>    /* Store where we are in the new file for the execution thread */
>    flush_relay_log_info(rli);
>  
> -  DBUG_EXECUTE_IF("crash_before_purge_logs", DBUG_ABORT(););
> +  DBUG_EXECUTE_IF("crash_before_purge_logs", DBUG_SUICIDE(););
>  
>    mysql_mutex_lock(&rli->log_space_lock);
>    rli->relay_log.purge_logs(to_purge_if_included, included,
> @@ -2267,7 +2267,7 @@ int MYSQL_BIN_LOG::purge_logs(const char
>        break;
>    }
>  
> -  DBUG_EXECUTE_IF("crash_purge_before_update_index", DBUG_ABORT(););
> +  DBUG_EXECUTE_IF("crash_purge_before_update_index", DBUG_SUICIDE(););
>  
>    if ((error= sync_purge_index_file()))
>    {
> @@ -2282,7 +2282,7 @@ int MYSQL_BIN_LOG::purge_logs(const char
>      goto err;
>    }
>  
> -  DBUG_EXECUTE_IF("crash_purge_critical_after_update_index", DBUG_ABORT(););
> +  DBUG_EXECUTE_IF("crash_purge_critical_after_update_index", DBUG_SUICIDE(););
>  
>  err:
>    /* Read each entry from purge_index_file and delete the file. */
> @@ -2292,7 +2292,7 @@ err:
>                      " that would be purged.");
>    close_purge_index_file();
>  
> -  DBUG_EXECUTE_IF("crash_purge_non_critical_after_update_index", DBUG_ABORT(););
> +  DBUG_EXECUTE_IF("crash_purge_non_critical_after_update_index", DBUG_SUICIDE(););
>  
>    if (need_mutex)
>      mysql_mutex_unlock(&LOCK_index);
> @@ -3457,7 +3457,7 @@ bool MYSQL_BIN_LOG::write(THD *thd, IO_C
>                            DBUG_PRINT("info", ("error writing binlog cache: %d",
>                                                 write_error));
>                          DBUG_PRINT("info", ("crashing before writing xid"));
> -                        DBUG_ABORT();
> +                        DBUG_SUICIDE();
>                        });
>  
>        if ((write_error= write_cache(cache, false, false)))
> @@ -3472,7 +3472,7 @@ bool MYSQL_BIN_LOG::write(THD *thd, IO_C
>        bool synced= 0;
>        if (flush_and_sync(&synced))
>          goto err;
> -      DBUG_EXECUTE_IF("half_binlogged_transaction", DBUG_ABORT(););
> +      DBUG_EXECUTE_IF("half_binlogged_transaction", DBUG_SUICIDE(););
>        if (cache->error)				// Error on read
>        {
>          sql_print_error(ER(ER_ERROR_ON_READ), cache->file_name, errno);
> 
> === modified file 'sql/handler.cc'
> --- a/sql/handler.cc	2010-09-01 02:51:08 +0000
> +++ b/sql/handler.cc	2010-09-21 15:34:07 +0000
> @@ -1169,7 +1169,7 @@ int ha_commit_trans(THD *thd, bool all)
>      uint rw_ha_count;
>      bool rw_trans;
>  
> -    DBUG_EXECUTE_IF("crash_commit_before", DBUG_ABORT(););
> +    DBUG_EXECUTE_IF("crash_commit_before", DBUG_SUICIDE(););
>  
>      /* Close all cursors that can not survive COMMIT */
>      if (is_real_trans)                          /* not a statement commit */
> @@ -1221,7 +1221,7 @@ int ha_commit_trans(THD *thd, bool all)
>          }
>          status_var_increment(thd->status_var.ha_prepare_count);
>        }
> -      DBUG_EXECUTE_IF("crash_commit_after_prepare", DBUG_ABORT(););
> +      DBUG_EXECUTE_IF("crash_commit_after_prepare", DBUG_SUICIDE(););
>        if (error || (is_real_trans && xid &&
>                      (error= !(cookie= tc_log->log_xid(thd, xid)))))
>        {
> @@ -1229,13 +1229,13 @@ int ha_commit_trans(THD *thd, bool all)
>          error= 1;
>          goto end;
>        }
> -      DBUG_EXECUTE_IF("crash_commit_after_log", DBUG_ABORT(););
> +      DBUG_EXECUTE_IF("crash_commit_after_log", DBUG_SUICIDE(););
>      }
>      error=ha_commit_one_phase(thd, all) ? (cookie ? 2 : 1) : 0;
> -    DBUG_EXECUTE_IF("crash_commit_before_unlog", DBUG_ABORT(););
> +    DBUG_EXECUTE_IF("crash_commit_before_unlog", DBUG_SUICIDE(););
>      if (cookie)
>        tc_log->unlog(cookie, xid);
> -    DBUG_EXECUTE_IF("crash_commit_after", DBUG_ABORT(););
> +    DBUG_EXECUTE_IF("crash_commit_after", DBUG_SUICIDE(););
>      RUN_HOOK(transaction, after_commit, (thd, FALSE));
>  end:
>      if (rw_trans)
> 
> === modified file 'unittest/gunit/CMakeLists.txt'
> --- a/unittest/gunit/CMakeLists.txt	2010-07-30 08:34:23 +0000
> +++ b/unittest/gunit/CMakeLists.txt	2010-09-21 15:34:07 +0000
> @@ -207,7 +207,7 @@ IF (CMAKE_CXX_COMPILER_ID STREQUAL "SunP
>  ENDIF()
>  
>  # Add tests (link them with sql library) 
> -SET(TESTS sql_list mdl mdl_mytap my_regex thread_utils)
> +SET(TESTS dbug sql_list mdl mdl_mytap my_regex thread_utils)
>  FOREACH(test ${TESTS})
>    ADD_EXECUTABLE(${test}-t ${test}-t.cc)
>    TARGET_LINK_LIBRARIES(${test}-t gunit sqlgunitlib strings dbug regex)
> 
> === added file 'unittest/gunit/dbug-t.cc'
> --- a/unittest/gunit/dbug-t.cc	1970-01-01 00:00:00 +0000
> +++ b/unittest/gunit/dbug-t.cc	2010-09-21 15:34:07 +0000
> @@ -0,0 +1,35 @@
> +/* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. 
> +
> +   This program is free software; you can redistribute it and/or modify
> +   it under the terms of the GNU General Public License as published by
> +   the Free Software Foundation; version 2 of the License.
> +
> +   This program is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +   GNU General Public License for more details.
> +
> +   You should have received a copy of the GNU General Public License
> +   along with this program; if not, write to the Free Software
> +   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
> +
> +// First include (the generated) my_config.h, to get correct platform defines,
> +// then gtest.h (before any other MySQL headers), to avoid min() macros etc ...
> +#include "my_config.h"
> +#include <gtest/gtest.h>
> +
> +#include "my_global.h"
> +#include "my_dbug.h"
> +
> +#if defined(DBUG_OFF)
> +TEST(DebugTest, NoSuicide)
> +{
> +  DBUG_SUICIDE();
> +}
> +#else 
> +TEST(DebugDeathTest, Suicide)
> +{
> +  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
> +  EXPECT_DEATH_IF_SUPPORTED(DBUG_SUICIDE(), "");
> +}
> +#endif
> 
> text/bzr-bundle type attachment
> (bzr/tor.didriksen@stripped)
> # Bazaar merge directive format 2 (Bazaar 0.90)
> # revision_id: tor.didriksen@stripped\
> #   ab0rqq027m2kluem
> # target_branch: file:///export/home/didrik/repo/next-mr-bf-\
> #   binlogcore/
> # testament_sha1: f9724c0f9d7630dca694184e8ad2354bd11c90eb
> # timestamp: 2010-09-21 17:34:16 +0200
> # base_revision_id: tor.didriksen@stripped\
> #   qifwysg2k3ev1mck
> # 
> # Begin bundle
> IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWfkqBQAABi5/gFAQBABYd///
> f+//4L////pgDYbjun1nXsDq9oWtqtT1t21227udFGhtSy2xGqtWlnt4JIk0EnkaABpNqaNTJlPJ
> gpp4kemo8KaepkeUDJT0T0jRqeQjUCDE0aY1NDQNAGjQGmhoMqZkU2U0jTRoN6KBo0NAGmINAAAA
> JEQIIE0aap+iT00k03qeqepsSDI2kNB6npAAcAwjCaYhgEAyAGEaZMmEYCGgkiBAEaaDRAyAKaTT
> TT1Hqeo9Q9QG1ANqV1kq+jI/Wlq4NuQ3cD+ubPpqmVepDMmqcUF6eHpg9Bi20dBjL9Kez/T3yzIe
> 9uyErTfXNh/5sQ9VcXn0O0/PwYWjQ8WQYIraEuqlStAID5bEaRTPMrIo4NirUSp6LB2Wyc8Xm+p2
> m1Bt5QkFkg82ghOkF5hsbOFl9OXh48Yrppn/LmhhyBg2JtNtiPHb8EI1rrxjsfJtnN8nDl9s5Woj
> FohmIgm1dONQowqPLGVuDxWjkrDRWGmyqt1SMkFaVpuT2e7J9/dmpDFHEHqqbvthFDfVfCbMovEn
> uQNN2X1X8vEncc2QDz1PUSzfaT8JqeyDXUGu7jBXdfeEBr/AvvQNpTZny2NtpW7Cp5KJ1XVqzzi2
> NOhuRF+qQV94iul9Od21N4n/qtGMhaK+vWQ+ySJysz6pWVIljUDUueEhXkGOquHFmrOqgh4mm3Ur
> yMZb8LctIYOoLlt2ncGcOaxcHNI22OdHzyOve5fL4+Q1404lQ5Y843PtR+Hhcq3deQzGaxbGWDqQ
> S3XR9ATIZrgzMhmFR1pB4oW94q5me07HSVUPGYlalfAZZcFfBbepKehnk9v1Q98Bn84KG+jQvJbl
> v3Xf2cMIXI65qRwc367keb25Xd+s4HkknWVTIZWgyZAU3DiXEwlwcwKBusNqNmF4tgbDTf03jpvB
> Tr2DGVdgZJobPqsW26qm24t68+3c01CiI7LNpB21SClebFEYkaPtXifSjai/fhw2o04lDZzojThw
> zEHdEI5tQ+1w1RlGqFfm7po/XgT+vvKIs5Q0IdBglgWVEovUjG8r/wSyLyLJNXGGZCpqwsvu0Eqk
> FS8TmRlIvAdUwRgVzCMmqr57RmNe0S/7xk/iuAI2vTcbJJTdUZ30NiyPOcNAH2NKykNLLoZerVMX
> lAmoNXBwJfUAsKzFw6UByOpgrpSywui6mNj8eqdD6NChQzOSXEuUfn15Y0EuvZhMvScRAWTjRiF5
> yDz34yHBqnE2AoI5jJ6wIs1ZWzHYYYnUH7FwQVEDSYrjh9irVXmrctyx30ZnxjntRGDpC2pwqFNi
> UE/dx0NO8qSOwp1khMKLA7SmumZR8+dlZmPMhqUKCW++ZFiyJpKQGB1YFZtL0e4qNpbuvZeIlvkY
> Za8NUWxjGeQTkguJkHgioioyEpRDU0jPOxZWBsOvCozJGBiZzg1eogSGOCqMj2XkuKgu9cjdZhbg
> zmrY2LKJIiJOHJlWpVl6iTsiE5O5489So6wYGRTMKG4nLZVcjTByXkUFNV0JnjF+I7DoDYvhfJFc
> jlWqmyKtjHK2e6OncLhIPBPKFxoM4my28wak6hzhSY4CwWtYy0Pt30z3akZsd6SvUimQ5GNpKCtI
> kI5PvOMpFZCE1MvMDVaNETQWE4kqQkxprW+5wxN9MbKrJCRQErc9yPB7VywZZTpYNooYl1yoRPLa
> Xk3NZq54WGIZxuL0X5svCbibpDACA45iwcJmCZaKkcFSypHLVaKBYqtCwziUIGlauqIeFpXaTxLt
> U9jXmg3E0PGrWT2UnVe6omoKCbFBvgEbDBdZHDPqLiv3FcsC2mNxq8O9mBqKiZEuMScTavKcZhC2
> 0q2sSWWV26EYFrw2IvZxreBSKLSlRES4FbBGAMZVjJEV9wl3M5dPfxohfkR1Nh7KLgmm+Q3DIGjC
> H8untRBTGxhBRv/f61dnd69vd5fxNJ7+P7S6yUymcGBhhvJeAgL1tp/hIOnS0tCs2ff8RjIB/vhP
> 8YErJB2eupG9ILuD69n1QtOP/XUaXIVtskL64IXKf5T3tJtGBwZZ/uIB1N7PuEiQNBIJBKoPn7qf
> WrtuOneVY7HmvRMhgNgIZhKJeIlKwtM8o4ZjeZ6Ycj9yjyM2wlzmQtkPPXKOlYfSsNaENfskHyav
> AuKbIWnXNCx1xedpqskNy3kcsmWMQFCQTtpyzZIoTz3XqGwJK3erYyL9smQmlRC0iCOMI0Kys9F1
> fsHuZyHxij0DU/mH3UV8e+dbAVQy/yQJafziGRoQ8fujCQ+iKlZh6SY75UuoZHaXjo0/Mpj2Jy6n
> gd0555fDwgJa/3G75fjvQj5aa8RvmwQ+dvMUBVAajNvgrVXIXbm3eHd0+PPcYC6NmJoYF6ZoMp6b
> fD8PxObaF8aTfCFM4XhMBcCjxPb+ZvIeGSssMKFLVubmWgJTcG7vjgZbxjMUSt55yU7Pst3cW+Vh
> x7BbaDi8m33mjLqNQZKVVtWSDMZWHYVg5z+IJRXYsmQdnA4jYnmXo1RrC4XeCkMmKFh7bHUaJXMt
> So/cnQiKD24ab9gkc0QzcL8uIrrFwXgrqWGm0e9VWVMNs3ONB4xHKZp4jncbDr4t6xJVFtpDxoXd
> wwd42Bglu5dRFXNqSnEokRwq8hTHwNu7fxgdEzwn+BtMDiliNxavwMPxWBrgw7pb9F1pBAMxW7aX
> LuJih1rEEav86y1Xx0jzwusPoa9GxWsibXHFI8SFKJqnhv7pPRsn+lKylDfZceDPdJyDjgh2Rxs8
> VRj0Nef2tOrkUvPE8Dp0c9deJAf1R2or38HQ2JC8bEQwnENUiz1IQ5DfSjr+uj3QNA57jiTXVbhf
> s07YT4j0oYaMbLpzckkuTM2ROMi1K25W02mixp/Z7i4huESm7acORnBFA+C2owDEVEyViZeFeMlv
> 5ohygLMDByMp+UglNodVuQo5DIHY1W+rnYnoBGLC+y2iRVYHrwTuzLl2C8ebEzswgTGNv3a153Hj
> cUE+Ujoe8oKXAzPyR7XHkh0Oi7YjDhqLrChNLg5Xk/YorEXNXv7jMMw9TLEJoctsJhfo9KkoVs8h
> dBgMbt0XUVS00DYGMRIGBoqfqyz/IgbDe6Len4rLogpGRSUUpRTKFSIBZHas9lRsF0i2KL2rzDyJ
> 2XmglxrQGxAoHGxpNWhhlAO8J1JoLbNpYsrIWc6dKQSWb969EObIw4min3jlV8zE6ogCNsqMTJBH
> efA9qxQa2hptUNb/GdcAdaWqO++YbmfUBl6ed1XLOoYZhVHovd+203q/oA2hzdNIuGPe4cEdOHUJ
> gnGRr78ea2InfguCvWk1Q7l2OMNWOt2K6gLCXzYVrAhqWtj2QlrXxKjN4duSV5KD/tYIUeG3OZ86
> 4U15VWyTZL6BgQyIsIx0iuqGtTRhDJkpx+DC578fSrtQNVbw2LS0vJyyQeIlLrmqqJxYIQ0eYlil
> NJVlHuTKovHMWZzU+Ap1NBewqseWeYpxqep4Xy9ns0Z7HHbtzendETtcEkNdB7V8i/YvrVErpA13
> mqOo/DXURdwMDU5OEqBQUBlID7YDpNFzB5oIAZwNZmX4GBK4KmQMyTumhf6h0jKSlofLu71Wok7k
> fE8aCIg2lX229AS1YWu5ew7CyG98y26xq4/x98Pv6GGCQfUEMA+dY7AyBlfORoxYpfvwKnXf4vPm
> xNgHRGzuVPDYgp07XQwLwFMWJj95mUkdFrsN1kjwoF1zwD8IFwlot5z4th8le1fFZAwjYTdEu7Sn
> VZQwUujGyIJAwH83BLFQXsGXTlZrQpoydbFeWhxZ2BmR2kg40DWlOmSdCxyqzqcVKL1ZRrjrBGLT
> WF5Z6FhDUUnDwHsVuoNz08RL3q+izXMhQ2DDKJl7qeiVaeFeWh7Hg0UV2vhx2il2KS4eeiAzu9II
> 0WTuqlX2TOCstzXRHHB+3jIFEYXpXWjrdnj9K83pERqMpvFTjfBC2MdyjQCSWPsQs15Ket8oVkbY
> nbN1xdsWaOCawe6sUMoKLe86mvenBYa0zlE4RgRFlrHOLXdsILUierk0dfdUhbFUfZPWxFrBo0pA
> /W0smiht/7ycpBtxCw75hrN7q0IBIOJcJkPpIBmWQwQP0Ul6vRFF+KUVlXIiEdSu0HGsZ+VS7Vln
> 6VpQOmEtao52EaBl1rasN5NfHLFaFhoSjU1YHV5k2jRAiZZhaM8Rf3DUY1pClJFhVUAD7kSla6X7
> cHBZMa9o+X3KCwA8+VPnHE2mAQBNeq21bCOOcs3jovJ5xulpeAxA0pdmdzbMWNpcdRpGBPCcuI+Q
> aECf8XckU4UJD5KgUAA=
> 
> 

-- 
Luís Soares
Oracle
Software Engineer

Thread
bzr commit into mysql-next-mr-bugfixing branch (tor.didriksen:3298) Bug#52002Tor Didriksen21 Sep
  • Re: bzr commit into mysql-next-mr-bugfixing branch(tor.didriksen:3298) Bug#52002Luís Soares27 Sep