diff -urN orig-5.0.72sp1/innobase/include/lock0lock.h hack-5.0.72sp1/innobase/include/lock0lock.h --- orig-5.0.72sp1/innobase/include/lock0lock.h 2009-08-27 13:39:09.000000000 -0700 +++ hack-5.0.72sp1/innobase/include/lock0lock.h 2009-08-27 13:56:15.000000000 -0700 @@ -24,6 +24,7 @@ #endif /* UNIV_DEBUG */ /* Buffer for storing information about the most recent deadlock error */ extern FILE* lock_latest_err_file; +extern ulint srv_n_lock_deadlock_count; /************************************************************************* Gets the size of a lock struct. */ diff -urN orig-5.0.72sp1/innobase/include/srv0srv.h hack-5.0.72sp1/innobase/include/srv0srv.h --- orig-5.0.72sp1/innobase/include/srv0srv.h 2009-08-27 13:39:09.000000000 -0700 +++ hack-5.0.72sp1/innobase/include/srv0srv.h 2009-08-27 13:56:15.000000000 -0700 @@ -541,6 +541,7 @@ ulint innodb_buffer_pool_write_requests; ulint innodb_buffer_pool_read_ahead_seq; ulint innodb_buffer_pool_read_ahead_rnd; + ulint innodb_deadlocks; ulint innodb_dblwr_pages_written; ulint innodb_dblwr_writes; ulint innodb_log_waits; diff -urN orig-5.0.72sp1/innobase/lock/lock0lock.c hack-5.0.72sp1/innobase/lock/lock0lock.c --- orig-5.0.72sp1/innobase/lock/lock0lock.c 2009-08-27 13:39:09.000000000 -0700 +++ hack-5.0.72sp1/innobase/lock/lock0lock.c 2009-08-27 13:56:29.000000000 -0700 @@ -3206,6 +3206,7 @@ } lock_deadlock_found = TRUE; + srv_n_lock_deadlock_count++; fputs("*** WE ROLL BACK TRANSACTION (2)\n", lock_latest_err_file); diff -urN orig-5.0.72sp1/innobase/srv/srv0srv.c hack-5.0.72sp1/innobase/srv/srv0srv.c --- orig-5.0.72sp1/innobase/srv/srv0srv.c 2009-08-27 13:39:09.000000000 -0700 +++ hack-5.0.72sp1/innobase/srv/srv0srv.c 2009-08-27 13:56:42.000000000 -0700 @@ -344,6 +344,7 @@ static ulint srv_n_rows_deleted_old = 0; static ulint srv_n_rows_read_old = 0; +ulint srv_n_lock_deadlock_count = 0; ulint srv_n_lock_wait_count = 0; ulint srv_n_lock_wait_current_count = 0; ib_longlong srv_n_lock_wait_time = 0; @@ -1803,6 +1804,7 @@ export_vars.innodb_buffer_pool_pages_data= UT_LIST_GET_LEN(buf_pool->LRU); export_vars.innodb_buffer_pool_pages_dirty= UT_LIST_GET_LEN(buf_pool->flush_list); export_vars.innodb_buffer_pool_pages_free= UT_LIST_GET_LEN(buf_pool->free); + export_vars.innodb_deadlocks= srv_n_lock_deadlock_count; #ifdef UNIV_DEBUG export_vars.innodb_buffer_pool_pages_latched= buf_get_latched_pages_number(); #endif /* UNIV_DEBUG */ diff -urN orig-5.0.72sp1/sql/ha_innodb.cc hack-5.0.72sp1/sql/ha_innodb.cc --- orig-5.0.72sp1/sql/ha_innodb.cc 2009-08-27 13:39:09.000000000 -0700 +++ hack-5.0.72sp1/sql/ha_innodb.cc 2009-08-27 13:56:02.000000000 -0700 @@ -282,6 +282,8 @@ (char*) &export_vars.innodb_data_written, SHOW_LONG}, {"dblwr_pages_written", (char*) &export_vars.innodb_dblwr_pages_written, SHOW_LONG}, + {"deadlocks", + (char*) &export_vars.innodb_deadlocks, SHOW_LONG}, {"dblwr_writes", (char*) &export_vars.innodb_dblwr_writes, SHOW_LONG}, {"log_waits",