Bug 109344 - Another LTW Deadlock on Sun VMs
Summary: Another LTW Deadlock on Sun VMs
Status: REOPENED
Alias: None
Product: AspectJ
Classification: Tools
Component: Compiler (show other bugs)
Version: DEVELOPMENT   Edit
Hardware: PC Windows XP
: P5 critical (vote)
Target Milestone: ---   Edit
Assignee: Alexandre Vasseur CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on: 99861
Blocks:
  Show dependency tree
 
Reported: 2005-09-12 18:34 EDT by Ron Bodkin CLA
Modified: 2009-08-30 02:50 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ron Bodkin CLA 2005-09-12 18:34:42 EDT
I get the following deadlock fairly predictably when I run with load-time 
weaving on my Tomcat project using a Sun JVM. As usual, I don’t see any issues 
on JRockIt ;-) This happens with M3a and also with the Sept. 8 development 
build.

In this case, it looks like one application thread in Tomcat is waiting for the 
other to get a lock, but they are being loaded and hence woven in the opposite 
order. Is this actually a Tomcat bug? It seems like a tricky condition to deal 
with, when the application is synchronizing access and the class loading system 
adds in new synchronization blocks..

Sep 12, 2005 11:40:20 AM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
Full thread dump Java HotSpot(TM) Client VM (1.5.0_04-b05 mixed mode):

"http-8080-Monitor" prio=5 tid=0x272a1940 nid=0x21b8 in Object.wait() [0x2862f00
0..0x2862fd68]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02c52e50> (a org.apache.tomcat.util.threads.ThreadPool$M
onitorRunnable)
        at org.apache.tomcat.util.threads.ThreadPool$MonitorRunnable.run(ThreadP
ool.java:559)
        - locked <0x02c52e50> (a org.apache.tomcat.util.threads.ThreadPool$Monit
orRunnable)
        at java.lang.Thread.run(Thread.java:595)

"http-8080-Processor25" daemon prio=5 tid=0x275c93a8 nid=0x1900 waiting for moni
tor entry [0x285ed000..0x285ef9e8]
        at org.aspectj.weaver.loadtime.Aj$WeaverContainer.getWeaver(Aj.java:79)
        - waiting to lock <0x051a1398> (a java.util.WeakHashMap)
        - locked <0x05291098> (a org.apache.catalina.loader.StandardClassLoader)

        at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:54)
        at org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(C
lassPreProcessorAgentAdapter.java:52)
        at sun.instrument.TransformerManager.transform(TransformerManager.java:1
22)
        at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java
:155)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
4)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        - locked <0x05291098> (a org.apache.catalina.loader.StandardClassLoader)

        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
        - locked <0x05291098> (a org.apache.catalina.loader.StandardClassLoader)

        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.init(
Http11Protocol.java:683)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.getInitData(Lea
derFollowerWorkerThread.java:48)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:673)
        at java.lang.Thread.run(Thread.java:595)

"http-8080-Processor24" daemon prio=5 tid=0x270d8e28 nid=0x1c14 in Object.wait()
 [0x285af000..0x285afa68]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02c52660> (a org.apache.tomcat.util.threads.ThreadPool$C
ontrolRunnable)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:656)
        - locked <0x02c52660> (a org.apache.tomcat.util.threads.ThreadPool$Contr
olRunnable)
        at java.lang.Thread.run(Thread.java:595)

"http-8080-Processor23" daemon prio=5 tid=0x27207de0 nid=0x2070 in Object.wait()
 [0x2856f000..0x2856fae8]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02c52268> (a org.apache.tomcat.util.threads.ThreadPool$C
ontrolRunnable)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:656)
        - locked <0x02c52268> (a org.apache.tomcat.util.threads.ThreadPool$Contr
olRunnable)
        at java.lang.Thread.run(Thread.java:595)

