-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Open
Description
Description
The Security Manager smoke test fails when invokedynamic instrumentation is enabled for some of the internal instrumentation modules.
OpenTelemetry Javaagent failed to start
java.lang.BootstrapMethodError: call site initialization exception
at java.lang.invoke.CallSite.makeSite(CallSite.java:341)
at java.lang.invoke.MethodHandleNatives.linkCallSiteImpl(MethodHandleNatives.java:307)
at java.lang.invoke.MethodHandleNatives.linkCallSite(MethodHandleNatives.java:297)
at java.lang.invoke.InnerClassLambdaMetafactory.spinInnerClass(InnerClassLambdaMetafactory.java:251)
at java.lang.invoke.InnerClassLambdaMetafactory.buildCallSite(InnerClassLambdaMetafactory.java:194)
at java.lang.invoke.LambdaMetafactory.metafactory(LambdaMetafactory.java:304)
at java.lang.invoke.CallSite.makeSite(CallSite.java:302)
at java.lang.invoke.MethodHandleNatives.linkCallSiteImpl(MethodHandleNatives.java:307)
at java.lang.invoke.MethodHandleNatives.linkCallSite(MethodHandleNatives.java:297)
at io.opentelemetry.javaagent.tooling.AgentInstaller.addSqlCommenterCustomizers(AgentInstaller.java:326)
at io.opentelemetry.javaagent.tooling.AgentInstaller.installBytebuddyAgent(AgentInstaller.java:209)
at io.opentelemetry.javaagent.tooling.AgentInstaller.installBytebuddyAgent(AgentInstaller.java:101)
at io.opentelemetry.javaagent.tooling.AgentStarterImpl.start(AgentStarterImpl.java:103)
at io.opentelemetry.javaagent.bootstrap.AgentInitializer$2.run(AgentInitializer.java:68)
at io.opentelemetry.javaagent.bootstrap.AgentInitializer$2.run(AgentInitializer.java:61)
at java.security.AccessController.doPrivileged(Native Method)
at io.opentelemetry.javaagent.bootstrap.AgentInitializer.doPrivilegedExceptionAction(AgentInitializer.java:108)
at io.opentelemetry.javaagent.bootstrap.AgentInitializer.execute(AgentInitializer.java:82)
at io.opentelemetry.javaagent.bootstrap.AgentInitializer.initialize(AgentInitializer.java:60)
at io.opentelemetry.javaagent.OpenTelemetryAgent.startAgent(OpenTelemetryAgent.java:59)
at io.opentelemetry.javaagent.OpenTelemetryAgent.premain(OpenTelemetryAgent.java:46)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386)
at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class io.opentelemetry.javaagent.bootstrap.ExceptionLogger
at io.opentelemetry.javaagent.bootstrap.IndyBootstrapDispatcher.bootstrap(IndyBootstrapDispatcher.java:48)
at java.lang.invoke.CallSite.makeSite(CallSite.java:306)
... 26 more
This probably indicates that some of those instrumentation modules require to use AdviceUtil#applyInlineAdvice (or similar) to force inline instrumentation.
Forcing isIndyModule() == false in internal-lambda and internal-reflection modules allow to make the error go away, which means we should probably force inline instrumentation in those modules, or identify what make the general indy implementation fail in this particular case.
How to reproduce
in io.opentelemetry.smoketest.SecurityManagerSmokeTest, add OTEL_JAVAAGENT_EXPERIMENTAL_INDY = true environment variable.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Type
Projects
Status
No status