DMDircthe intelligent IRC client

Viewing Issue Advanced Details

ID 0001429 Category [DMDirc] *Unsorted Severity minor
Reproducibility always Date Submitted 2008-07-16 20:57 Last Update 2008-08-28 12:50
Reporter MD87 Assigned To Dataforce View Status public
Priority normal Status assigned Resolution open
Platform Fixed in Version Target Version 0.6.3
Product Version Product Build
Summary 0001429: Plugin system creates stupid number of threads
Description Plugin system creates stupid number of threads
Steps To Reproduce Start client, open prefs dialog, ZOMGS THREADS!
Needs unit test no

Relationships

Notes

(0002906)
Dataforce (administrator)
2008-07-17 02:49

Unable to reproduce.

--------------------------------------
2008-07-17 02:48:10
Full thread dump Java HotSpot(TM) Server VM (10.0-b22 mixed mode):

"SwingStatusBar messageTimer" prio=10 tid=0x7a58dc00 nid=0x6dd8 in Object.wait() [0x763a2000..0x763a2fc0]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:485)
        at java.util.TimerThread.mainLoop(Timer.java:483)
        - locked <0xaf173340> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:462)

"IRCParser pingTimer" prio=10 tid=0x08891000 nid=0x6f5 in Object.wait() [0x7625e000..0x7625f140]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.util.TimerThread.mainLoop(Timer.java:509)
        - locked <0x8b324220> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:462)

"IRCParser pingTimer" prio=10 tid=0x0848bc00 nid=0x546 in Object.wait() [0x7a7ba000..0x7a7bb0c0]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.util.TimerThread.mainLoop(Timer.java:509)
        - locked <0x8b258f88> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:462)

"IRCParser pingTimer" prio=10 tid=0x08893800 nid=0x3a4 in Object.wait() [0x7620d000..0x7620ddc0]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.util.TimerThread.mainLoop(Timer.java:509)
        - locked <0x8b0aa0a0> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:462)

"IRC Parser thread" prio=10 tid=0x08892800 nid=0x394 runnable [0x761bc000..0x761bcf40]
   java.lang.Thread.State: RUNNABLE
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:129)
        at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
        at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
        at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
        - locked <0x8b061b98> (a java.io.InputStreamReader)
        at java.io.InputStreamReader.read(InputStreamReader.java:167)
        at java.io.BufferedReader.fill(BufferedReader.java:136)
        at java.io.BufferedReader.readLine(BufferedReader.java:299)
        - locked <0x8b061b98> (a java.io.InputStreamReader)
        at java.io.BufferedReader.readLine(BufferedReader.java:362)
        at com.dmdirc.parser.IRCParser.run(IRCParser.java:764)
        at java.lang.Thread.run(Thread.java:619)

"IRC Parser thread" prio=10 tid=0x08892000 nid=0x387 runnable [0x762af000..0x762afec0]
   java.lang.Thread.State: RUNNABLE
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:129)
        at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
        at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
        at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
        - locked <0x8b000ea0> (a java.io.InputStreamReader)
        at java.io.InputStreamReader.read(InputStreamReader.java:167)
        at java.io.BufferedReader.fill(BufferedReader.java:136)
        at java.io.BufferedReader.readLine(BufferedReader.java:299)
        - locked <0x8b000ea0> (a java.io.InputStreamReader)
        at java.io.BufferedReader.readLine(BufferedReader.java:362)
        at com.dmdirc.parser.IRCParser.run(IRCParser.java:764)
        at java.lang.Thread.run(Thread.java:619)

"IRCParser pingTimer" prio=10 tid=0x08890800 nid=0x360 in Object.wait() [0x765d9000..0x765da140]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.util.TimerThread.mainLoop(Timer.java:509)
        - locked <0x8afd37b0> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:462)

"Server Reconnect Timer" prio=10 tid=0x0888f000 nid=0x311 in Object.wait() [0x76300000..0x763010c0]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:485)
        at java.util.TimerThread.mainLoop(Timer.java:483)
        - locked <0x8afc0888> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:462)

"IRC Parser thread" prio=10 tid=0x0899d800 nid=0x30f runnable [0x766cc000..0x766ccdc0]
   java.lang.Thread.State: RUNNABLE
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:129)
        at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
        at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
        at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
        - locked <0x8afc0750> (a java.io.InputStreamReader)
        at java.io.InputStreamReader.read(InputStreamReader.java:167)
        at java.io.BufferedReader.fill(BufferedReader.java:136)
        at java.io.BufferedReader.readLine(BufferedReader.java:299)
        - locked <0x8afc0750> (a java.io.InputStreamReader)
        at java.io.BufferedReader.readLine(BufferedReader.java:362)
        at com.dmdirc.parser.IRCParser.run(IRCParser.java:764)
        at java.lang.Thread.run(Thread.java:619)

"Server Reconnect Timer" prio=10 tid=0x0899e800 nid=0x301 in Object.wait() [0x76810000..0x76810f40]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:485)
        at java.util.TimerThread.mainLoop(Timer.java:483)
        - locked <0x8afcceb0> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:462)

