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

intellij 2024.3 debugger agent conflict with hotSwapAgent. #9

Closed
gejun123456 opened this issue Nov 18, 2024 · 8 comments
Closed

intellij 2024.3 debugger agent conflict with hotSwapAgent. #9

gejun123456 opened this issue Nov 18, 2024 · 8 comments
Assignees

Comments

@gejun123456
Copy link

HotswapAgent https://github.com/HotswapProjects/HotswapAgent is a framework for hot reloading java claases.
In intellij 2024.3 java8 and java11 will meet issues when run debug with hotswap agent together. run code when meet NoClassDefFoundError, it will throw ClassNotFoundException.
java17 works fine.

For intellij 2024.2 or eailer versions. it work fine. when change the debugger agent file in 2024.3 to 2024.2 agent file, it work fine.

Example code:
try {
A.hello()
}catch(NoClassDefFoundError e){
}
when A class not exist, the catch part wont work, it will throw a ClassNotFoundException.

HotswapAgent is a open source framework used by lots of projects.

If possible, could you please provide some guidance on how to resolve this issue? I'd be happy to assist further if any additional details are needed.

@gejun123456
Copy link
Author

what will happen if use intellij 2024.2 debugger agent in intellij 2024.3, seem many features works fine.

@skybber
Copy link

skybber commented Nov 19, 2024

The current workaround is to disable the "Instrumenting Agent" option. To do this, navigate to "Build, Execution, Deployment" → "Debugger" → "Async Stack Traces" and uncheck the "Instrumenting agent".

@skybber skybber closed this as completed Nov 23, 2024
@StefanPenndorf
Copy link

StefanPenndorf commented Nov 26, 2024

Hi @skybber,

I'm not quite shure why this issue was closed without further action. Can you elaborate? Does this mean if I want to use Hotswap Agent in one project I need to globaly disable Jetbrains Debugger Agent for all of my projects? Does this mean the only solution is to disable Jetbrains Debugger Agent for all projects that will be using Hotswap Agent?

The original bug report says Java 17 works fine but I cannot confirm. Starting Jetbrains JDK 17.0.12 (installed via sdk man) with hotswap agent and Jetbrains Debugger Agent in debug mode fails. As far as I can tell there is also an issue with -XX:+AllowEnhancedClassRedefinition and Jebrains Debugger Agent. When passing this flag to the JVM it doesn't start in debug mode (terminates without error message).

🚫 -XX:+AllowEnhancedClassRedefinition - fails without error
🚫 -XX:HotswapAgent=fatjar - fails with the error in the first post of the ticket
🚫 -XX:+AllowEnhancedClassRedefinition -XX:HotswapAgent=fatjar - fails with the error in the first post of the ticket

I would appreciate

  • a fix for the bug enabling Jetbrains Debugger Agent and Hotswap Agent in coexistence if possible or
  • the possibility to disable Jetbrains Debugger Agent per Run Configuration and
  • a warning in the IDE or printed to console Jetbrains Debugger Agent finds a second agent with the hint to disable one of both

EDIT: I have fixed my erroneous assumption that the workaround setting is global. The setting is per project:
image

@skybber
Copy link

skybber commented Nov 26, 2024

@StefanPenndorf jbr17 and jbr21 is working for me on big project.

Please:

  • make sure you copied hotswap-agent.jar to $JAVA_HOME/lin/hotswap/
  • check if you are really using jbr17 and not JDK17 from another distribution.
  • add Xlog:redefine+class*=info to JVM options to see redefinition logs

Debug agent newly redefines core JDK classes on start, we have support in new JBR17 and JBR21 for it but it is partially done in Trava11 and there is no support in java8.

You should see following logs on successfull start:

/home/lada/programs/apache-tomcat-10.1.26/bin/catalina.sh run
Connected to the target VM, address: '127.0.0.1:37023', transport: 'socket'
Starting HotswapAgent '/usr/lib/jvm/java-17-jbr/lib/hotswap/hotswap-agent.jar'
[0.096s][info][redefine,class,load] redefined name=java.lang.Throwable, count=1 (avail_mem=7445980K)
[0.096s][info][redefine,class,load] redefined name=java.lang.Error, count=1 (avail_mem=7445980K)
[0.096s][info][redefine,class,load] redefined name=java.lang.ThreadDeath, count=1 (avail_mem=7445980K)
[0.096s][info][redefine,class,load] redefined name=java.lang.Exception, count=1 (avail_mem=7445980K)
[0.096s][info][redefine,class,load] redefined name=java.lang.RuntimeException, count=1 (avail_mem=7445980K)
[0.096s][info][redefine,class,load] redefined name=java.lang.IllegalArgumentException, count=1 (avail_mem=7445980K)
[0.096s][info][redefine,class,load] redefined name=java.lang.ArithmeticException, count=1 (avail_mem=7445980K)
[0.096s][info][redefine,class,load] redefined name=java.lang.IllegalMonitorStateException, count=1 (avail_mem=7445980K)
[0.096s][info][redefine,class,load] redefined name=java.lang.NullPointerException, count=1 (avail_mem=7445980K)
[0.096s][info][redefine,class,load] redefined name=java.lang.ReflectiveOperationException, count=1 (avail_mem=7445980K)
[0.096s][info][redefine,class,load] redefined name=java.lang.NoSuchFieldException, count=1 (avail_mem=7445980K)
[0.096s][info][redefine,class,load] redefined name=java.lang.VirtualMachineError, count=1 (avail_mem=7445980K)
[0.096s][info][redefine,class,load] redefined name=java.lang.ArrayStoreException, count=1 (avail_mem=7445980K)
[0.096s][info][redefine,class,load] redefined name=java.lang.ClassCastException, count=1 (avail_mem=7445980K)
[0.096s][info][redefine,class,load] redefined name=java.lang.NoSuchMethodException, count=1 (avail_mem=7445980K)
[0.096s][info][redefine,class,load] redefined name=java.lang.LinkageError, count=1 (avail_mem=7445980K)
[0.096s][info][redefine,class,load] redefined name=java.lang.NoClassDefFoundError, count=1 (avail_mem=7445980K)
[0.096s][info][redefine,class,load] redefined name=java.lang.InternalError, count=1 (avail_mem=7445980K)
[0.096s][info][redefine,class,load] redefined name=java.lang.OutOfMemoryError, count=1 (avail_mem=7445980K)
[0.096s][info][redefine,class,load] redefined name=java.lang.StackOverflowError, count=1 (avail_mem=7445980K)
[0.096s][info][redefine,class,load] redefined name=java.lang.BootstrapMethodError, count=1 (avail_mem=7445980K)
[0.096s][info][redefine,class,load] redefined name=java.lang.ClassNotFoundException, count=1 (avail_mem=7445980K)
[0.096s][info][redefine,class,load] redefined name=java.lang.InterruptedException, count=1 (avail_mem=7445980K)
[0.096s][info][redefine,class,load] redefined name=java.io.IOException, count=1 (avail_mem=7445980K)
[0.102s][info][redefine,class,timer] vm_op: all=13  prologue=7  doit=6
[0.102s][info][redefine,class,timer] doit: heap iterate=2  fullgc=0
HOTSWAP AGENT: 11:01:00.335 INFO (org.hotswap.agent.HotswapAgent) - Loading Hotswap agent {2.0.2} - unlimited runtime class redefinition.
HOTSWAP AGENT: 11:01:00.563 INFO (org.hotswap.agent.config.PluginRegistry) 

@gejun123456
Copy link
Author

how about provide an vm option on debug agent side like -DdisableRedefineJdkClasses=true in debugger agent. when use hotswapAgent you can pass the vm option to it instead of need change debugger setting in intellij.

@StefanPenndorf
Copy link

Thanks for the fast reply, @skybber .

I'm pretty shure it's the right JDK used.