"http-8080-Processor22" daemon prio=5 tid=0x27036408 nid=0x1698 in Object.wait()
 [0x2852f000..0x2852fb68]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02c51e70> (a org.apache.tomcat.util.threads.ThreadPool$C
ontrolRunnable)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:656)
        - locked <0x02c51e70> (a org.apache.tomcat.util.threads.ThreadPool$Contr
olRunnable)
        at java.lang.Thread.run(Thread.java:595)

"http-8080-Processor21" daemon prio=5 tid=0x270b6260 nid=0x1a68 in Object.wait()
 [0x284ef000..0x284efbe8]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02c51a78> (a org.apache.tomcat.util.threads.ThreadPool$C
ontrolRunnable)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:656)
        - locked <0x02c51a78> (a org.apache.tomcat.util.threads.ThreadPool$Contr
olRunnable)
        at java.lang.Thread.run(Thread.java:595)

"http-8080-Processor20" daemon prio=5 tid=0x275f3c88 nid=0x1ed8 in Object.wait()
 [0x284af000..0x284afc68]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02c51680> (a org.apache.tomcat.util.threads.ThreadPool$C
ontrolRunnable)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:656)
        - locked <0x02c51680> (a org.apache.tomcat.util.threads.ThreadPool$Contr
olRunnable)
        at java.lang.Thread.run(Thread.java:595)

"http-8080-Processor19" daemon prio=5 tid=0x27375238 nid=0x11b8 in Object.wait()
 [0x2846f000..0x2846fce8]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02c51288> (a org.apache.tomcat.util.threads.ThreadPool$C
ontrolRunnable)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:656)
        - locked <0x02c51288> (a org.apache.tomcat.util.threads.ThreadPool$Contr
olRunnable)
        at java.lang.Thread.run(Thread.java:595)

"http-8080-Processor18" daemon prio=5 tid=0x26e23ba8 nid=0x2600 in Object.wait()
 [0x2842f000..0x2842fd68]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02c50dc8> (a org.apache.tomcat.util.threads.ThreadPool$C
ontrolRunnable)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:656)
        - locked <0x02c50dc8> (a org.apache.tomcat.util.threads.ThreadPool$Contr
olRunnable)
        at java.lang.Thread.run(Thread.java:595)

"http-8080-Processor17" daemon prio=5 tid=0x274aec18 nid=0x1288 in Object.wait()
 [0x283ef000..0x283ef9e8]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02c509d0> (a org.apache.tomcat.util.threads.ThreadPool$C
ontrolRunnable)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:656)
        - locked <0x02c509d0> (a org.apache.tomcat.util.threads.ThreadPool$Contr
olRunnable)
        at java.lang.Thread.run(Thread.java:595)

"http-8080-Processor16" daemon prio=5 tid=0x275dc220 nid=0x2090 in Object.wait()
 [0x283af000..0x283afa68]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02c505d8> (a org.apache.tomcat.util.threads.ThreadPool$C
ontrolRunnable)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:656)
        - locked <0x02c505d8> (a org.apache.tomcat.util.threads.ThreadPool$Contr
olRunnable)
        at java.lang.Thread.run(Thread.java:595)

"http-8080-Processor15" daemon prio=5 tid=0x26d35b80 nid=0x22d4 in Object.wait()
 [0x2836f000..0x2836fae8]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02c501e0> (a org.apache.tomcat.util.threads.ThreadPool$C
ontrolRunnable)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:656)
        - locked <0x02c501e0> (a org.apache.tomcat.util.threads.ThreadPool$Contr
olRunnable)
        at java.lang.Thread.run(Thread.java:595)

"http-8080-Processor14" daemon prio=5 tid=0x272eebf0 nid=0xae8 in Object.wait()
[0x2832f000..0x2832fb68]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02c4fd58> (a org.apache.tomcat.util.threads.ThreadPool$C
ontrolRunnable)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:656)
        - locked <0x02c4fd58> (a org.apache.tomcat.util.threads.ThreadPool$Contr
olRunnable)
        at java.lang.Thread.run(Thread.java:595)

"http-8080-Processor13" daemon prio=5 tid=0x26e42768 nid=0x2150 in Object.wait()
 [0x282ef000..0x282efbe8]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02c4f960> (a org.apache.tomcat.util.threads.ThreadPool$C
ontrolRunnable)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:656)
        - locked <0x02c4f960> (a org.apache.tomcat.util.threads.ThreadPool$Contr
olRunnable)
        at java.lang.Thread.run(Thread.java:595)

"http-8080-Processor12" daemon prio=5 tid=0x2761ed38 nid=0x838 in Object.wait()
[0x282af000..0x282afc68]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02c4f568> (a org.apache.tomcat.util.threads.ThreadPool$C
ontrolRunnable)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:656)
        - locked <0x02c4f568> (a org.apache.tomcat.util.threads.ThreadPool$Contr
olRunnable)
        at java.lang.Thread.run(Thread.java:595)

"http-8080-Processor11" daemon prio=5 tid=0x277ca408 nid=0x238c in Object.wait()
 [0x2826f000..0x2826fce8]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02c4f170> (a org.apache.tomcat.util.threads.ThreadPool$C
ontrolRunnable)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:656)
        - locked <0x02c4f170> (a org.apache.tomcat.util.threads.ThreadPool$Contr
olRunnable)
        at java.lang.Thread.run(Thread.java:595)

"http-8080-Processor10" daemon prio=5 tid=0x274aee18 nid=0xd88 in Object.wait()
[0x2822f000..0x2822fd68]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02c4ed78> (a org.apache.tomcat.util.threads.ThreadPool$C
ontrolRunnable)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:656)
        - locked <0x02c4ed78> (a org.apache.tomcat.util.threads.ThreadPool$Contr
olRunnable)
        at java.lang.Thread.run(Thread.java:595)

"http-8080-Processor9" daemon prio=5 tid=0x27791e68 nid=0x15d8 in Object.wait()
[0x281ef000..0x281ef9e8]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02c4e918> (a org.apache.tomcat.util.threads.ThreadPool$C
ontrolRunnable)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:656)
        - locked <0x02c4e918> (a org.apache.tomcat.util.threads.ThreadPool$Contr
olRunnable)
        at java.lang.Thread.run(Thread.java:595)

"http-8080-Processor8" daemon prio=5 tid=0x275a2a88 nid=0x177c in Object.wait()
[0x281af000..0x281afa68]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02c4e520> (a org.apache.tomcat.util.threads.ThreadPool$C
ontrolRunnable)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:656)
        - locked <0x02c4e520> (a org.apache.tomcat.util.threads.ThreadPool$Contr
olRunnable)
        at java.lang.Thread.run(Thread.java:595)

"http-8080-Processor7" daemon prio=5 tid=0x271e6a70 nid=0x624 in Object.wait() [
0x2816f000..0x2816fae8]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02c4e128> (a org.apache.tomcat.util.threads.ThreadPool$C
ontrolRunnable)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:656)
        - locked <0x02c4e128> (a org.apache.tomcat.util.threads.ThreadPool$Contr
olRunnable)
        at java.lang.Thread.run(Thread.java:595)

"http-8080-Processor6" daemon prio=5 tid=0x2705eb50 nid=0x1828 in Object.wait()
[0x2812f000..0x2812fb68]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02c4dce0> (a org.apache.tomcat.util.threads.ThreadPool$C
ontrolRunnable)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:656)
        - locked <0x02c4dce0> (a org.apache.tomcat.util.threads.ThreadPool$Contr
olRunnable)
        at java.lang.Thread.run(Thread.java:595)

"http-8080-Processor5" daemon prio=5 tid=0x2736b2c0 nid=0x1c30 in Object.wait()
[0x280ef000..0x280efbe8]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02c4d8e8> (a org.apache.tomcat.util.threads.ThreadPool$C
ontrolRunnable)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:656)
        - locked <0x02c4d8e8> (a org.apache.tomcat.util.threads.ThreadPool$Contr
olRunnable)
        at java.lang.Thread.run(Thread.java:595)

