- This topic has 4 replies, 2 voices, and was last updated 1 week, 3 days ago by
Brian Fernandes.
-
AuthorPosts
-
thegedusParticipantEnvironment:
- MyEclipse Versions: MyEclipse 2019 (background issue observed), MyEclipse 2024 (UI freezes experienced)
- JDK: 17.0.11 (bundled with MyEclipse)
- OS: Windows 64-bit
Problem Summary:
We are experiencing two primary symptoms:1. Frequently, ClassPathDependencyValidator threads get stuck in the background, visible in the Progress view, causing sustained CPU load.
2. Occasionally, and more critically, the entire MyEclipse UI freezes, rendering the IDE unresponsive. This UI freeze prompted this report.Version History / Regression:
The issue of stuck background validator threads was already noticeable in MyEclipse 2019, though without causing UI freezes at that time. We started experiencing the critical UI freezes with MyEclipse 2024. The regression or change that led to UI freezes could have been introduced in any version between MyEclipse 2019 and MyEclipse 2024, as we did not test all intermittent releases.Observed Behavior & Technical Clues:
– The hangs occur within java.util.WeakHashMap methods, specifically get(), put(), and during map iteration.
– Often, multiple threads appear to be stuck during ClassPathDependencyValidator operations.
– Our workspace consists of multiple, interdependent Maven WAR projects, which may increase the likelihood of triggering this issue due to complex classpath analysis.
– A sample call stack from a UI thread freeze is provided below.Suspected Root Cause
We strongly suspect a concurrency issue (e.g., missing or improper synchronization) related to a WeakHashMap instance used for caching classpath dependency information. Given the call stacks (including Genuitec-specific classes like com.genuitec.eclipse.server.core.GenuitecAppServer in some instances) and the behavior, this likely resides within MyEclipse’s proprietary code or its customized Eclipse WST components.Example Call Stack (UI Thread Stuck in WeakHashMap.get()):
java.base@17.0.11/java.util.WeakHashMap.get(WeakHashMap.java:409) org.eclipse.jst.j2ee.classpath.ClasspathDependencyUtil.isClassFolderEntry(ClasspathDependencyUtil.java:485) org.eclipse.jst.j2ee.classpath.ClasspathDependencyValidator.validateVirtualComponentEntry(ClasspathDependencyValidator.java:267) org.eclipse.jst.j2ee.classpath.ClasspathDependencyUtil.isValid(ClasspathDependencyUtil.java:259) org.eclipse.jst.j2ee.classpath.ClasspathDependencyUtil.getComponentClasspathDependencies(ClasspathDependencyUtil.java:420) org.eclipse.jst.j2ee.classpath.ClasspathDependencyUtil.getComponentClasspathDependencies(ClasspathDependencyUtil.java:281) org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getJavaClasspathReferences(J2EEModuleVirtualComponent.java:292) org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getManifestRefs(J2EEModuleVirtualComponent.java:262) org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getReferences(J2EEModuleVirtualComponent.java:181)
We kindly request the Genuitec MyEclipse team to investigate this concurrency issue. Addressing it would significantly improve stability and performance.
Furthermore, while a permanent fix is being developed, we would be very grateful for any guidance on potential configuration settings or workarounds that could help mitigate this problem. Any assistance in this regard would be highly appreciated.Thank you.
Attachments:
You must be logged in to view attached files.
Brian FernandesModeratorThank you for the detailed report and analysis, much appreciated! Do you know exactly what version of 2019 you were using prior to 2024? Was it 2019.4 or 2019.12? Consequently, what version of 2024 are you now using, I’m assuming 2024.1.2?
Can you share roughly the number of projects in your workspace?
Our team is taking a look at the issue now and we’ll prioritize getting a workaround you can test to keep moving with this release. We will get back in touch with you if any additional information is required.
thegedusParticipantHi Brian,
Thanks for the quick reply and for your team already looking into this!
Here’s the info you asked for:
MyEclipse 2019 version we were using:
– Version: 2019.12.5
– Build id: 16.0.0-20191205MyEclipse 2024 version we are currently using:
– Version: 2024.1.2
– Build id: 16.0.0-20240909Workspace details, roughly:
– There are 212 Maven artifacts in the build.
– We have 24 main aggregate projects.
– Currently, 19 WAR projects are open in the workspace (plus 2 are closed).
– On my two development servers, 7 web projects are currently deployed; this number usually ranges between 3 and 21.
– The projects are added to the source lookup tab of the debug configuration.
– Many projects are open, but the artifacts for larger, generated sources are not imported as projects.
Nevertheless, the classpath could still contain a few hundred thousand classes.Hopefully, this data will help in pinpointing the issue and developing a workaround. We’re looking forward to hearing what you find!
Thanks in advance for your help!
Brian FernandesModeratorThank you for the additional information and details, certainly helps! We’re having a hard time reproducing this issue, but I think we may have a workaround based on the information you shared. Can you please write in to support@genuitec.com with a link to this thread so we can discuss further? Thanks!
Brian FernandesModeratorHello – just wanted to confirm that your received our email with the workaround? Just wanted to be sure since we haven’t heard back – based on your feedback we’ll be able to work on a fix we can add to a formal release.
Thanks!
-
AuthorPosts