How to match threads from a Java thread dump and gdb

Solution Verified - Updated -

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.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content