Menu

#142 dead lock accrue.

open
nobody
JaCoCo (32)
5
2012-12-13
2012-12-13
Anonymous
No

Dead lock accrue. AppClassLoader tries to load class form ExtClassLoader and ExtClassLoader try to load class from AppClassLoader.
In my configuration AppClassLoader is excluded. So dead lock should not accrue. Is there any workaround

<jacoco:coverage enabled="@{test.coverage}" destfile="${coverage.File}" includes="com.xxx.tool.*:com.xxx.ci.*:com.nomagic.cts.*:com.xxx.common.*"
excludes="org.*:java.*:com.xxx.rcpf.*:com.xxx.registration.*:sun.*:javax.*:com.oracle.*:com.sun.*" exclclassloader="sun.misc.Launcher$AppClassLoader:sun.reflect.DelegatingClassLoader">

Most our class is loaded by ExtClassLoader.

"pool-tool-thread-1:Loading..." prio=10 tid=0x00007fde1c070800 nid=0x63e7 waiting for monitor entry [0x00007fde1a77f000]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.jacoco.agent.rt_mlrowg.CoverageTransformer.transform(CoverageTransformer.java:78)
at sun.instrument.TransformerManager.transform(TransformerManager.java:169)
at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:365)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at sun.misc.Launcher$ExtClassLoader.findClass(Launcher.java:229)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
- locked <0x00000000b58a44a0> (a sun.misc.Launcher$ExtClassLoader)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at com.xxx.tool.persistence.ci.d.j.<init>(j.java:151)
at com.xxx.tool.persistence.ci.d.d.doCreateProject(d.java:76)
at com.xxx.ci.persistence.spi.local.LocalProjectOpenUtil.createProject(LocalProjectOpenUtil.java:84)
at com.xxx.ci.persistence.spi.local.LocalProjectOpenUtil.doOpenProject(LocalProjectOpenUtil.java:53)
at com.xxx.ci.persistence.spi.local.LocalProjectRepository.doOpenProject(LocalProjectRepository.java:92)
at com.xxx.ci.persistence.spi.ProjectOpenUtil.doOpenProject(ProjectOpenUtil.java:50)
at com.xxx.ci.persistence.spi.ProjectOpenUtil.openProject(ProjectOpenUtil.java:34)
at com.xxx.ci.persistence.spi.DefaultProjectRepository.openProject(DefaultProjectRepository.java:218)
at com.xxx.tool.persistence.ProjectLoadService.loadStorage(ProjectLoadService.java:310)
at com.xxx.tool.persistence.ProjectLoadService.load(ProjectLoadService.java:203)
at com.xxx.tool.persistence.ProjectLoadService.load(ProjectLoadService.java:163)
at com.xxx.tool.persistence.ProjectLoadService.loadAndHandleErrors(ProjectLoadService.java:54)
at com.xxx.tool.persistence.ProjectLoadService$1.execute(ProjectLoadService.java:109)
at com.xxx.task.Task.construct(Task.java:188)
at com.xxx.task.SwingWorker$3.call(SwingWorker.java:227)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at com.xxx.task.SwingWorker$SwingWorkerFuture.run(SwingWorker.java:573)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at com.xxx.task.PooledThread.run(PooledThread.java:64)

"Thread-20" prio=10 tid=0x00007fde5dbdf800 nid=0x63e6 waiting for monitor entry [0x00007fde2a372000]
java.lang.Thread.State: BLOCKED (on object monitor)
at java.lang.ClassLoader.loadClass(ClassLoader.java:291)
- waiting to lock <0x00000000b58a44a0> (a sun.misc.Launcher$ExtClassLoader)
at java.lang.ClassLoader.loadClass(ClassLoader.java:295)
- locked <0x00000000b58a4458> (a sun.misc.Launcher$AppClassLoader)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
- locked <0x00000000b58a4458> (a sun.misc.Launcher$AppClassLoader)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.beans.Introspector.instantiate(Introspector.java:1470)
at java.beans.Introspector.findExplicitBeanInfo(Introspector.java:431)
at java.beans.Introspector.<init>(Introspector.java:380)
at java.beans.Introspector.getBeanInfo(Introspector.java:167)
at org.apache.axis.utils.BeanUtils$1.run(BeanUtils.java:92)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.axis.utils.BeanUtils.getPropertyDescriptors(BeanUtils.java:73)
at org.apache.axis.utils.BeanUtils.getPd(BeanUtils.java:63)
at org.apache.axis.description.TypeDesc.makePropertyDescriptors(TypeDesc.java:460)
- locked <0x00000000fed08428> (a org.apache.axis.description.TypeDesc)
at org.apache.axis.description.TypeDesc.getPropertyDescriptors(TypeDesc.java:439)
at org.apache.axis.encoding.ser.BeanSerializerFactory.init(BeanSerializerFactory.java:56)
at org.apache.axis.encoding.ser.BeanSerializerFactory.<init>(BeanSerializerFactory.java:42)
at org.apache.axis.encoding.ser.BaseSerializerFactory.createFactory(BaseSerializerFactory.java:235)
at org.apache.axis.client.Call.registerTypeMapping(Call.java:2315)
at com.xxx.registration.user.Registration_serviceSoapBindingStub.createCall(Unknown Source)
- locked <0x00000000feda1040> (a com.xxx.registration.user.Registration_serviceSoapBindingStub)
at com.xxx.registration.user.Registration_serviceSoapBindingStub.checkActivation(Unknown Source)
at com.xxx.rcpf.product.c.a.n.w(n.java:405)
at com.xxx.rcpf.product.p$0.run(p$0.java:360)
at java.lang.Thread.run(Thread.java:662)

Found one Java-level deadlock:

"pool-MagicDraw-thread-1:Loading...":
waiting to lock monitor 0x00007fde4c0359e0 (object 0x00000000b58a4458, a sun.misc.Launcher$AppClassLoader),
which is held by "Thread-20"
"Thread-20":
waiting to lock monitor 0x00007fde4c035a88 (object 0x00000000b58a44a0, a sun.misc.Launcher$ExtClassLoader),
which is held by "pool-tool-thread-1:Loading..."

Discussion

MongoDB Logo MongoDB