"Server Reconnect Timer" prio=10 tid=0x0888e400 nid=0x293 in Object.wait() [0x7676e000..0x7676efc0]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:485)
        at java.util.TimerThread.mainLoop(Timer.java:483)
        - locked <0x8af89208> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:462)

"IRC Parser thread" prio=10 tid=0x087e8800 nid=0x7ac3 runnable [0x76495000..0x76495dc0]
   java.lang.Thread.State: RUNNABLE
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:129)
        at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
        at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
        at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
        - locked <0x8b259658> (a java.io.InputStreamReader)
        at java.io.InputStreamReader.read(InputStreamReader.java:167)
        at java.io.BufferedReader.fill(BufferedReader.java:136)
        at java.io.BufferedReader.readLine(BufferedReader.java:299)
        - locked <0x8b259658> (a java.io.InputStreamReader)
        at java.io.BufferedReader.readLine(BufferedReader.java:362)
        at com.dmdirc.parser.IRCParser.run(IRCParser.java:764)
        at java.lang.Thread.run(Thread.java:619)

"Update Checker Timer" prio=10 tid=0x08a1bc00 nid=0x73d9 in Object.wait() [0x76588000..0x765890c0]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.util.TimerThread.mainLoop(Timer.java:509)
        - locked <0x88649e70> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:462)

"DestroyJavaVM" prio=10 tid=0x08058c00 nid=0x3176 waiting on condition [0x00000000..0xb7d83090]
   java.lang.Thread.State: RUNNABLE

"Server Who Timer" prio=10 tid=0x083fb000 nid=0x31f4 in Object.wait() [0x7a80b000..0x7a80c140]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.util.TimerThread.mainLoop(Timer.java:509)
        - locked <0x817545f0> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:462)

"Server Who Timer" prio=10 tid=0x0882f000 nid=0x31f2 in Object.wait() [0x7a8ad000..0x7a8ade40]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.util.TimerThread.mainLoop(Timer.java:509)
        - locked <0x81754998> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:462)

"Server Who Timer" prio=10 tid=0x08452c00 nid=0x31e4 in Object.wait() [0x7aa5c000..0x7aa5cf40]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.util.TimerThread.mainLoop(Timer.java:509)
        - locked <0x81656bc8> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:462)

"TimerQueue" daemon prio=10 tid=0x7abc9800 nid=0x31d5 in Object.wait() [0x7ac60000..0x7ac60fc0]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at javax.swing.TimerQueue.run(TimerQueue.java:236)
        - locked <0x816e74a0> (a javax.swing.TimerQueue)
        at java.lang.Thread.run(Thread.java:619)

"Server Who Timer" prio=10 tid=0x083bec00 nid=0x31d4 in Object.wait() [0x7acb1000..0x7acb2140]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.util.TimerThread.mainLoop(Timer.java:509)
        - locked <0x815d68a8> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:462)

"LoggingPlugin Timer" prio=10 tid=0x7b4ac800 nid=0x31c1 in Object.wait() [0x7b083000..0x7b083dc0]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x815dc548> (a java.util.TaskQueue)
        at java.lang.Object.wait(Object.java:485)
        at java.util.TimerThread.mainLoop(Timer.java:483)
        - locked <0x815dc548> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:462)

"Time plugin timer" prio=10 tid=0x7b4f5800 nid=0x31b7 in Object.wait() [0x7b269000..0x7b26a0c0]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.util.TimerThread.mainLoop(Timer.java:509)
        - locked <0x815c0e28> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:462)

"Thread-31" daemon prio=10 tid=0x7b4dc400 nid=0x31b5 waiting on condition [0x7b30b000..0x7b30bdc0]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for <0x816579e8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1925)
        at java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:317)
        at sun.awt.X11.XTrayIconPeer$Balloon$Displayer.run(XTrayIconPeer.java:877)

"AWT-EventQueue-1" prio=10 tid=0x7b492800 nid=0x31b2 in Object.wait() [0x7b3fe000..0x7b3ff040]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:485)
        at java.awt.EventQueue.getNextEvent(EventQueue.java:479)
        - locked <0x81687590> (a com.dmdirc.ui.swing.DMDircEventQueue)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:245)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

"AWT-Shutdown" prio=10 tid=0x7b490c00 nid=0x31b1 in Object.wait() [0x7b580000..0x7b580fc0]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:485)
        at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:259)
        - locked <0x815de770> (a java.lang.Object)
        at java.lang.Thread.run(Thread.java:619)

"AWT-XAWT" daemon prio=10 tid=0x7c53f400 nid=0x3194 runnable [0x7c0a7000..0x7c0a7f40]
   java.lang.Thread.State: RUNNABLE
        at sun.awt.X11.XToolkit.waitForEvents(Native Method)
        at sun.awt.X11.XToolkit.run(XToolkit.java:544)
        at sun.awt.X11.XToolkit.run(XToolkit.java:519)
        at java.lang.Thread.run(Thread.java:619)

