List:Commits« Previous MessageNext Message »
From:Tor Didriksen Date:October 2 2010 12:56pm
Subject:Re: bzr commit into mysql-next-mr-bugfixing branch
(tor.didriksen:3310) Bug#52002
View as plain text  
Hi Mattias

thanks for the input.
did you run the gunit test, with your changes?

-- didrik

On Sat, Oct 2, 2010 at 12:42 AM, Mattias Jonsson <mattias.jonsson@stripped
> wrote:

> Hi Tor,
>
> Thank you for your patch.
>
> I also use abort() in sql/sql_partition.cc, and would be like to switch to
> DBUG_SUICIDE() too.
>
> Unfortunately when I tested DBUG_SUICIDE on my macbook, it succeeded with a
> command which should have crashed, an yet another run showed differences in
> the result file (probably due to there was code run in between of the kill()
> call and the actual death of the process).
>
> I tested successfully with changing 'kill(getpid(), SIGKILL)' to
> 'raise(SIGKILL), pause()'. The only worry I have with that solution is that
> according to the manual in mac os x, pause() is made obsolete by
> sigsuspend() but that function require more code.
>
>
> So could you please:
> 1) change the 'kill(getpid(), SIGKILL)' to 'raise(SIGKILL), pause()' or
> something other that ensures that DBUG_SUICIDE() never returns (test also on
> mac os x).
>
> 2) include the following in your patch for bug#52002:
> === modified file
> 'mysql-test/suite/parts/t/partition_debug_innodb-master.opt'
> --- mysql-test/suite/parts/t/partition_debug_innodb-master.opt 2010-08-13
> 07:50:25 +0000
> +++ mysql-test/suite/parts/t/partition_debug_innodb-master.opt 2010-10-01
> 20:12:51 +0000
> @@ -1,1 +1,1 @@
> ---innodb-file-format-check --innodb-file-per-table=1 --skip-stack-trace
> --skip-core-file
> +--innodb-file-format-check --innodb-file-per-table=1
>
> === removed file
> 'mysql-test/suite/parts/t/partition_debug_myisam-master.opt'
> --- mysql-test/suite/parts/t/partition_debug_myisam-master.opt 2010-08-13
> 07:50:25 +0000
> +++ mysql-test/suite/parts/t/partition_debug_myisam-master.opt 1970-01-01
> 00:00:00 +0000
> @@ -1,1 +0,0 @@
> ---skip-stack-trace --skip-core-file
>
> === modified file 'sql/sql_partition.cc'
> --- sql/sql_partition.cc        2010-10-01 13:59:07 +0000
> +++ sql/sql_partition.cc        2010-10-01 20:12:04 +0000
> @@ -70,9 +70,8 @@
>  #ifdef WITH_PARTITION_STORAGE_ENGINE
>  #include "ha_partition.h"
>
> -/* TODO: Change abort() to DBUG_SUICIDE() when bug#52002 is pushed */
>  #define ERROR_INJECT_CRASH(code) \
> -  DBUG_EVALUATE_IF(code, (abort(), 0), 0)
> +  DBUG_EVALUATE_IF(code, (DBUG_SUICIDE(), 0), 0)
>  #define ERROR_INJECT_ERROR(code) \
>   DBUG_EVALUATE_IF(code, (my_error(ER_UNKNOWN_ERROR, MYF(0)), TRUE), 0)
>
>
>
> And perhaps add some code to your test case to make sure it never executes
> anything after DBUG_SUICIDE().
>
> Regards
> Mattias
>
>
> On 2010-10-01 11.07, Tor Didriksen wrote:
>
>> #At file:///export/home/didrik/repo/next-mr-bf-binlogcore/ based on
>> revid:luis.soares@stripped
>>
>>  3310 Tor Didriksen    2010-10-01
>>       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.
>>         All DBUG_XXX macros should be no-ops in optimized mode, do that
>> for DBUG_ABORT as well.
>>      @ 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-10-01 09:07:06 +0000
>>
>
> [...]
>
>
>  @@ -111,6 +118,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)
>>
>
> [...]
>
> --
> MySQL Code Commits Mailing List
> For list archives: http://lists.mysql.com/commits
> To unsubscribe:
> http://lists.mysql.com/commits?unsub=1
>
>

Thread
bzr commit into mysql-next-mr-bugfixing branch (tor.didriksen:3310) Bug#52002Tor Didriksen1 Oct
  • Re: bzr commit into mysql-next-mr-bugfixing branch (tor.didriksen:3310)Bug#52002Mattias Jonsson2 Oct
    • Re: bzr commit into mysql-next-mr-bugfixing branch(tor.didriksen:3310) Bug#52002Tor Didriksen2 Oct