mariadb/dbug
unknown a9089cf460 Bug#26243 mysql command line crash after control-c
- Backported the 5.1 DBUG to 5.0.
- Avoid memory cleanup race on Windows client for CTRL-C


client/mysql.cc:
  Bug#26243 mysql command line crash after control-c
  - On Windows, the sigint handler shouldn't call mysql_end
  because the main thread will do so automatically.
  - Remove unnecessary signal call from the sigint handler.
  - Call my_end with proper value.
dbug/dbug.c:
  Bug#26243 mysql command line crash after control-c
  - Backported the 5.1 DBUG library. The old version uses a non-thread 
  safe global variable 'static struct state *stack'.
dbug/factorial.c:
  Bug#26243 mysql command line crash after control-c
  - Backported the 5.1 DBUG library. The old version uses a non-thread 
  safe global variable 'static struct state *stack'.
dbug/user.r:
  Bug#26243 mysql command line crash after control-c
  - Backported the 5.1 DBUG library. The old version uses a non-thread 
  safe global variable 'static struct state *stack'.
include/my_dbug.h:
  Bug#26243 mysql command line crash after control-c
  - Backported the 5.1 DBUG library. The old version uses a non-thread 
  safe global variable 'static struct state *stack'.
libmysql/libmysql.c:
  Bug#26243 mysql command line crash after control-c
  - Update for new DBUG library.
myisam/mi_open.c:
  Bug#26243 mysql command line crash after control-c
  - Update for new DBUG library.
sql/ha_federated.cc:
  Bug#26243 mysql command line crash after control-c
  - Update for new DBUG library.
sql/ha_innodb.cc:
  Bug#26243 mysql command line crash after control-c
  - Update for new DBUG library.
sql/ha_myisammrg.cc:
  Bug#26243 mysql command line crash after control-c
  - Update for new DBUG library.
sql/item_cmpfunc.cc:
  Bug#26243 mysql command line crash after control-c
  - Update for new DBUG library.
sql/mysqld.cc:
  Bug#26243 mysql command line crash after control-c
  - Update for new DBUG library.
sql/net_serv.cc:
  Bug#26243 mysql command line crash after control-c
  - Update for new DBUG library.
sql/opt_range.cc:
  Bug#26243 mysql command line crash after control-c
  - Update for new DBUG library.
sql/set_var.cc:
  Bug#26243 mysql command line crash after control-c
  - Update for new DBUG library.
sql/slave.cc:
  Bug#26243 mysql command line crash after control-c
  - Update for new DBUG library.
sql/sql_cache.cc:
  Bug#26243 mysql command line crash after control-c
  - Update for new DBUG library.
sql/sql_select.cc:
  Bug#26243 mysql command line crash after control-c
  - Update for new DBUG library.
tests/mysql_client_test.c:
  Bug#26243 mysql command line crash after control-c
  - Update for new DBUG library.
2008-03-28 14:02:27 -04:00
..
.cvsignore
CMakeLists.txt CMakeLists.txt, README, configure.js 2007-08-03 21:51:37 +02:00
dbug.c Bug#26243 mysql command line crash after control-c 2008-03-28 14:02:27 -04:00
dbug_add_tags.pl added DBUG_ENTER/RETURN tags, dbug_add_tags.pl bugfix 2002-11-05 16:06:11 +01:00
dbug_analyze.c dbug/dbug_analyze.c : Avoid the unresolved symbol "my_thread_global_init()" 2007-04-23 13:36:18 +02:00
dbug_long.h dbug: DBUG_EXECUTE_IF macro, build user manual automatically, document all features 2004-11-04 22:29:00 +01:00
doinstall.sh
example1.c document DBUG_OUTPUT() 2004-11-11 14:42:35 +01:00
example2.c document DBUG_OUTPUT() 2004-11-11 14:42:35 +01:00
example3.c document DBUG_OUTPUT() 2004-11-11 14:42:35 +01:00
factorial.c Bug#26243 mysql command line crash after control-c 2008-03-28 14:02:27 -04:00
install.sh
main.c document DBUG_OUTPUT() 2004-11-11 14:42:35 +01:00
Makefile.am my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
mklintlib.sh
monty.doc monty.doc: 2004-11-29 13:26:12 -06:00
my_main.c Several fixes revelaled by Intel compiler. 2005-09-23 16:47:08 +03:00
qmake.cmd
readme.prof
sanity.c Changed to use my_global.h 2001-09-14 02:54:33 +03:00
user.r Bug#26243 mysql command line crash after control-c 2008-03-28 14:02:27 -04:00
vargs.h

Hi,

I'm sending you the modifications I made to your Dbug routines to
allow profiling in a (relatively) machine independent fashion.
I use your Dbug routines fairly extensively.  Unfortunately, it's
a royal pain to have to keep profiled versions of various libraries
around.  The modifications allow profiling without the need for this.

How it works.
------------

Basically, I just added code in the dbug routines to write out a file
called dbugmon.out (by default).  This is an ascii file containing lines
of the form:

<function-name> E <time-entered>
<function-name> X <time-exited>

A second program (analyze) reads this file, and produces a report on
standard output.

Profiling is enabled through the `g' flag.  It can take a list of
procedure names for which profiling is enabled.  By default, it
profiles all procedures.

The code in ``dbug.c'' opens the profile file for appending.  This
is in order that one can run a program several times, and get the
sum total of all the times, etc.

The only system dependent part that I'm aware of is the routine
Clock() at the end of dbug.c.  This returns the elapsed user time
in milliseconds.  The version which I have is for 4.3 BSD.  As I
don't have access to other systems, I'm not certain how this would
change.

An example of the report generated follows:

		Profile of Execution
		Execution times are in milliseconds

		    Calls			    Time
		    -----			    ----
		Times	Percentage	Time Spent	Percentage
Function	Called	of total	in Function	of total    Importance
========	======	==========	===========	==========  ==========
factorial      	     5	     83.33	         30	    100.00        8333
main           	     1	     16.67	          0	      0.00           0
========	======	==========	===========	==========
Totals         	     6	    100.00	         30	    100.00


As you can see, it's quite self-evident.  The ``Importance'' column is a
metric obtained by multiplying the percentage of the calls and the percentage
of the time.  Functions with higher 'importance' benefit the most from
being sped up.

I'm really not certain how to add support for setjmp/longjmp, or for
child processes, so I've ignored that for the time being.  In most of
the code that I write, it isn't necessary.  If you have any good ideas,
feel free to add them.

This has been very useful to me.  If you can use it as part of your
dbug distribution, please feel free to do so.

Regards,

				Binayak Banerjee
		{allegra | astrovax | bpa | burdvax}!sjuvax!bbanerje
			bbanerje%sjuvax.sju.edu@relay.cs.net
				July 9, 1987