"http-8080-Processor4" daemon prio=5 tid=0x27099e90 nid=0x1960 in Object.wait()
[0x280af000..0x280afc68]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02c4d4f0> (a org.apache.tomcat.util.threads.ThreadPool$C
ontrolRunnable)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:656)
        - locked <0x02c4d4f0> (a org.apache.tomcat.util.threads.ThreadPool$Contr
olRunnable)
        at java.lang.Thread.run(Thread.java:595)

"http-8080-Processor3" daemon prio=5 tid=0x26e28eb0 nid=0x2694 in Object.wait()
[0x2806f000..0x2806fce8]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02c4d0f8> (a org.apache.tomcat.util.threads.ThreadPool$C
ontrolRunnable)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:656)
        - locked <0x02c4d0f8> (a org.apache.tomcat.util.threads.ThreadPool$Contr
olRunnable)
        at java.lang.Thread.run(Thread.java:595)

"http-8080-Processor2" daemon prio=5 tid=0x2743f790 nid=0x2384 in Object.wait()
[0x2802f000..0x2802fd68]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02c4ccd0> (a org.apache.tomcat.util.threads.ThreadPool$C
ontrolRunnable)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:656)
        - locked <0x02c4ccd0> (a org.apache.tomcat.util.threads.ThreadPool$Contr
olRunnable)
        at java.lang.Thread.run(Thread.java:595)

"http-8080-Processor1" daemon prio=5 tid=0x272e3208 nid=0x16e0 in Object.wait()
[0x27e2f000..0x27e2f9e8]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02c4c8d8> (a org.apache.tomcat.util.threads.ThreadPool$C
ontrolRunnable)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:656)
        - locked <0x02c4c8d8> (a org.apache.tomcat.util.threads.ThreadPool$Contr
olRunnable)
        at java.lang.Thread.run(Thread.java:595)

"ContainerBackgroundProcessor[StandardEngine[Catalina]]" daemon prio=5 tid=0x272
d4df8 nid=0x1af0 waiting on condition [0x27def000..0x27defa68]
        at java.lang.Thread.sleep(Native Method)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.r
un(ContainerBase.java:1546)
        at java.lang.Thread.run(Thread.java:595)

"RMI LeaseChecker" daemon prio=5 tid=0x2743e560 nid=0xd7c waiting on condition [
0x27faf000..0x27fafd68]
        at java.lang.Thread.sleep(Native Method)
        at sun.rmi.transport.DGCImpl$LeaseChecker.run(DGCImpl.java:310)
        at java.lang.Thread.run(Thread.java:595)

"RMI RenewClean-[127.0.0.1:4257]" daemon prio=5 tid=0x27351d18 nid=0x1700 in Obj
ect.wait() [0x27f2f000..0x27f2fa68]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x0a2a1900> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
        - locked <0x0a2a1900> (a java.lang.ref.ReferenceQueue$Lock)
        at sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(DGCCli
ent.java:500)
        at java.lang.Thread.run(Thread.java:595)

"GC Daemon" daemon prio=2 tid=0x270295c0 nid=0x27ac in Object.wait() [0x27eef000
..0x27eefae8]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x0a2a19e0> (a sun.misc.GC$LatencyLock)
        at sun.misc.GC$Daemon.run(GC.java:100)
        - locked <0x0a2a19e0> (a sun.misc.GC$LatencyLock)

"RMI Reaper" prio=5 tid=0x26d55bc8 nid=0x1068 in Object.wait() [0x27eaf000..0x27
eafb68]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x0a151240> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
        - locked <0x0a151240> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
        at sun.rmi.transport.ObjectTable$Reaper.run(ObjectTable.java:336)
        at java.lang.Thread.run(Thread.java:595)

