1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-30 11:22:14 +03:00

Bug#59579 rw_lock_debug_print outputs to stderr

rw_lock_debug_print(): Add parameter FILE* for specifying the output stream.
rw_lock_list_print_info(): Invoke rw_lock_debug_print() on file, not stderr.
This commit is contained in:
Marko Mäkelä
2011-01-18 12:25:13 +02:00
parent 1f3975b4f8
commit 359bddbee1
7 changed files with 34 additions and 24 deletions

View File

@@ -1,7 +1,7 @@
/****************************************************** /******************************************************
The read-write lock (for threads, not for database transactions) The read-write lock (for threads, not for database transactions)
(c) 1995 Innobase Oy Copyright (c) 1995, 2011, Oracle and/or its affiliates. All Rights Reserved.
Created 9/11/1995 Heikki Tuuri Created 9/11/1995 Heikki Tuuri
*******************************************************/ *******************************************************/
@@ -409,6 +409,7 @@ Prints info of a debug struct. */
void void
rw_lock_debug_print( rw_lock_debug_print(
/*================*/ /*================*/
FILE* f, /* in: output stream */
rw_lock_debug_t* info); /* in: debug struct */ rw_lock_debug_t* info); /* in: debug struct */
#endif /* UNIV_SYNC_DEBUG */ #endif /* UNIV_SYNC_DEBUG */

View File

@@ -1,7 +1,7 @@
/****************************************************** /******************************************************
The wait array used in synchronization primitives The wait array used in synchronization primitives
(c) 1995 Innobase Oy Copyright (c) 1995, 2011, Oracle and/or its affiliates. All Rights Reserved.
Created 9/5/1995 Heikki Tuuri Created 9/5/1995 Heikki Tuuri
*******************************************************/ *******************************************************/
@@ -709,7 +709,7 @@ print:
fprintf(stderr, "rw-lock %p ", fprintf(stderr, "rw-lock %p ",
(void*) lock); (void*) lock);
sync_array_cell_print(stderr, cell); sync_array_cell_print(stderr, cell);
rw_lock_debug_print(debug); rw_lock_debug_print(stderr, debug);
return(TRUE); return(TRUE);
} }
} }

View File

@@ -1,7 +1,7 @@
/****************************************************** /******************************************************
The read-write lock (for thread synchronization) The read-write lock (for thread synchronization)
(c) 1995 Innobase Oy Copyright (c) 1995, 2011, Oracle and/or its affiliates. All Rights Reserved.
Created 9/11/1995 Heikki Tuuri Created 9/11/1995 Heikki Tuuri
*******************************************************/ *******************************************************/
@@ -830,7 +830,7 @@ rw_lock_list_print_info(
info = UT_LIST_GET_FIRST(lock->debug_list); info = UT_LIST_GET_FIRST(lock->debug_list);
while (info != NULL) { while (info != NULL) {
rw_lock_debug_print(info); rw_lock_debug_print(file, info);
info = UT_LIST_GET_NEXT(list, info); info = UT_LIST_GET_NEXT(list, info);
} }
} }
@@ -870,7 +870,7 @@ rw_lock_print(
info = UT_LIST_GET_FIRST(lock->debug_list); info = UT_LIST_GET_FIRST(lock->debug_list);
while (info != NULL) { while (info != NULL) {
rw_lock_debug_print(info); rw_lock_debug_print(stderr, info);
info = UT_LIST_GET_NEXT(list, info); info = UT_LIST_GET_NEXT(list, info);
} }
} }
@@ -882,28 +882,29 @@ Prints info of a debug struct. */
void void
rw_lock_debug_print( rw_lock_debug_print(
/*================*/ /*================*/
FILE* f, /* in: output stream */
rw_lock_debug_t* info) /* in: debug struct */ rw_lock_debug_t* info) /* in: debug struct */
{ {
ulint rwt; ulint rwt;
rwt = info->lock_type; rwt = info->lock_type;
fprintf(stderr, "Locked: thread %lu file %s line %lu ", fprintf(f, "Locked: thread %lu file %s line %lu ",
(ulong) os_thread_pf(info->thread_id), info->file_name, (ulong) os_thread_pf(info->thread_id), info->file_name,
(ulong) info->line); (ulong) info->line);
if (rwt == RW_LOCK_SHARED) { if (rwt == RW_LOCK_SHARED) {
fputs("S-LOCK", stderr); fputs("S-LOCK", f);
} else if (rwt == RW_LOCK_EX) { } else if (rwt == RW_LOCK_EX) {
fputs("X-LOCK", stderr); fputs("X-LOCK", f);
} else if (rwt == RW_LOCK_WAIT_EX) { } else if (rwt == RW_LOCK_WAIT_EX) {
fputs("WAIT X-LOCK", stderr); fputs("WAIT X-LOCK", f);
} else { } else {
ut_error; ut_error;
} }
if (info->pass != 0) { if (info->pass != 0) {
fprintf(stderr, " pass value %lu", (ulong) info->pass); fprintf(f, " pass value %lu", (ulong) info->pass);
} }
putc('\n', stderr); putc('\n', f);
} }
/******************************************************************* /*******************************************************************

View File

@@ -1,3 +1,9 @@
2011-01-18 The InnoDB Team
* include/sync0rw.h, sync/sync0arr.c, sync/sync0rw.c:
Fix Bug#59579 rw_lock_debug_print outputs to stderr, not to
SHOW ENGINE INNODB STATUS
2011-01-14 The InnoDB Team 2011-01-14 The InnoDB Team
* btr/btr0cur.c, dict/dict0dict.c, handler/ha_innodb.cc, * btr/btr0cur.c, dict/dict0dict.c, handler/ha_innodb.cc,
include/btr0cur.h, include/dict0mem.h, include/rem0cmp.h, include/btr0cur.h, include/dict0mem.h, include/rem0cmp.h,

View File

@@ -1,6 +1,6 @@
/***************************************************************************** /*****************************************************************************
Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved. Copyright (c) 1995, 2011, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2008, Google Inc. Copyright (c) 2008, Google Inc.
Portions of this file contain modifications contributed and copyrighted by Portions of this file contain modifications contributed and copyrighted by
@@ -490,6 +490,7 @@ UNIV_INTERN
void void
rw_lock_debug_print( rw_lock_debug_print(
/*================*/ /*================*/
FILE* f, /*!< in: output stream */
rw_lock_debug_t* info); /*!< in: debug struct */ rw_lock_debug_t* info); /*!< in: debug struct */
#endif /* UNIV_SYNC_DEBUG */ #endif /* UNIV_SYNC_DEBUG */

