Display thread id in _dbus_verbose to be able to see threading issues. 17/199017/1
authorRalf Habacker <ralf.habacker@freenet.de>
Tue, 10 May 2016 14:51:25 +0000 (16:51 +0200)
committersanghyeok.oh <sanghyeok.oh@samsung.com>
Fri, 1 Feb 2019 01:20:01 +0000 (10:20 +0900)
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=95191
Change-Id: I16b39c8c3123436d54655a67f9d00aa090933aba
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
dbus/dbus-internals.c
dbus/dbus-sysdeps-pthread.c
dbus/dbus-sysdeps-thread-win.c
dbus/dbus-sysdeps-win.c
dbus/dbus-sysdeps.h

index 30a5fa7..3f10c0c 100644 (file)
@@ -281,12 +281,6 @@ _dbus_warn_check_failed(const char *format,
 static dbus_bool_t verbose_initted = FALSE;
 static dbus_bool_t verbose = TRUE;
 
-/** Whether to show the current thread in verbose messages */
-#define PTHREAD_IN_VERBOSE 0
-#if PTHREAD_IN_VERBOSE
-#include <pthread.h>
-#endif
-
 #ifdef DBUS_USE_OUTPUT_DEBUG_STRING
 static char module_name[1024];
 #endif
@@ -406,11 +400,7 @@ _dbus_verbose_real (
   /* Print out pid before the line */
   if (need_pid)
     {
-#if PTHREAD_IN_VERBOSE
-      fprintf (stderr, "%lu: 0x%lx: ", _dbus_pid_for_log (), pthread_self ());
-#else
-      fprintf (stderr, "%lu: ", _dbus_pid_for_log ());
-#endif
+      _dbus_print_thread ();
     }
 #endif
 
index 1300ec3..bc0b2c3 100644 (file)
@@ -28,6 +28,7 @@
 
 #include <sys/time.h>
 #include <pthread.h>
+#include <stdio.h>
 #include <string.h>
 
 #ifdef HAVE_ERRNO_H
@@ -300,3 +301,20 @@ _dbus_threads_unlock_platform_specific (void)
 {
   pthread_mutex_unlock (&init_mutex);
 }
+
+#ifdef DBUS_ENABLE_VERBOSE_MODE
+/*
+ * If we can identify the current process and/or thread, print them to stderr followed by a colon.
+ */
+void
+_dbus_print_thread (void)
+{
+#ifdef __linux__
+  /* we know a pthread_t is numeric on Linux */
+  fprintf (stderr, "%lu: 0x%lx: ", _dbus_pid_for_log (), (unsigned long) pthread_self ());
+#else
+  /* in principle pthread_t isn't required to be printable */
+  fprintf (stderr, "%lu: ", _dbus_pid_for_log ());
+#endif
+}
+#endif
index 0887a54..d006cb8 100644 (file)
@@ -300,3 +300,11 @@ _dbus_threads_unlock_platform_specific (void)
   _dbus_assert (global_init_done);
   LeaveCriticalSection (&init_lock);
 }
+
+#ifdef DBUS_ENABLE_VERBOSE_MODE
+void
+_dbus_print_thread (void)
+{
+  fprintf (stderr, "%lu: 0x%04lx: ", _dbus_pid_for_log (), GetCurrentThreadId ());
+}
+#endif
index d19267e..f535d9a 100644 (file)
@@ -3706,4 +3706,3 @@ _dbus_restore_socket_errno (int saved_errno)
 
 /** @} end of sysdeps-win */
 /* tests in dbus-sysdeps-util.c */
-
index 2f493b0..fc3818f 100644 (file)
@@ -491,6 +491,10 @@ DBUS_PRIVATE_EXPORT
 int _dbus_printf_string_upper_bound (const char *format,
                                      va_list args);
 
+#ifdef DBUS_ENABLE_VERBOSE_MODE
+DBUS_PRIVATE_EXPORT
+void _dbus_print_thread (void);
+#endif
 
 /**
  * Portable struct with stat() results