"RMI TCP Accept-0" daemon prio=5 tid=0x2762c008 nid=0x1554 runnable [0x27e6f000.
.0x27e6fbe8]
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
        - locked <0x0a195830> (a java.net.SocksSocketImpl)
        at java.net.ServerSocket.implAccept(ServerSocket.java:450)
        at java.net.ServerSocket.accept(ServerSocket.java:421)
        at sun.rmi.transport.tcp.TCPTransport.run(TCPTransport.java:334)
        at java.lang.Thread.run(Thread.java:595)

"RMI TCP Accept-7132" daemon prio=5 tid=0x26e2ccc0 nid=0x2128 runnable [0x27daf0
00..0x27dafd68]
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
        - locked <0x0a151c68> (a java.net.SocksSocketImpl)
        at java.net.ServerSocket.implAccept(ServerSocket.java:450)
        at java.net.ServerSocket.accept(ServerSocket.java:421)
        at sun.rmi.transport.tcp.TCPTransport.run(TCPTransport.java:334)
        at java.lang.Thread.run(Thread.java:595)

"Timer-0" daemon prio=5 tid=0x27300e00 nid=0x2030 in Object.wait() [0x27d6f000..
0x27d6f9e8]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x0a1513f0> (a java.util.TaskQueue)
        at java.util.TimerThread.mainLoop(Timer.java:509)
        - locked <0x0a1513f0> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:462)

"Low Memory Detector" daemon prio=5 tid=0x26d15900 nid=0x1ad4 runnable [0x000000
00..0x00000000]

"CompilerThread0" daemon prio=10 tid=0x0099e968 nid=0x13a8 waiting on condition
[0x00000000..0x26f7f8cc]

"Signal Dispatcher" daemon prio=10 tid=0x0099f620 nid=0x23c4 waiting on conditio
n [0x00000000..0x00000000]

"Finalizer" daemon prio=9 tid=0x00959410 nid=0x1b54 in Object.wait() [0x26cff000
..0x26cffc68]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x05190898> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
        - locked <0x05190898> (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=0x00957f80 nid=0x1520 in Object.wait() [0
x26cbf000..0x26cbfce8]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x05190918> (a java.lang.ref.Reference$Lock)
        at java.lang.Object.wait(Object.java:474)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
        - locked <0x05190918> (a java.lang.ref.Reference$Lock)

"main" prio=5 tid=0x00038678 nid=0xd48 waiting for monitor entry [0x0007e000..0x
0007fc3c]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:295)
        - waiting to lock <0x05291098> (a org.apache.catalina.loader.StandardCla
ssLoader)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at org.xml.sax.helpers.NewInstance.newInstance(NewInstance.java:49)
        at org.xml.sax.helpers.XMLReaderFactory.loadClass(XMLReaderFactory.java:
187)
        at org.xml.sax.helpers.XMLReaderFactory.createXMLReader(XMLReaderFactory
.java:150)
        at org.aspectj.weaver.loadtime.definition.DocumentParser.parse(DocumentP
arser.java:80)
        at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerDefinit
ions(ClassLoaderWeavingAdaptor.java:125)
        at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.<init>(ClassLoa
derWeavingAdaptor.java:93)
        at org.aspectj.weaver.loadtime.Aj$WeaverContainer.getWeaver(Aj.java:81)
        - locked <0x051a1398> (a java.util.WeakHashMap)
        - locked <0x02d43c78> (a sun.reflect.DelegatingClassLoader)
        at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:54)
        at org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(C
lassPreProcessorAgentAdapter.java:52)
        at sun.instrument.TransformerManager.transform(TransformerManager.java:1
22)
        at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java
:155)
        at sun.misc.Unsafe.defineClass(Native Method)
        at sun.reflect.ClassDefiner.defineClass(ClassDefiner.java:45)
        at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.jav
a:381)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.reflect.MethodAccessorGenerator.generate(MethodAccessorGenerator.
java:377)
        at sun.reflect.MethodAccessorGenerator.generateMethod(MethodAccessorGene
rator.java:59)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:28)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.commons.modeler.BaseModelMBean.invoke(BaseModelMBean.java:
503)
        at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImp
