How to match threads from a Java thread dump and gdb
Issue
I have a problem of identify a ill thread of openjdk.
For example
"btpool0-9 - Acceptor0 SocketConnector @ 0.0.0.0:8983" prio=10 tid=0x9c027000 nid=0x2f56 runnable [0x9bd25000]
java.lang.Thread.State: RUNNABLE
at java.net.ServerSocket.implAccept(ServerSocket.java:468)
at java.net.ServerSocket.accept(ServerSocket.java:438)
at org.mortbay.jetty.bio.SocketConnector.accept(SocketConnector.java:97)
at org.mortbay.jetty.AbstractConnector$Acceptor.run(AbstractConnector.java:516)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
"btpool0-8" prio=10 tid=0x9c025800 nid=0x2f55 runnable [0x9bd76000]
java.lang.Thread.State: RUNNABLE
at java.lang.StringBuilder.toString(StringBuilder.java:447)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:1289)
at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:341)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:244)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
at org.mortbay.jetty.Server.handle(Server.java:285)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:821)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:208)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
"btpool0-7" prio=10 tid=0x9c024000 nid=0x2f54 runnable [0x9bdc7000]
java.lang.Thread.State: RUNNABLE
at java.lang.StringBuffer.toString(StringBuffer.java:602)
- locked <0xaf8d1788> (a java.lang.StringBuffer)
at org.mortbay.util.Utf8StringBuffer.toString(Utf8StringBuffer.java:146)
at org.mortbay.util.UrlEncoded.decodeUtf8To(UrlEncoded.java:257)
- locked <0xaf8d1720> (a org.mortbay.util.MultiMap)
at org.mortbay.jetty.HttpURI.decodeQueryTo(HttpURI.java:450)
at org.mortbay.jetty.Request.extractParameters(Request.java:1236)
at org.mortbay.jetty.Request.getParameterMap(Request.java:650)
at org.apache.solr.request.ServletSolrParams.<init>(ServletSolrParams.java:29)
at org.apache.solr.servlet.StandardRequestParser.parseParamsAndFillStreams(SolrRequestParsers.java:383)
at org.apache.solr.servlet.SolrRequestParsers.parse(SolrRequestParsers.java:114)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:212)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
I then use gdb to attach to the java process and run command info threads and I got a list of OS threads like
32 Thread 0xb7f75b90 (LWP 12094) 0x00bcb402 in __kernel_vsyscall ()
31 Thread 0x9cd08b90 (LWP 12095) 0x00bcb402 in __kernel_vsyscall ()
30 Thread 0x9cc87b90 (LWP 12096) 0x00bcb402 in __kernel_vsyscall ()
29 Thread 0x9cc06b90 (LWP 12097) 0x00bcb402 in __kernel_vsyscall ()
28 Thread 0x9cb85b90 (LWP 12098) 0x00bcb402 in __kernel_vsyscall ()
* 27 Thread 0x9c931b90 (LWP 12100) 0x00f69d4c in ?? () from /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/server/libjvm.so
26 Thread 0x9c8b0b90 (LWP 12101) 0x00bcb402 in __kernel_vsyscall ()
25 Thread 0x9c85fb90 (LWP 12102) 0x00bcb402 in __kernel_vsyscall ()
24 Thread 0x9c60eb90 (LWP 12103) 0x00bcb402 in __kernel_vsyscall ()
23 Thread 0x9c5bdb90 (LWP 12104) 0x00bcb402 in __kernel_vsyscall ()
22 Thread 0x9c53cb90 (LWP 12105) 0x00bcb402 in __kernel_vsyscall ()
21 Thread 0x9c4bbb90 (LWP 12106) 0x00bcb402 in __kernel_vsyscall ()
20 Thread 0x9c46ab90 (LWP 12107) 0x00bcb402 in __kernel_vsyscall ()
19 Thread 0x9c37fb90 (LWP 12108) 0x00bcb402 in __kernel_vsyscall ()
18 Thread 0x9bfffb90 (LWP 12109) 0x00bcb402 in __kernel_vsyscall ()
17 Thread 0x9bfaeb90 (LWP 12110) 0x00bcb402 in __kernel_vsyscall ()
16 Thread 0x9bf5db90 (LWP 12111) 0x00bcb402 in __kernel_vsyscall ()
15 Thread 0x9bf0cb90 (LWP 12112) 0x00bcb402 in __kernel_vsyscall ()
14 Thread 0x9bebbb90 (LWP 12113) 0x00bcb402 in __kernel_vsyscall ()
13 Thread 0x9be6ab90 (LWP 12114) 0x00bcb402 in __kernel_vsyscall ()
12 Thread 0x9be19b90 (LWP 12115) 0x00bcb402 in __kernel_vsyscall ()
11 Thread 0x9bdc8b90 (LWP 12116) 0x00bcb402 in __kernel_vsyscall ()
10 Thread 0x9bd77b90 (LWP 12117) 0x00bcb402 in __kernel_vsyscall ()
9 Thread 0x9bd26b90 (LWP 12118) 0x00bcb402 in __kernel_vsyscall ()
8 Thread 0x9bc3ab90 (LWP 12119) 0x00bcb402 in __kernel_vsyscall ()
7 Thread 0x9b7ffb90 (LWP 12120) 0x00bcb402 in __kernel_vsyscall ()
6 Thread 0x9bbddb90 (LWP 12121) 0x00bcb402 in __kernel_vsyscall ()
5 Thread 0x9bb8cb90 (LWP 12122) 0x00bcb402 in __kernel_vsyscall ()
4 Thread 0x9b7aeb90 (LWP 12141) 0x00bcb402 in __kernel_vsyscall ()
3 Thread 0x9b75db90 (LWP 12147) 0x00bcb402 in __kernel_vsyscall ()
2 Thread 0x9afffb90 (LWP 12192) 0x00bcb402 in __kernel_vsyscall ()
1 Thread 0xb7f766c0 (LWP 12093) 0x00bcb402 in __kernel_vsyscall ()
How do I find which Java threads map to which OS threads?
Environment
- Java
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.