java --version
openjdk 17.0.12 2024-07-16
OpenJDK Runtime Environment JBR-17.0.12+1-1087.25-jcef (build 17.0.12+1-b1087.25)
OpenJDK 64-Bit Server VM JBR-17.0.12+1-1087.25-jcef (build 17.0.12+1-b1087.25, mixed mode)
/home/penndorf/.sdkman/candidates/tomcat/9.0.81/bin/catalina.sh run
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
[2024-11-26 02:05:29,588] Artifact portal-war:war: Waiting for server connection to start artifact deployment…
Connected to the target VM, address: '127.0.0.1:34111', transport: 'socket'
Starting HotswapAgent '/home/penndorf/.sdkman/candidates/java/17.0.12-jbr/lib/hotswap/hotswap-agent.jar'
[0,173s][info][redefine,class,load] redefined name=java.lang.Throwable, count=1 (avail_mem=5883784K)
[0,173s][info][redefine,class,load] redefined name=java.lang.Exception, count=1 (avail_mem=5883784K)
[0,173s][info][redefine,class,load] redefined name=java.lang.ReflectiveOperationException, count=1 (avail_mem=5883784K)
[0,173s][info][redefine,class,load] redefined name=java.lang.ClassNotFoundException, count=1 (avail_mem=5883784K)
[0,173s][info][redefine,class,load] redefined name=java.lang.RuntimeException, count=1 (avail_mem=5883784K)
[0,173s][info][redefine,class,load] redefined name=java.lang.IllegalMonitorStateException, count=1 (avail_mem=5883784K)
[0,173s][info][redefine,class,load] redefined name=java.lang.ArrayStoreException, count=1 (avail_mem=5883784K)
[0,173s][info][redefine,class,load] redefined name=java.lang.ClassCastException, count=1 (avail_mem=5883784K)
[0,173s][info][redefine,class,load] redefined name=java.lang.ArithmeticException, count=1 (avail_mem=5883784K)
[0,173s][info][redefine,class,load] redefined name=java.lang.IllegalArgumentException, count=1 (avail_mem=5883784K)
[0,173s][info][redefine,class,load] redefined name=java.lang.NullPointerException, count=1 (avail_mem=5883784K)
[0,173s][info][redefine,class,load] redefined name=java.lang.NoSuchMethodException, count=1 (avail_mem=5883784K)
[0,173s][info][redefine,class,load] redefined name=java.lang.Error, count=1 (avail_mem=5883784K)
[0,173s][info][redefine,class,load] redefined name=java.lang.LinkageError, count=1 (avail_mem=5883784K)
[0,173s][info][redefine,class,load] redefined name=java.lang.NoClassDefFoundError, count=1 (avail_mem=5883784K)
[0,173s][info][redefine,class,load] redefined name=java.lang.VirtualMachineError, count=1 (avail_mem=5883784K)
[0,173s][info][redefine,class,load] redefined name=java.lang.InternalError, count=1 (avail_mem=5883784K)
[0,173s][info][redefine,class,load] redefined name=java.lang.OutOfMemoryError, count=1 (avail_mem=5883784K)
[0,173s][info][redefine,class,load] redefined name=java.lang.BootstrapMethodError, count=1 (avail_mem=5883784K)
[0,173s][info][redefine,class,load] redefined name=java.lang.ThreadDeath, count=1 (avail_mem=5883784K)
[0,173s][info][redefine,class,load] redefined name=java.lang.StackOverflowError, count=1 (avail_mem=5883784K)
[0,173s][info][redefine,class,load] redefined name=java.lang.NoSuchFieldException, count=1 (avail_mem=5883784K)
[0,179s][info][redefine,class,timer] vm_op: all=13  prologue=8  doit=5
[0,179s][info][redefine,class,timer] doit: heap iterate=1  fullgc=0
Exception in thread "main" java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:491)
	at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:503)
