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

增强的类出现循环依赖错误 #9

Closed
dongchenxu opened this issue Dec 5, 2017 · 2 comments
Closed

增强的类出现循环依赖错误 #9

dongchenxu opened this issue Dec 5, 2017 · 2 comments
Assignees

Comments

@dongchenxu
Copy link
Collaborator

异常信息

java.lang.ClassCircularityError: com/alibaba/jvm/sandbox/module/trace/cache/ThreadLocalHolder
	at com.alibaba.jvm.sandbox.module.trace.TraceMetaQListener.onEvent(TraceMetaQListener.java:31)
	at com.alibaba.jvm.sandbox.core.enhance.weaver.SeparateImmediatelyEventListener.onEvent(SeparateImmediatelyEventListener.java:73)
	at com.alibaba.jvm.sandbox.core.enhance.weaver.EventListenerHandlers.handleEvent(EventListenerHandlers.java:106)
	at com.alibaba.jvm.sandbox.core.enhance.weaver.EventListenerHandlers.handleOnBefore(EventListenerHandlers.java:332)
	at com.alibaba.jvm.sandbox.core.enhance.weaver.EventListenerHandlers.handleOnBeforeWithTargetClassLoaderSpyRet(EventListenerHandlers.java:385)
	at com.alibaba.jvm.sandbox.core.enhance.weaver.EventListenerHandlers.onBefore(EventListenerHandlers.java:558)
	at sun.reflect.GeneratedMethodAccessor140.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at java.com.alibaba.jvm.sandbox.spy.Spy.spyMethodOnBefore(Spy.java:84)
	at com.alibaba.security.jam.framework.JamSecurityManager.checkPropertyAccess(JamSecurityManager.java)
	at java.lang.System.getProperty(System.java:708)
	at com.laiwang.rpc.server.lwp.LwpServiceStatus.status(LwpServiceStatus.java:17)
	at com.laiwang.rpc.server.lwp.LwpServiceListen.replyOK(LwpServiceListen.java:34)
	at sun.reflect.GeneratedMethodAccessor49.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at com.laiwang.protocol.ListenDriver$ToInvoker$1.invoke(ListenDriver.java:86)
	at com.laiwang.protocol.ListenDriver$2.received(ListenDriver.java:31)
	at com.laiwang.protocol.transport.MessageHandler.channelRead(MessageHandler.java:67)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:373)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:351)
	at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86)
	at com.laiwang.protocol.transport.HeartbeatHandler.channelRead(HeartbeatHandler.java:55)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:373)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:351)
	at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86)
	at com.laiwang.protocol.transport.GracefullOfflineHandler.channelRead(GracefullOfflineHandler.java:43)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:373)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:351)
	at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86)
	at com.laiwang.protocol.transport.ViaHandler.channelRead(ViaHandler.java:73)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:373)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:351)
	at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86)
	at com.laiwang.protocol.transport.CompressHandler.channelRead(CompressHandler.java:36)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:373)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:351)
	at com.laiwang.protocol.transport.WireLoggingHandler.channelRead(WireLoggingHandler.java:198)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:373)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:351)
	at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86)
	at com.laiwang.protocol.transport.LogAccessHandler.channelRead(LogAccessHandler.java:57)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:373)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:351)
	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:373)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:351)
	at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:373)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:351)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:373)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926)
	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:129)
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:651)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:574)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:488)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:450)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:873)
	at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)
	at java.lang.Thread.run(Thread.java:744)
@dongchenxu dongchenxu self-assigned this Dec 5, 2017
@dongchenxu dongchenxu added the bug label Dec 5, 2017
dongchenxu pushed a commit that referenced this issue Dec 5, 2017
@dongchenxu
Copy link
Collaborator Author

重新定位了下问题

2017-12-06 09:45:44 WARN  occur error on event-listener, listener-id=84;process-id=1811;invoke-id=1811;type=LINE;
java.lang.ClassCircularityError: com/alibaba/jvm/sandbox/module/trace/cache/ThreadLocalHolder
        at com.alibaba.jvm.sandbox.module.trace.TraceMetaQListener.onEvent(TraceMetaQListener.java:31)
        at com.alibaba.jvm.sandbox.core.enhance.weaver.SeparateImmediatelyEventListener.onEvent(SeparateImmediatelyEventListener.java:73)
        ...
        at com.alibaba.security.jam.framework.JamClassFileTransformer.transform(JamClassFileTransformer.java:163)
        ...

本质的原因是出现了两个字节码增强工具相互干扰的尴尬情况,在这个CASE中是另外一款阿里巴巴的安全框架JAM和沙箱容器的字节码增强相互感知所导致的。

这个...目前没有好的办法,暂时只能想到开放包路径排除的手段进行解决。

@dongchenxu
Copy link
Collaborator Author

这个问题决定暂时通过规避增强jam的方式解决,目前没有想到修复的最有方式,挂起这个问题吧。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant