Bug #45747 DBUG_CRASH_* is not setting the strict option
Submitted: 25 Jun 2009 11:31 Modified: 12 Nov 2009 12:12
Reporter: Alfranio Junior Email Updates:
Status: Closed Impact on me:
None 
Category:Tests: Replication Severity:S3 (Non-critical)
Version:6.0 OS:Any
Assigned to: Alfranio Junior CPU Architecture:Any
Tags: macro, replication, test

[25 Jun 2009 11:31] Alfranio Junior
Description:
When combining DBUG_CRASH_* with "--debug=d:t:i:A,file" the server crashes due to a call to the abort function when the appropriate keyword has not been set.

How to repeat:
Use the macros DBUG_CRASH_* along with "--debug=d:t:i:A,file".

Suggested fix:
=== modified file 'include/my_dbug.h'
--- include/my_dbug.h   2009-06-12 02:01:08 +0000
+++ include/my_dbug.h   2009-06-25 10:35:30 +0000
@@ -107,7 +107,7 @@
 #define _DBUG_MAX_FUNC_NAME_ 255
 #define DBUG_CHECK_CRASH(func, op) \
         do { \
-          if (_db_keywords_(0, 0, (func), (op))) \
+          if (_db_keywords_(0, 1, (func), (op))) \
             { (_db_flush_(), abort()); } \
         } while (0)
 #define DBUG_CRASH_ENTER(func) \
[25 Jun 2009 13:50] 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/77205

3390 Alfranio Correia	2009-06-25
      BUG#45747 DBUG_CRASH_* is not setting the strict option
      
      When combining DBUG_CRASH_* with "--debug=d:t:i:A,file" the server crashes due
      to a call to the abort function when the appropriate keyword has not been set.
[25 Jun 2009 18:38] Alfranio Junior
Patch pushed to 6.0-bugteam
[25 Jun 2009 19:19] 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/77249

3399 Alfranio Correia	2009-06-25
      BUG#45747 DBUG_CRASH_* is not setting the strict option
      
      When combining DBUG_CRASH_* with "--debug=d:t:i:A,file" the server crashes
      due to a call to the abort function in the DBUG_CRASH_* macro althought the
      appropriate keyword has not been set.
[10 Jul 2009 11:20] Bugs System
Pushed into 5.4.4-alpha (revid:anozdrin@bk-internal.mysql.com-20090710111017-bnh2cau84ug1hvei) (version source revid:alfranio.correia@sun.com-20090625183313-bbf2ymnss8uj0n8q) (merge vers: 5.4.4-alpha) (pib:11)
[13 Jul 2009 12:17] Jon Stephens
Change in test only, no user changes to document. Closed without further action.
[29 Sep 2009 13:56] 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/85017

3115 Alfranio Correia	2009-09-29
      WL#4828 and BUG#45747
      
      NOTE: Backporting the patch to next-mr.
      
      WL#4828 Augment DBUG_ENTER/DBUG_EXIT to crash MySQL in different functions
      -------
      
      The assessment of the replication code in the presence of faults is extremely
      import to increase reliability. In particular, one needs to know if servers
      will either correctly recovery or print out appropriate error messages thus
      avoiding unexpected problems in a production environment.
      
      In order to accomplish this, the current patch refactories the debug macros
      already provided in the source code and introduces three new macros that
      allows to inject faults, specifically crashes, while entering or exiting a
      function or method. For instance, to crash a server while returning from
      the init_slave function (see module sql/slave.cc), one needs to do what
      follows:
      
      1 - Modify the source replacing DBUG_RETURN by DBUG_CRASH_RETURN;
      
        DBUG_CRASH_RETURN(0);
      
      2 - Use the debug variable to activate dbug instructions:
      
        SET SESSION debug="+d,init_slave_crash_return";
      
      The new macros are briefly described below:
      
      DBUG_CRASH_ENTER (function) is equivalent to DBUG_ENTER which registers the
      beginning of a function but in addition to it allows for crashing the server
      while entering the function if the appropriate dbug instruction is activate.
      In this case, the dbug instruction should be "+d,function_crash_enter".
      
      DBUG_CRASH_RETURN (value) is equivalent to DBUG_RETURN which notifies the
      end of a function but in addition to it allows for crashing the server
      while returning from the function if the appropriate dbug instruction is
      activate. In this case, the dbug instruction should be
      "+d,function_crash_return". Note that "function" should be the same string
      used by either the DBUG_ENTER or DBUG_CRASH_ENTER.
      
      DBUG_CRASH_VOID_RETURN (value) is equivalent to DBUG_VOID_RETURN which
      notifies the end of a function but in addition to it allows for crashing
      the server while returning from the function if the appropriate dbug
      instruction is activate. In this case, the dbug instruction should be
      "+d,function_crash_return". Note that "function" should be the same string
      used by either the DBUG_ENTER or DBUG_CRASH_ENTER.
      
      To inject other faults, for instance, wrong return values, one should rely
      on the macros already available. The current patch also removes a set of
      macros that were either not being used or were redundant as other macros
      could be used to provide the same feature. In the future, we also consider
      dynamic instrumentation of the code.
      
      
      BUG#45747 DBUG_CRASH_* is not setting the strict option
      ---------
            
      When combining DBUG_CRASH_* with "--debug=d:t:i:A,file" the server crashes
      due to a call to the abort function in the DBUG_CRASH_* macro althought the
      appropriate keyword has not been set.
[27 Oct 2009 9:48] Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20091027094604-9p7kplu1vd2cvcju) (version source revid:zhenxing.he@sun.com-20091026140226-uhnqejkyqx1aeilc) (merge vers: 6.0.14-alpha) (pib:13)
[27 Oct 2009 18:00] Jon Stephens
Closed again w/o further action; see my previous comment.
[12 Nov 2009 8:16] Bugs System
Pushed into 5.5.0-beta (revid:alik@sun.com-20091110093229-0bh5hix780cyeicl) (version source revid:alik@sun.com-20091027095744-rf45u3x3q5d1f5y0) (merge vers: 5.5.0-beta) (pib:13)
[12 Nov 2009 12:12] Jon Stephens
Re-closed w/o further action; see previous comments.