Caused by: java.lang.VerifyError: Catch type is not a subclass of Throwable in exception handler 46
Exception Details:
  Location:
    org/hotswap/agent/util/Version.version()Ljava/lang/String; @46: astore_0
  Reason:
    Type 'java/io/IOException' (constant pool 12) is not assignable to 'java/lang/Throwable'
  Bytecode:
    0000000: bb00 0259 b700 034b 1204 1205 b600 064c
    0000010: 2a2b b600 072b b600 082a 1209 b600 0ac7
    0000020: 0008 120b a700 092a 1209 b600 0ab0 4b12
    0000030: 0db0                                   
  Exception Handler Table:
    bci [0, 45] => handler: 46
  Stackmap Table:
    append_frame(@39,Object[#2],Object[#31])
    same_locals_1_stack_item_frame(@45,Object[#32])
    full_frame(@46,{},{Object[#12]})

	at org.hotswap.agent.HotswapAgent.premain(HotswapAgent.java:66)
	... 6 more
*** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message Outstanding error when calling method in invokeJavaAgentMainMethod at src/java.instrument/share/native/libinstrument/JPLISAgent.c line: 619
*** java.lang.instrument ASSERTION FAILED ***: "success" with message invokeJavaAgentMainMethod failed at src/java.instrument/share/native/libinstrument/JPLISAgent.c line: 459
*** java.lang.instrument ASSERTION FAILED ***: "result" with message agent load/premain call failed at src/java.instrument/share/native/libinstrument/JPLISAgent.c line: 422
FATAL ERROR in native method: processing of -javaagent failed, processJavaStart failed
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x8b732a]  jni_FatalError+0xba
V  [libjvm.so+0xa37112]  JvmtiExport::post_vm_initialized()+0x132
V  [libjvm.so+0xe6ec1b]  Threads::create_vm(JavaVMInitArgs*, bool*)+0x94b
V  [libjvm.so+0x8d1011]  JNI_CreateJavaVM+0x51
C  [libjli.so+0x3a1f]  JavaMain+0x8f
C  [libjli.so+0x7d79]  ThreadJavaMain+0x9

Disconnected from the target VM, address: '127.0.0.1:34111', transport: 'socket'
Disconnected from server

Launching without Debugger Agent will produce the following log output instead:

/home/penndorf/.sdkman/candidates/tomcat/9.0.81/bin/catalina.sh run
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
[2024-11-26 02:08:37,831] Artifact portal-war:war: Waiting for server connection to start artifact deployment…
Connected to the target VM, address: '127.0.0.1:34111', transport: 'socket'
HOTSWAP AGENT: 14:08:38.019 INFO (org.hotswap.agent.HotswapAgent) - Loading Hotswap agent {2.0.1} - unlimited runtime class redefinition.
HOTSWAP AGENT: 14:08:38.465 INFO (org.hotswap.agent.config.PluginRegistry) - Discovered plugins: [WatchResources, ClassInitPlugin, AnonymousClassPatch, Hotswapper, JdkPlugin, Hibernate, HibernateJakarta, Hibernate3, Hibernate3JPA, Spring, SpringBoot, Jersey1, Jersey2, Jetty, Tomcat, ZK, Logback, Log4j2, MyFaces, Mojarra, Omnifaces, ELResolver, WildFlyELResolver, OsgiEquinox, Owb, OwbJakarta, Proxy, WebObjects, Weld, WeldJakarta, JBossModules, ResteasyRegistry, Deltaspike, DeltaspikeJakarta, GlassFish, Weblogic, Vaadin, Wicket, CxfJAXRS, FreeMarker, Undertow, MyBatis, MyBatisPlus, IBatis, JacksonPlugin, Idea, Thymeleaf, Velocity, Sponge]
Starting HotswapAgent '/home/penndorf/.sdkman/candidates/java/17.0.12-jbr/lib/hotswap/hotswap-agent.jar'
26-Nov-2024 14:08:39.744 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Server Version:        Apache Tomcat/9.0.81
26-Nov-2024 14:08:39.747 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Oct 9 2023 21:04:55 UTC
26-Nov-2024 14:08:39.748 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.81.0
26-Nov-2024 14:08:39.748 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
26-Nov-2024 14:08:39.748 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            6.8.0-49-generic
26-Nov-2024 14:08:39.748 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Architektur:           amd64
26-Nov-2024 14:08:39.748 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /home/penndorf/.sdkman/candidates/java/17.0.12-jbr
26-Nov-2024 14:08:39.748 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           17.0.12+1-b1087.25
26-Nov-2024 14:08:39.748 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Hersteller:        JetBrains s.r.o.
26-Nov-2024 14:08:39.749 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /home/penndorf/.cache/JetBrains/IntelliJIdea2024.3/tomcat/81b2462d-513f-494d-982b-b4a141440a46
26-Nov-2024 14:08:39.749 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /home/penndorf/.sdkman/candidates/tomcat/9.0.81
26-Nov-2024 14:08:39.750 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
26-Nov-2024 14:08:39.750 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
26-Nov-2024 14:08:39.750 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util=ALL-UNNAMED
26-Nov-2024 14:08:39.750 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
26-Nov-2024 14:08:39.750 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
26-Nov-2024 14:08:39.751 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/home/penndorf/.cache/JetBrains/IntelliJIdea2024.3/tomcat/81b2462d-513f-494d-982b-b4a141440a46/conf/logging.properties
26-Nov-2024 14:08:39.751 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
26-Nov-2024 14:08:39.751 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dvisualvm.id=20793523825013
26-Nov-2024 14:08:39.751 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:34111,suspend=y,server=n
26-Nov-2024 14:08:39.751 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -javaagent:/home/penndorf/.local/share/JetBrains/Toolbox/apps/intellij-idea-ultimate/plugins/Groovy/lib/agent/gragent.jar
26-Nov-2024 14:08:39.751 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dvaadin.copilot.pluginDotFilePath=/home/penndorf/workspaces/portal/.idea/.copilot-plugin
26-Nov-2024 14:08:39.751 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xlog:redefine+class*=info
26-Nov-2024 14:08:39.751 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+AllowEnhancedClassRedefinition
26-Nov-2024 14:08:39.751 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:HotswapAgent=fatjar
26-Nov-2024 14:08:39.752 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dapplication.property.file=<path redacted>
26-Nov-2024 14:08:39.752 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dspring.profiles.active=development
26-Nov-2024 14:08:39.752 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dapplication.enable-development-mode=true
26-Nov-2024 14:08:39.754 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dliquibase.shouldRun=false
26-Nov-2024 14:08:39.754 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote=
26-Nov-2024 14:08:39.754 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.port=1099
26-Nov-2024 14:08:39.754 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.ssl=false
26-Nov-2024 14:08:39.755 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.password.file=/home/penndorf/.cache/JetBrains/IntelliJIdea2024.3/tomcat/81b2462d-513f-494d-982b-b4a141440a46/jmxremote.password
26-Nov-2024 14:08:39.755 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.access.file=/home/penndorf/.cache/JetBrains/IntelliJIdea2024.3/tomcat/81b2462d-513f-494d-982b-b4a141440a46/jmxremote.access
26-Nov-2024 14:08:39.755 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.rmi.server.hostname=127.0.0.1
26-Nov-2024 14:08:39.755 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
26-Nov-2024 14:08:39.755 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
26-Nov-2024 14:08:39.755 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
26-Nov-2024 14:08:39.755 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
26-Nov-2024 14:08:39.755 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/home/penndorf/.cache/JetBrains/IntelliJIdea2024.3/tomcat/81b2462d-513f-494d-982b-b4a141440a46
26-Nov-2024 14:08:39.755 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/home/penndorf/.sdkman/candidates/tomcat/9.0.81
26-Nov-2024 14:08:39.755 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/home/penndorf/.sdkman/candidates/tomcat/9.0.81/temp

Please note that I'm using Version 2.0.1 which is the latest version districbuted via github releases and/or maven central. I recognized that you're using 2.0.2 and that there was a 2.0.2 tag created 4 days ago but there is no hotswap-agent-2.0.2.jar available for download.

If there is any indication that the problem has been fixed in the latest version, I'll build the version 2.0.2 myself and give it a try?!?!

@skybber
Copy link

skybber commented Nov 26, 2024

@StefanPenndorf thanks for report. It seems that the core redefinition patch is not in 17.0.12+1-b1087.25. Could you please check it in at least 17.0.12-linux-x64-b1207.37 ? According to the test the problem is fixed in 17.0.12-linux-x64-b1207.37. (I was able reproduce it in 17.0.12+1-b1087.25 but not in 17.0.12-linux-x64-b1207.37.

https://github.com/JetBrains/JetBrainsRuntime/releases/tag/jbr-release-17.0.12b1207.37

@StefanPenndorf
Copy link

I can confirm that 17.0.12+1-b1207.37 fixes the problem:

/home/penndorf/.sdkman/candidates/tomcat/9.0.81/bin/catalina.sh run
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
Connected to the target VM, address: '127.0.0.1:34111', transport: 'socket'
[2024-11-28 12:02:12,051] Artifact portal-war:war: Waiting for server connection to start artifact deployment…
Starting HotswapAgent '/home/penndorf/.sdkman/candidates/java/17.0.12.1207-jbr/lib/hotswap/hotswap-agent.jar'
[0,134s][info][redefine,class,load] redefined name=java.lang.Throwable, count=1 (avail_mem=3089264K)
[0,134s][info][redefine,class,load] redefined name=java.lang.Error, count=1 (avail_mem=3089264K)
[0,134s][info][redefine,class,load] redefined name=java.lang.ThreadDeath, count=1 (avail_mem=3089264K)
[0,134s][info][redefine,class,load] redefined name=java.lang.Exception, count=1 (avail_mem=3089264K)
[0,134s][info][redefine,class,load] redefined name=java.lang.RuntimeException, count=1 (avail_mem=3089264K)
[0,134s][info][redefine,class,load] redefined name=java.lang.IllegalArgumentException, count=1 (avail_mem=3089264K)
[0,134s][info][redefine,class,load] redefined name=java.lang.ArithmeticException, count=1 (avail_mem=3089264K)
[0,134s][info][redefine,class,load] redefined name=java.lang.IllegalMonitorStateException, count=1 (avail_mem=3089264K)
[0,134s][info][redefine,class,load] redefined name=java.lang.NullPointerException, count=1 (avail_mem=3089264K)
[0,134s][info][redefine,class,load] redefined name=java.lang.ReflectiveOperationException, count=1 (avail_mem=3089264K)
[0,134s][info][redefine,class,load] redefined name=java.lang.NoSuchFieldException, count=1 (avail_mem=3089264K)
[0,134s][info][redefine,class,load] redefined name=java.lang.VirtualMachineError, count=1 (avail_mem=3089264K)
[0,134s][info][redefine,class,load] redefined name=java.lang.ArrayStoreException, count=1 (avail_mem=3089264K)
[0,134s][info][redefine,class,load] redefined name=java.lang.ClassCastException, count=1 (avail_mem=3089264K)
[0,134s][info][redefine,class,load] redefined name=java.lang.NoSuchMethodException, count=1 (avail_mem=3089264K)
[0,134s][info][redefine,class,load] redefined name=java.lang.LinkageError, count=1 (avail_mem=3089264K)
[0,134s][info][redefine,class,load] redefined name=java.lang.NoClassDefFoundError, count=1 (avail_mem=3089264K)
[0,134s][info][redefine,class,load] redefined name=java.lang.InternalError, count=1 (avail_mem=3089264K)
[0,134s][info][redefine,class,load] redefined name=java.lang.OutOfMemoryError, count=1 (avail_mem=3089264K)
[0,134s][info][redefine,class,load] redefined name=java.lang.StackOverflowError, count=1 (avail_mem=3089264K)
[0,134s][info][redefine,class,load] redefined name=java.lang.BootstrapMethodError, count=1 (avail_mem=3089264K)
[0,134s][info][redefine,class,load] redefined name=java.lang.ClassNotFoundException, count=1 (avail_mem=3089264K)
[0,134s][info][redefine,class,load] redefined name=java.lang.InterruptedException, count=1 (avail_mem=3089264K)
[0,134s][info][redefine,class,load] redefined name=java.io.IOException, count=1 (avail_mem=3089264K)
[0,146s][info][redefine,class,timer] vm_op: all=26  prologue=15  doit=11
[0,146s][info][redefine,class,timer] doit: heap iterate=3  fullgc=0
HOTSWAP AGENT: 12:02:12.268 INFO (org.hotswap.agent.HotswapAgent) - Loading Hotswap agent {2.0.1} - unlimited runtime class redefinition.
HOTSWAP AGENT: 12:02:12.749 INFO (org.hotswap.agent.config.PluginRegistry) - Discovered plugins: [WatchResources, ClassInitPlugin, AnonymousClassPatch, Hotswapper, JdkPlugin, Hibernate, HibernateJakarta, Hibernate3, Hibernate3JPA, Spring, SpringBoot, Jersey1, Jersey2, Jetty, Tomcat, ZK, Logback, Log4j2, MyFaces, Mojarra, Omnifaces, ELResolver, WildFlyELResolver, OsgiEquinox, Owb, OwbJakarta, Proxy, WebObjects, Weld, WeldJakarta, JBossModules, ResteasyRegistry, Deltaspike, DeltaspikeJakarta, GlassFish, Weblogic, Vaadin, Wicket, CxfJAXRS, FreeMarker, Undertow, MyBatis, MyBatisPlus, IBatis, JacksonPlugin, Idea, Thymeleaf, Velocity, Sponge]
28-Nov-2024 12:02:14.253 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Server Version:        Apache Tomcat/9.0.81
28-Nov-2024 12:02:14.257 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Oct 9 2023 21:04:55 UTC
28-Nov-2024 12:02:14.258 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.81.0
28-Nov-2024 12:02:14.258 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
28-Nov-2024 12:02:14.258 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            6.8.0-49-generic
28-Nov-2024 12:02:14.258 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Architektur:           amd64
28-Nov-2024 12:02:14.258 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /home/penndorf/.sdkman/candidates/java/17.0.12.1207-jbr
28-Nov-2024 12:02:14.258 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           17.0.12+1-b1207.37
28-Nov-2024 12:02:14.258 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Hersteller:        JetBrains s.r.o.
[...stripped tomcat related stuff...]
28-Nov-2024 12:02:14.262 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:34111,suspend=y,server=n
28-Nov-2024 12:02:14.262 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -javaagent:/home/penndorf/.local/share/JetBrains/Toolbox/apps/intellij-idea-ultimate/plugins/java/lib/rt/debugger-agent.jar=file:/tmp/capture.props
28-Nov-2024 12:02:14.262 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dkotlinx.coroutines.debug.enable.creation.stack.trace=false
28-Nov-2024 12:02:14.262 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Ddebugger.agent.enable.coroutines=true
28-Nov-2024 12:02:14.263 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dkotlinx.coroutines.debug.enable.flows.stack.trace=true
28-Nov-2024 12:02:14.263 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dkotlinx.coroutines.debug.enable.mutable.state.flows.stack.trace=true
28-Nov-2024 12:02:14.263 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -javaagent:/home/penndorf/.local/share/JetBrains/Toolbox/apps/intellij-idea-ultimate/plugins/Groovy/lib/agent/gragent.jar
28-Nov-2024 12:02:14.263 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xlog:redefine+class*=info
28-Nov-2024 12:02:14.263 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+AllowEnhancedClassRedefinition
28-Nov-2024 12:02:14.264 INFORMATION [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:HotswapAgent=fatjar

Thank you @skybber for your patience and your efforts to trace the error.

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

No branches or pull requests

3 participants