"Java2D Disposer" daemon prio=10 tid=0x082ef000 nid=0x3189 in Object.wait() [0x7c132000..0x7c132ec0]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
        - locked <0x816933a8> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
        at sun.java2d.Disposer.run(Disposer.java:125)
        at java.lang.Thread.run(Thread.java:619)

"RMI TCP Accept-1099" daemon prio=10 tid=0x08269c00 nid=0x3186 runnable [0x7c742000..0x7c743040]
   java.lang.Thread.State: RUNNABLE
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
        - locked <0x815d1f90> (a java.net.SocksSocketImpl)
        at java.net.ServerSocket.implAccept(ServerSocket.java:453)
        at java.net.ServerSocket.accept(ServerSocket.java:421)
        at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:369)
        at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:341)
        at java.lang.Thread.run(Thread.java:619)

"GC Daemon" daemon prio=10 tid=0x08261000 nid=0x3185 in Object.wait() [0x7c793000..0x7c793fc0]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at sun.misc.GC$Daemon.run(GC.java:100)
        - locked <0x81400080> (a sun.misc.GC$LatencyLock)

"RMI Reaper" prio=10 tid=0x08260800 nid=0x3184 in Object.wait() [0x7c7e4000..0x7c7e5140]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x81404ec8> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
        - locked <0x81404ec8> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
        at sun.rmi.transport.ObjectTable$Reaper.run(ObjectTable.java:333)
        at java.lang.Thread.run(Thread.java:619)

"RMI TCP Accept-0" daemon prio=10 tid=0x081fd800 nid=0x3183 runnable [0x7c835000..0x7c8360c0]
   java.lang.Thread.State: RUNNABLE
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
        - locked <0x814030f8> (a java.net.SocksSocketImpl)
        at java.net.ServerSocket.implAccept(ServerSocket.java:453)
        at java.net.ServerSocket.accept(ServerSocket.java:421)
        at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:369)
        at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:341)
        at java.lang.Thread.run(Thread.java:619)

"Low Memory Detector" daemon prio=10 tid=0x08120400 nid=0x3181 runnable [0x00000000..0x00000000]
   java.lang.Thread.State: RUNNABLE

"CompilerThread1" daemon prio=10 tid=0x0811ec00 nid=0x3180 waiting on condition [0x00000000..0x7c9e9408]
   java.lang.Thread.State: RUNNABLE

"CompilerThread0" daemon prio=10 tid=0x0811c400 nid=0x317f waiting on condition [0x00000000..0x7ca6a388]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" daemon prio=10 tid=0x0811b000 nid=0x317e waiting on condition [0x00000000..0x00000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" daemon prio=10 tid=0x080ff000 nid=0x317d in Object.wait() [0x7cc1f000..0x7cc1ffc0]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
        - locked <0x8141dbc0> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=10 tid=0x080fe000 nid=0x317c in Object.wait() [0x7cc71000..0x7cc71140]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:485)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
        - locked <0x8141d8b8> (a java.lang.ref.Reference$Lock)

"VM Thread" prio=10 tid=0x080fac00 nid=0x317b runnable

"GC task thread#0 (ParallelGC)" prio=10 tid=0x0805f800 nid=0x3177 runnable

"GC task thread#1 (ParallelGC)" prio=10 tid=0x08060800 nid=0x3178 runnable

"GC task thread#2 (ParallelGC)" prio=10 tid=0x08061800 nid=0x3179 runnable

"GC task thread#3 (ParallelGC)" prio=10 tid=0x08062c00 nid=0x317a runnable

"VM Periodic Task Thread" prio=10 tid=0x08121c00 nid=0x3182 waiting on condition

JNI global references: 1282

Heap
 PSYoungGen total 10624K, used 6611K [0xaf080000, 0xb0030000, 0xb4c00000)
  eden space 7872K, 49% used [0xaf080000,0xaf44cd40,0xaf830000)
  from space 2752K, 98% used [0xaf860000,0xafb08020,0xafb10000)
  to space 4096K, 0% used [0xafc30000,0xafc30000,0xb0030000)
 PSOldGen total 179840K, used 178939K [0x81400000, 0x8c3a0000, 0xaf080000)
  object space 179840K, 99% used [0x81400000,0x8c2bef90,0x8c3a0000)
 PSPermGen total 17920K, used 17696K [0x7d400000, 0x7e580000, 0x81400000)
  object space 17920K, 98% used [0x7d400000,0x7e548290,0x7e580000)
(0003483)
Dataforce (administrator)
2008-08-28 12:50

Happens when opening prefs panel for the first time due to timeout for the resource manager.

PluginManager should handle ResourceManagers and use a single thread for handling timeouts.

Add Note

Note

Issue History

Date Modified Username Field Change
2008-07-16 20:57 MD87 New Issue
2008-07-16 20:57 MD87 Status new => assigned
2008-07-16 20:57 MD87 Assigned To => Dataforce
2008-07-17 02:49 Dataforce Note Added: 0002906
2008-08-05 14:27 MD87 Target Version 0.6 => 0.6.3
2008-08-05 14:27 MD87 Steps to Reproduce Updated
2008-08-28 12:50 Dataforce Note Added: 0003483