l.java:213)
        at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:220)
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultM
BeanServerInterceptor.java:815)
        at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:784
)
        at org.apache.catalina.connector.MapperListener.registerWrapper(MapperLi
stener.java:487)
        at org.apache.catalina.connector.MapperListener.init(MapperListener.java
:140)
        at org.apache.catalina.connector.Connector.start(Connector.java:1011)
        at org.apache.catalina.core.StandardService.start(StandardService.java:4
59)
        - locked <0x0728e818> (a [Lorg.apache.catalina.connector.Connector;)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:683
)
        - locked <0x073277a8> (a [Lorg.apache.catalina.Service;)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:537)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:271)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:409)

"VM Thread" prio=10 tid=0x0003f110 nid=0x2514 runnable

"VM Periodic Task Thread" prio=10 tid=0x26d12a88 nid=0x165c waiting on condition



Found one Java-level deadlock:
=============================
"http-8080-Processor25":
  waiting to lock monitor 0x0095900c (object 0x051a1398, a java.util.WeakHashMap
),
  which is held by "main"
"main":
  waiting to lock monitor 0x00958fac (object 0x05291098, a org.apache.catalina.l
oader.StandardClassLoader),
  which is held by "http-8080-Processor25"

Java stack information for the threads listed above:
===================================================
"http-8080-Processor25":
        at org.aspectj.weaver.loadtime.Aj$WeaverContainer.getWeaver(Aj.java:79)
        - waiting to lock <0x051a1398> (a java.util.WeakHashMap)
        - locked <0x05291098> (a org.apache.catalina.loader.StandardClassLoader)

        at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:54)
        at org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(C
lassPreProcessorAgentAdapter.java:52)
        at sun.instrument.TransformerManager.transform(TransformerManager.java:1
22)
        at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java
:155)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
4)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        - locked <0x05291098> (a org.apache.catalina.loader.StandardClassLoader)

        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
        - locked <0x05291098> (a org.apache.catalina.loader.StandardClassLoader)

        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.init(
Http11Protocol.java:683)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.getInitData(Lea
derFollowerWorkerThread.java:48)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:673)
        at java.lang.Thread.run(Thread.java:595)
"main":
        at java.lang.ClassLoader.loadClass(ClassLoader.java:295)
        - waiting to lock <0x05291098> (a org.apache.catalina.loader.StandardCla
ssLoader)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at org.xml.sax.helpers.NewInstance.newInstance(NewInstance.java:49)
        at org.xml.sax.helpers.XMLReaderFactory.loadClass(XMLReaderFactory.java:
187)
        at org.xml.sax.helpers.XMLReaderFactory.createXMLReader(XMLReaderFactory
.java:150)
        at org.aspectj.weaver.loadtime.definition.DocumentParser.parse(DocumentP
arser.java:80)
        at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerDefinit
ions(ClassLoaderWeavingAdaptor.java:125)
        at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.<init>(ClassLoa
derWeavingAdaptor.java:93)
        at org.aspectj.weaver.loadtime.Aj$WeaverContainer.getWeaver(Aj.java:81)
        - locked <0x051a1398> (a java.util.WeakHashMap)
        - locked <0x02d43c78> (a sun.reflect.DelegatingClassLoader)
        at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:54)
        at org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(C
lassPreProcessorAgentAdapter.java:52)
        at sun.instrument.TransformerManager.transform(TransformerManager.java:1
22)
        at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java
:155)
        at sun.misc.Unsafe.defineClass(Native Method)
        at sun.reflect.ClassDefiner.defineClass(ClassDefiner.java:45)
        at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.jav
a:381)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.reflect.MethodAccessorGenerator.generate(MethodAccessorGenerator.
java:377)
        at sun.reflect.MethodAccessorGenerator.generateMethod(MethodAccessorGene
rator.java:59)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:28)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.commons.modeler.BaseModelMBean.invoke(BaseModelMBean.java:
503)
        at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImp
