OpenLiberty / liberty-tools-eclipse

Eclipse Public License 2.0
11 stars 8 forks source link

Debugger connection appears to time out #417

Open scottkurz opened 1 year ago

scottkurz commented 1 year ago

Reports from internal user of the debugger connection timing out when using the Liberty Tools Eclipse "Debug" operation.

This is running w/ Semeru Java 17 on Win 11, Eclipse OpenJ9 VM 17.0.7.0 (build openj9-0.38.0, JRE 17 Windows 11 amd64-64-Bit ...

Interestingly enough, this particular user was able to successfully establish a Debug connection with the same app on the same system, using the WDT/LDT feature in another Eclipse install.

I wonder if there is anything to consider here?:
https://github.com/OpenLiberty/open-liberty-tools/blob/integration/dev/com.ibm.ws.st.core/src/com/ibm/ws/st/core/internal/launch/BaseLibertyLaunchConfiguration.java

Note: The solution here could possibly overlap https://github.com/OpenLiberty/liberty-tools-eclipse/issues/400 as this issue suggests the need for a new "Liberty Tools" Run/Debug config type of our own.

scottkurz commented 10 months ago

Similar error running Windows 11 plus a local build of PR https://github.com/OpenLiberty/liberty-tools-eclipse/pull/437

!ENTRY org.eclipse.jdt.debug 4 125 2023-10-16 18:05:29.230
!MESSAGE Internal error logged from JDI Debug: 
!STACK 0
org.eclipse.jdi.TimeoutException: Timeout occurred while waiting for packet 21412.
    at org.eclipse.jdi.internal.connect.PacketReceiveManager.getReply(PacketReceiveManager.java:196)
    at org.eclipse.jdi.internal.connect.PacketReceiveManager.getReply(PacketReceiveManager.java:207)
    at org.eclipse.jdi.internal.MirrorImpl.requestVM(MirrorImpl.java:208)
    at org.eclipse.jdi.internal.MirrorImpl.requestVM(MirrorImpl.java:243)
    at org.eclipse.jdi.internal.VirtualMachineImpl.classesBySignature(VirtualMachineImpl.java:658)
    at org.eclipse.jdi.internal.VirtualMachineImpl.classesByName(VirtualMachineImpl.java:688)
    at org.eclipse.jdt.internal.debug.core.model.JDIDebugTarget.jdiClassesByName(JDIDebugTarget.java:1956)
    at org.eclipse.jdt.internal.debug.core.model.JDIDebugTarget.filterNotLoadedTypes(JDIDebugTarget.java:3318)
    at org.eclipse.jdt.internal.debug.core.hcr.JavaHotCodeReplaceManager.doHotCodeReplace(JavaHotCodeReplaceManager.java:443)
    at org.eclipse.jdt.internal.debug.core.hcr.JavaHotCodeReplaceManager.lambda$0(JavaHotCodeReplaceManager.java:317)
    at org.eclipse.debug.core.DebugPlugin$AsynchRunner.run(DebugPlugin.java:1186)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
    at org.eclipse.debug.core.DebugPlugin$AsynchRunner.async(DebugPlugin.java:1173)
    at org.eclipse.debug.core.DebugPlugin$EventDispatchJob.run(DebugPlugin.java:489)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

WDT debug works fine with the same app and JVM

scottkurz commented 10 months ago

User recreated with this in in .log:

eclipse.buildId=4.29.0.20230907-1200

java.fullversion=17.0.8.1+1 JRE 17 Windows 11 amd64-64-Bit Compressed References 20230824_473 (JIT enabled, AOT enabled) OpenJ9 - d12d10c9e OMR - e80bff83b JCL - 87c2977201e based on jdk-17.0.8.1+1

scottkurz commented 9 months ago

To recap (the info received over DM plus earlier comments in this issue):

org.eclipse.jdi.TimeoutException: Timeout occurred while waiting for packet 12766. at org.eclipse.jdi.internal.connect.PacketReceiveManager.getReply(PacketReceiveManager.java:196) at org.eclipse.jdi.internal.connect.PacketReceiveManager.getReply(PacketReceiveManager.java:207) at org.eclipse.jdi.internal.MirrorImpl.requestVM(MirrorImpl.java:208) at org.eclipse.jdi.internal.MirrorImpl.requestVM(MirrorImpl.java:243) at org.eclipse.jdi.internal.VirtualMachineImpl.classesBySignature(VirtualMachineImpl.java:658) at org.eclipse.jdi.internal.VirtualMachineImpl.classesByName(VirtualMachineImpl.java:688) at org.eclipse.jdt.internal.debug.core.model.JDIDebugTarget.jdiClassesByName(JDIDebugTarget.java:1956) at org.eclipse.jdt.internal.debug.core.model.JDIDebugTarget.filterNotLoadedTypes(JDIDebugTarget.java:3318) at org.eclipse.jdt.internal.debug.core.hcr.JavaHotCodeReplaceManager.doHotCodeReplace(JavaHotCodeReplaceManager.java:443) at org.eclipse.jdt.internal.debug.core.hcr.JavaHotCodeReplaceManager.lambda$0(JavaHotCodeReplaceManager.java:317) at org.eclipse.debug.core.DebugPlugin$AsynchRunner.run(DebugPlugin.java:1187) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) at org.eclipse.debug.core.DebugPlugin$AsynchRunner.async(DebugPlugin.java:1174) at org.eclipse.debug.core.DebugPlugin$EventDispatchJob.run(DebugPlugin.java:490) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

scottkurz commented 8 months ago

Moving out to the next milestone.

Some thoughts:

Is it conceivable that the concurrent compiles, from both the IDE and from dev mode, could be triggering this problem? Could that be a reason this is never seen in LDT/WDT for the same app?

Possible things to look at:

Note there is a separate more straightforward angle to pursue wrt jdt.debug... there is a timeout, why isn't it taking effect?

It is useful to consider if the double-compile could be relevant, but we could consider the jdt.debug code and its timeout independently perhaps.