geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vitaly Pimenov (JIRA)" <>
Subject [jira] Created: (GERONIMO-2866) LinkageError on startup
Date Thu, 22 Feb 2007 12:29:05 GMT
LinkageError on startup

                 Key: GERONIMO-2866
             Project: Geronimo
          Issue Type: Bug
      Security Level: public (Regular issues)
    Affects Versions: 2.0-M1
         Environment: Win XP 1.5.0_10 
Linux 1.5.0_10
Mac OS X 1.5.0_06
            Reporter: Vitaly Pimenov

Hello, I'm a YourKit Java Profiler developer. Our customer have reported that Geronimo 2.0
doesn't start with our profiler agent.
There is a LinkageError on server startup:
java.lang.LinkageError: loader (instance of  org/apache/geronimo/kernel/classloader/JarFileClassLoader):
attempted  duplicate class definition for name: "$javax/naming/Context$$EnhancerByCGLIB$$79faf44d$$FastClassByCGLIB$$e18c505c"
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(
	... 34 more

Looking into this, I have found that the problem is caused by dynamic byte-code instrumentation:
we add a special 'static transient boolean' field in some classes and "$javax/naming/Context$$EnhancerByCGLIB$$79faf44d$$FastClassByCGLIB$$e18c505c"
is one of them.
It looks like CGLIB somehow watches the classfile changes and tries to reload class, modified
by our instrumentation. 
The problem arises because the names are identical. 
Maybe it can be solved by customizing NamingPolicy used in CGLIB.

You can reproduce the problem with YourKit Java Profiler 6.0.11
To run server with profiler you can just add 2 following lines at the beginning or geronimo
set PATH=<path to YourKit Java Profiler install dir>/bin/win32;%PATH%
set JAVA_TOOL_OPTIONS=-agentlib:yjpagent %JAVA_TOOL_OPTIONS%

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message