View File

@@ -1,6 +1,6 @@
/***************************************************************************** /*****************************************************************************
Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. Copyright (c) 1995, 2011, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2008, Google Inc. Copyright (c) 2008, Google Inc.
Portions of this file contain modifications contributed and copyrighted by Portions of this file contain modifications contributed and copyrighted by
@@ -715,7 +715,7 @@ print:
fprintf(stderr, "rw-lock %p ", fprintf(stderr, "rw-lock %p ",
(void*) lock); (void*) lock);
sync_array_cell_print(stderr, cell); sync_array_cell_print(stderr, cell);
rw_lock_debug_print(debug); rw_lock_debug_print(stderr, debug);
return(TRUE); return(TRUE);
} }
} }

View File

@@ -1,6 +1,6 @@
/***************************************************************************** /*****************************************************************************
Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. Copyright (c) 1995, 2011, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2008, Google Inc. Copyright (c) 2008, Google Inc.
Portions of this file contain modifications contributed and copyrighted by Portions of this file contain modifications contributed and copyrighted by
@@ -925,7 +925,7 @@ rw_lock_list_print_info(
info = UT_LIST_GET_FIRST(lock->debug_list); info = UT_LIST_GET_FIRST(lock->debug_list);
while (info != NULL) { while (info != NULL) {
rw_lock_debug_print(info); rw_lock_debug_print(file, info);
info = UT_LIST_GET_NEXT(list, info); info = UT_LIST_GET_NEXT(list, info);
} }
} }
@@ -973,7 +973,7 @@ rw_lock_print(
info = UT_LIST_GET_FIRST(lock->debug_list); info = UT_LIST_GET_FIRST(lock->debug_list);
while (info != NULL) { while (info != NULL) {
rw_lock_debug_print(info); rw_lock_debug_print(stderr, info);
info = UT_LIST_GET_NEXT(list, info); info = UT_LIST_GET_NEXT(list, info);
} }
} }
@@ -985,28 +985,29 @@ UNIV_INTERN
void void
rw_lock_debug_print( rw_lock_debug_print(
/*================*/ /*================*/
FILE* f, /*!< in: output stream */
rw_lock_debug_t* info) /*!< in: debug struct */ rw_lock_debug_t* info) /*!< in: debug struct */
{ {
ulint rwt; ulint rwt;
rwt = info->lock_type; rwt = info->lock_type;
fprintf(stderr, "Locked: thread %lu file %s line %lu ", fprintf(f, "Locked: thread %lu file %s line %lu ",
(ulong) os_thread_pf(info->thread_id), info->file_name, (ulong) os_thread_pf(info->thread_id), info->file_name,
(ulong) info->line); (ulong) info->line);
if (rwt == RW_LOCK_SHARED) { if (rwt == RW_LOCK_SHARED) {
fputs("S-LOCK", stderr); fputs("S-LOCK", f);
} else if (rwt == RW_LOCK_EX) { } else if (rwt == RW_LOCK_EX) {
fputs("X-LOCK", stderr); fputs("X-LOCK", f);
} else if (rwt == RW_LOCK_WAIT_EX) { } else if (rwt == RW_LOCK_WAIT_EX) {
fputs("WAIT X-LOCK", stderr); fputs("WAIT X-LOCK", f);
} else { } else {
ut_error; ut_error;
} }
if (info->pass != 0) { if (info->pass != 0) {
fprintf(stderr, " pass value %lu", (ulong) info->pass); fprintf(f, " pass value %lu", (ulong) info->pass);
} }
putc('\n', stderr); putc('\n', f);
} }
/***************************************************************//** /***************************************************************//**