l.java:213)
        at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:220)
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultM
BeanServerInterceptor.java:815)
        at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:784
)
        at org.apache.catalina.connector.MapperListener.registerWrapper(MapperLi
stener.java:487)
        at org.apache.catalina.connector.MapperListener.init(MapperListener.java
:140)
        at org.apache.catalina.connector.Connector.start(Connector.java:1011)
        at org.apache.catalina.core.StandardService.start(StandardService.java:4
59)
        - locked <0x0728e818> (a [Lorg.apache.catalina.connector.Connector;)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:683
)
        - locked <0x073277a8> (a [Lorg.apache.catalina.Service;)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:537)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:271)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:409)

Found 1 deadlock.
Comment 1 Ron Bodkin CLA 2005-09-12 21:14:50 EDT
On looking more closely, it looks like the original work-around is now causing 
a deadlock.

On the other hand, is it really necessary to hold the lock while reading in 
definitions? Or if it is, why not use class.forName to ensure the needed 
classes all get loaded before the lock is acquired.

Why not construct the Adaptor with no work, then release the locks and 
initialize the Adaptor? You would then want to synchronize on the init method 
and before returning the adaptor... to be thread safe you would need to use 
something like Doug Lea's concurrency library to lock the newly constructed 
object inside the other synchronized blocks & yet return it after the others 
finish.

Just some thoughts...
Comment 2 Alexandre Vasseur CLA 2005-09-28 09:31:51 EDT
obviously this is a consequence of the poor hack of #99861 which consist in
locking the classloader within which we are weaving to bypass some proven bugs
in Sun JSR163 implementation.

You may try to remove the fix for 99861 in Aj.java, rebuild, get a fresh Sun VM
and try again with Tomcat and let us know.
Comment 3 Alexandre Vasseur CLA 2005-09-28 09:32:02 EDT
deps
Comment 4 Wes Isberg CLA 2005-10-14 21:51:02 EDT
A thought: might the issue be with Tomcat? Don't Tomcat application class
loaders check their own definitions first, with the result that class
inter-dependencies across application class loaders are not serialized as they
are under the usual delegation scheme?  It would be nice to see this reproduced
outside Tomcat.
Comment 5 Alexandre Vasseur CLA 2005-10-24 05:37:40 EDT
closing this one see deps.
Comment 6 Dave Nice CLA 2005-11-05 07:52:34 EST
Apologies is this comment is posted twice -- I posted a more in-depth comment
yesterday which doesn't seem to have appeared yet.

I have experienced this problem whilst advising a multi-threaded application
on IBM's 5.0 beta SDK and Sun's 5.0.  I'm not using tomcat or any other loader.
 This was on the 3rd Nov development AspectJ build.

What is the significance of RESOLVED REMIND?  I don't think this has been
resolved.  Are there plans to fix it?

Thanks,

Dave
Comment 7 Alexandre Vasseur CLA 2005-11-07 03:57:37 EST
Dave
Your detailled comment does not appear. Please post it again.

RESOLVED REMIND means that this is FIXED and needs to be marked as FIXED when we
ship our next official milestone / RC / release (at least I am using this status
for that purpose).

Please post thread dump and possibly app to reproduce the issue you have on that
issue.
Comment 8 Dave Nice CLA 2005-11-07 05:16:15 EST
Hi Alexandre.

Thanks for your comment.  After you said that you thought it was fixed, I spent
a little more time testing.  After I tried completely deleting my stable aspectj
directory and replacing it with the 3rd Nov development build, the issue went away.

I guess I need to learn how this all fits together better :-)

Good work, and sorry to waste your time!

Dave
Comment 9 Eclipse Webmaster CLA 2009-08-30 02:50:32 EDT
LATER/REMIND bugs are being automatically reopened as P5 because the LATER and REMIND resolutions are deprecated.