Print linux TID while crashing
authorKai Wang <kaiwang@fb.com>
Sat, 20 Dec 2014 06:24:54 +0000 (22:24 -0800)
committerDave Watson <davejwatson@fb.com>
Mon, 29 Dec 2014 18:39:59 +0000 (10:39 -0800)
Summary:
For servers using GLOG, all thread ID are get from gettid system call. So it
is very useful if we print this ID so during debugging I can find the log
of crashing thread.

I'm not sure who should review this diff. Just found you guys from previous
diffs touched this file :)

Test Plan:
See the crash log.
*** Aborted at 1419029404 (Unix time, try 'date -d @1419029404') ***
*** Signal 11 (SIGSEGV) (0x18) received by PID 18852 (pthread TID 0x7f52a1fff700) (linux TID 27908), stack trace: ***

Reviewed By: tudorb@fb.com

Subscribers: seanc, folly-diffs@

FB internal diff: D1752301

Signature: t1:1752301:1419032887:e43c2ace6914e54812149a8b8e84eaffaf42a09c

folly/experimental/symbolizer/SignalHandler.cpp
folly/experimental/symbolizer/test/SignalHandlerTest.cpp

index 2a98872e32ea3551dd2a073d887747f66c92fc8b..62b4952b96bc541cb0720df6cd7cd7b904395a6f 100644 (file)
@@ -19,6 +19,7 @@
 #include <folly/experimental/symbolizer/SignalHandler.h>
 
 #include <sys/types.h>
+#include <sys/syscall.h>
 #include <atomic>
 #include <ctime>
 #include <mutex>
@@ -205,8 +206,10 @@ void dumpSignalInfo(int signum, siginfo_t* siginfo) {
   printHex(reinterpret_cast<uint64_t>(siginfo->si_addr));
   print(") received by PID ");
   printDec(getpid());
-  print(" (TID ");
+  print(" (pthread TID ");
   printHex((uint64_t)pthread_self());
+  print(") (linux TID ");
+  printDec(syscall(__NR_gettid));
   print("), stack trace: ***\n");
 }
 
index 62ebf1e73a63d853f08e665cd775d6f993a9927b..d73628c7239b7f9c14bf1e8d59dfe5dd39cb21c2 100644 (file)
@@ -60,7 +60,8 @@ TEST(SignalHandler, Simple) {
       "^\\*\\*\\* Aborted at [0-9]+ \\(Unix time, try 'date -d @[0-9]+'\\) "
       "\\*\\*\\*\n"
       "\\*\\*\\* Signal 11 \\(SIGSEGV\\) \\(0x2a\\) received by PID [0-9]+ "
-      "\\(TID 0x[0-9a-f]+\\), stack trace: \\*\\*\\*\n"
+      "\\(pthread TID 0x[0-9a-f]+\\) \\(linux TID [0-9]+\\), "
+      "stack trace: \\*\\*\\*\n"
       ".*\n"
       "    @ [0-9a-f]+ folly::symbolizer::test::SignalHandler_Simple_Test"
       "::TestBody\\(\\)\n"