Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BUG: SandboxClassLoader 死锁问题 #352

Closed
aloooha opened this issue Dec 30, 2021 · 0 comments
Closed

BUG: SandboxClassLoader 死锁问题 #352

aloooha opened this issue Dec 30, 2021 · 0 comments
Assignees
Labels
Milestone

Comments

@aloooha
Copy link

aloooha commented Dec 30, 2021

jvm-sandbox 安装repeater插件后,发现应用概率性启动卡住,jstack发现死锁,日志如下:

Found one Java-level deadlock:
=============================
"app-monitor-1":
  waiting to lock monitor 0x00007fb4f0003668 (object 0x0000000084f93300, a [I),
  which is held by "main"
"main":
  waiting to lock monitor 0x00007fb4f0004638 (object 0x0000000084d84b88, a com.alibaba.jvm.sandbox.agent.SandboxClassLoader),
  which is held by "sandbox-jetty-qtp-191872762-34"
"sandbox-jetty-qtp-191872762-34":
  waiting to lock monitor 0x00007fb4f0003668 (object 0x0000000084f93300, a [I),
  which is held by "main"

Java stack information for the threads listed above:
===================================================
"app-monitor-1":
	at com.alibaba.jvm.sandbox.core.util.matcher.structure.ClassStructureImplByAsm.<init>(ClassStructureImplByAsm.java:400)
	at com.alibaba.jvm.sandbox.core.util.matcher.structure.ClassStructureFactory.createClassStructure(ClassStructureFactory.java:57)
	at com.alibaba.jvm.sandbox.core.manager.impl.SandboxClassFileTransformer.getClassStructure(SandboxClassFileTransformer.java:64)
	at com.alibaba.jvm.sandbox.core.manager.impl.SandboxClassFileTransformer._transform(SandboxClassFileTransformer.java:117)
	at com.alibaba.jvm.sandbox.core.manager.impl.SandboxClassFileTransformer.transform(SandboxClassFileTransformer.java:84)
	at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
	at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
	at java.lang.ClassLoader.findBootstrapClass(Native Method)
	at java.lang.ClassLoader.findBootstrapClassOrNull(ClassLoader.java:1008)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:407)
	- locked <0x00000000ead44bb0> (a java.lang.Object)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:405)
	- locked <0x00000000ead44b10> (a java.lang.Object)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:405)
	- locked <0x00000000850144a8> (a com.alibaba.jvm.sandbox.core.classloader.ModuleJarClassLoader)
	at com.alibaba.jvm.sandbox.core.classloader.RoutingURLClassLoader.access$601(RoutingURLClassLoader.java:22)
	at com.alibaba.jvm.sandbox.core.classloader.RoutingURLClassLoader$1.loadClass(RoutingURLClassLoader.java:105)
	at com.alibaba.jvm.sandbox.core.classloader.ClassLoadingLock.loadingInLock(ClassLoadingLock.java:55)
	- locked <0x00000000ead43a28> (a java.lang.Object)
	at com.alibaba.jvm.sandbox.core.classloader.RoutingURLClassLoader.loadClass(RoutingURLClassLoader.java:64)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
	at io.micrometer.core.instrument.distribution.TimeWindowMax.poll(TimeWindowMax.java:85)
	at io.micrometer.prometheus.PrometheusTimer.max(PrometheusTimer.java:97)
	at io.micrometer.core.instrument.AbstractTimer.takeSnapshot(AbstractTimer.java:183)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
"main":
	at com.alibaba.jvm.sandbox.core.util.matcher.structure.ClassStructureImplByAsm.<init>(ClassStructureImplByAsm.java:400)
	at com.alibaba.jvm.sandbox.core.util.matcher.structure.ClassStructureFactory.createClassStructure(ClassStructureFactory.java:57)
	at com.alibaba.jvm.sandbox.core.manager.impl.SandboxClassFileTransformer.getClassStructure(SandboxClassFileTransformer.java:64)
	at com.alibaba.jvm.sandbox.core.manager.impl.SandboxClassFileTransformer._transform(SandboxClassFileTransformer.java:117)
	at com.alibaba.jvm.sandbox.core.manager.impl.SandboxClassFileTransformer.transform(SandboxClassFileTransformer.java:84)
	at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
	at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
	- locked <0x00000000ea700920> (a java.lang.Object)
	at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:151)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
	at org.hibernate.loader.plan.build.internal.returns.AbstractExpandingFetchSource.buildEntityAttributeFetch(AbstractExpandingFetchSource.java:112)
	at org.hibernate.internal.util.collections.LazyIndexedMap.lockedComputeIfAbsent(LazyIndexedMap.java:77)
	- locked <0x00000000fb807c90> (a org.hibernate.persister.entity.EntityLoaderLazyCollection)
	at org.hibernate.internal.util.collections.LazyIndexedMap.computeIfAbsent(LazyIndexedMap.java:63)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	- locked <0x0000000081b9fec8> (a java.util.concurrent.ConcurrentHashMap)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)
	- locked <0x00000000816cee88> (a java.lang.Object)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144)
	at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88)
"sandbox-jetty-qtp-191872762-34":
	at com.alibaba.jvm.sandbox.core.util.matcher.structure.ClassStructureImplByAsm.<init>(ClassStructureImplByAsm.java:400)
	at com.alibaba.jvm.sandbox.core.util.matcher.structure.ClassStructureFactory.createClassStructure(ClassStructureFactory.java:57)
	at com.alibaba.jvm.sandbox.core.manager.impl.SandboxClassFileTransformer.getClassStructure(SandboxClassFileTransformer.java:64)
	at com.alibaba.jvm.sandbox.core.manager.impl.SandboxClassFileTransformer._transform(SandboxClassFileTransformer.java:117)
	at com.alibaba.jvm.sandbox.core.manager.impl.SandboxClassFileTransformer.transform(SandboxClassFileTransformer.java:84)
	at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
	at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
	at java.lang.ClassLoader.findBootstrapClass(Native Method)
	at java.lang.ClassLoader.findBootstrapClassOrNull(ClassLoader.java:1008)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:407)
	- locked <0x00000000eaa36c60> (a java.lang.Object)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:405)
	- locked <0x00000000eaa36b98> (a java.lang.Object)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:405)
	- locked <0x0000000084d84b88> (a com.alibaba.jvm.sandbox.agent.SandboxClassLoader)
	at com.alibaba.jvm.sandbox.agent.SandboxClassLoader.loadClass(SandboxClassLoader.java:68)
	- locked <0x0000000084d84b88> (a com.alibaba.jvm.sandbox.agent.SandboxClassLoader)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
	at com.xxx.apm.JettyInterceptor.obBefore(JettyInterceptor.java:24)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java)
	at org.eclipse.jetty.server.Server.handle(Server.java:351)
	at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:454)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:534)
	at java.lang.Thread.run(Thread.java:748)

Found 1 deadlock.

@aloooha aloooha changed the title SandboxClassLoader 死锁问题 BUG: SandboxClassLoader 死锁问题 Dec 30, 2021
@oldmanpushcart oldmanpushcart added this to the v1.4.0 milestone Aug 26, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants