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

VMInstallTests.testLibraryResolver3 fails with ConcurrentModificationException #202

Closed
iloveeclipse opened this issue Mar 17, 2023 · 0 comments · Fixed by #247
Closed

VMInstallTests.testLibraryResolver3 fails with ConcurrentModificationException #202

iloveeclipse opened this issue Mar 17, 2023 · 0 comments · Fixed by #247
Labels
bug Something isn't working

Comments

@iloveeclipse
Copy link
Member

iloveeclipse commented Mar 17, 2023

See https://download.eclipse.org/eclipse/downloads/drops4/I20230316-1800/testresults/html/org.eclipse.jdt.debug.tests_ep428I-unit-win32-java17_win32.win32.x86_64_17.html

N/Ajava.util.ConcurrentModificationExceptionat java.base/java.util.HashMap$HashIterator.nextNode(HashMap.java:1597)
at java.base/java.util.HashMap$KeyIterator.next(HashMap.java:1620)
at org.eclipse.jdt.internal.launching.JREContainer$1.removeRuleEntry(JREContainer.java:244)
at org.eclipse.jdt.internal.launching.JREContainer$1.vmRemoved(JREContainer.java:230)
at org.eclipse.jdt.launching.JavaRuntime.fireVMRemoved(JavaRuntime.java:2936)at org.eclipse.jdt.launching.AbstractVMInstallType.disposeVMInstall(AbstractVMInstallType.java:78)
at org.eclipse.jdt.internal.launching.StandardVMType.disposeVMInstall(StandardVMType.java:822)
at org.eclipse.jdt.debug.tests.core.VMInstallTests.testLibraryResolver3(VMInstallTests.java:174) 

I haven't looked into code, but that should be easy to fix according to the stack trace.

@iloveeclipse iloveeclipse added the bug Something isn't working label Mar 17, 2023
jukzi pushed a commit to jukzi/eclipse.jdt.debug that referenced this issue May 24, 2023
jukzi pushed a commit to jukzi/eclipse.jdt.debug that referenced this issue Jun 12, 2023
jukzi pushed a commit to jukzi/eclipse.jdt.debug that referenced this issue Jun 16, 2023
@jukzi jukzi linked a pull request Jul 14, 2023 that will close this issue
jukzi pushed a commit that referenced this issue Jul 14, 2023
SarikaSinha added a commit that referenced this issue Aug 1, 2023
* Remove use of OPTION_JdtDebugCompileMode with
OPTION_IgnoreUnnamedModuleForSplitPackage

This change replaces use of OPTION_JdtDebugCompileMode with
OPTION_IgnoreUnnamedModuleForSplitPackage, since the latter does what we
need better and doesn't cause the side effects that the first option
causes. Goal is to later on remove OPTION_JdtDebugCompileMode in JDT
core.

Fixes: #260
Signed-off-by: Simeon Andreev <simeon.danailov.andreev@gmail.com>

* Detect JVM installs at startup (#231)

* Detect JVM installs at startup

Fixes #230

* Delete classpath argument files upon shutdown. Fixes #240 (#242)

Store classpath argument files in bundle state location, not in workspace

- Avoids that workspace is contaminated with temporary files.
- Delete classpath argument files upon shutdown.
- Version bump org.eclipse.jdt.launching.

See https://github.com/eclipse-platform/eclipse.platform.debug/issues/84
Fixes #240

* Avoid reusing of not thread-safe SimpleDateFormat

  SimpleDateFormat.format(new Date());
returns same string as immutable and thread-safe
  DateTimeFormatter.format(new Date().toInstant())

* Avoid potential Threadlocal.set(null) memory leak (#249)

Threadlocal.set(null) keeps a reference to ThreadLocal.this
see https://rules.sonarsource.com/java/RSPEC-5164

Co-authored-by: Jörg Kubitz <jkubitz-eclipse@gmx.de>

* Change how JrtPackageFragmentRoots are printed in Source tab (#266)

- currently all JrtPackageFragmentRoots are printed using the
  path which is the same for all modules extracted from a jrt-fs.jar
- change this to print the module name followed by the full
  jrt-fs.jar path
- fixes #633

* JavaSnippetEditor: fix missing synchronize (#259)

* JavaSnippetEditor: fix missing synchronize

* JavaSnippetEditor: Adding "this." for non static field access

---------

Co-authored-by: Jörg Kubitz <jkubitz-eclipse@gmx.de>

* LaunchingPlugin: use try-with-resource (#252)

to close streams in case of Exceptions.

Co-authored-by: Jörg Kubitz <jkubitz-eclipse@gmx.de>

* Add missing "static" modifier for constants (#256)

To reduce memory per instance

Co-authored-by: Jörg Kubitz <jkubitz-eclipse@gmx.de>

* [trivial] Fixed "Redundant specification of type arguments" warnings

Reported by official SDK build since 4.29 for whatever reason

See for example
https://download.eclipse.org/eclipse/downloads/drops4/I20230621-1800/compilelogs/plugins/org.eclipse.jdt.debug.jdi.tests_1.1.0.v20230328-1614/@dot.html#OTHER_WARNINGS

* Records with inner records breaks breakpoint toggling
fixes #270

Boundary for Breakpoint should be checked

* Touch bundles affected by the new ecj version

See eclipse-platform/eclipse.platform.releng.aggregator#1184

* Fix html links in VMInstall(Type) Extension-Point documentation

* Re-throw underlying exceptions in OpenFromClipboardTests #27 (#279)

Replace call to Display::syncExec with call to Display::syncCall in the
private method getJavaElementMatches. snycCall does not hide exceptions,
it re-throws them to the calling thread (which helps debugging).

Don't catch exceptions in the helper class "Accessor", re-throw them so
the calling tests can show a more meaningful stack-trace when they fail.

* Use typed for-each loop

Avoiding type-casts makes code easier to read.

* Avoid wrapping primitives for toString()

see https://rules.sonarsource.com/java/RSPEC-2131

* ReferenceTypeImpl: compare Array content

instead of instance comparison.
https://stackoverflow.com/questions/8777257/equals-vs-arrays-equals-in-java

* VMInstallTests: fix random ConcurrentModificationException #202

by using threadsafe datastructures.

* Set console stream encoding for java >= 19 - eclipse.platform.debug#124

https://github.com/eclipse-platform/eclipse.platform.debug/issues/124

* FileHashing: avoid getCanonicalFile()

getCanonicalFile() is slow on windows / JDK17 - can costs even more then
calculating the SHA1 of the file content, which it is supposed to avoid.

* Instead use normalized path. It does not matter that multiple files
could be the same due to symbolic links, it will just recalculate their
SHA1 for all of them - which is still faster.
* Also read all file attributes at once.

* Refactor XML parsing

* Fix path decoding of URL to File containing space (fixes #64)

A space in an URL is encoded as "%20" and has to be decoded to " ".

Otherwise a debugged JAR rooted in a path containing space is not
opening class file but java file editor.

* Add MacOS support for detecting VM installs at start up (#276)

- fixes #265

* require org.eclipse.core.runtime 3.29.0

---------

Signed-off-by: Simeon Andreev <simeon.danailov.andreev@gmail.com>
Co-authored-by: Simeon Andreev <simeon.danailov.andreev@gmail.com>
Co-authored-by: Mickael Istria <mistria@redhat.com>
Co-authored-by: Diethard Ohrt <130975899+diti0023@users.noreply.github.com>
Co-authored-by: Jörg Kubitz <jkubitz-eclipse@gmx.de>
Co-authored-by: Jörg Kubitz <51790620+jukzi@users.noreply.github.com>
Co-authored-by: Jeff Johnston <jjohnstn@redhat.com>
Co-authored-by: Andrey Loskutov <loskutov@gmx.de>
Co-authored-by: Hannes Wellmann <wellmann.hannes1@gmx.net>
Co-authored-by: Federico Jeanne <2205684+fedejeanne@users.noreply.github.com>
SarikaSinha added a commit that referenced this issue Aug 1, 2023
* Remove use of OPTION_JdtDebugCompileMode with
OPTION_IgnoreUnnamedModuleForSplitPackage

This change replaces use of OPTION_JdtDebugCompileMode with
OPTION_IgnoreUnnamedModuleForSplitPackage, since the latter does what we
need better and doesn't cause the side effects that the first option
causes. Goal is to later on remove OPTION_JdtDebugCompileMode in JDT
core.

Fixes: #260
Signed-off-by: Simeon Andreev <simeon.danailov.andreev@gmail.com>

* Detect JVM installs at startup (#231)

* Detect JVM installs at startup

Fixes #230

* Delete classpath argument files upon shutdown. Fixes #240 (#242)

Store classpath argument files in bundle state location, not in workspace

- Avoids that workspace is contaminated with temporary files.
- Delete classpath argument files upon shutdown.
- Version bump org.eclipse.jdt.launching.

See https://github.com/eclipse-platform/eclipse.platform.debug/issues/84
Fixes #240

* Avoid reusing of not thread-safe SimpleDateFormat

  SimpleDateFormat.format(new Date());
returns same string as immutable and thread-safe
  DateTimeFormatter.format(new Date().toInstant())

* Avoid potential Threadlocal.set(null) memory leak (#249)

Threadlocal.set(null) keeps a reference to ThreadLocal.this
see https://rules.sonarsource.com/java/RSPEC-5164

Co-authored-by: Jörg Kubitz <jkubitz-eclipse@gmx.de>

* Change how JrtPackageFragmentRoots are printed in Source tab (#266)

- currently all JrtPackageFragmentRoots are printed using the
  path which is the same for all modules extracted from a jrt-fs.jar
- change this to print the module name followed by the full
  jrt-fs.jar path
- fixes #633

* JavaSnippetEditor: fix missing synchronize (#259)

* JavaSnippetEditor: fix missing synchronize

* JavaSnippetEditor: Adding "this." for non static field access

---------

Co-authored-by: Jörg Kubitz <jkubitz-eclipse@gmx.de>

* LaunchingPlugin: use try-with-resource (#252)

to close streams in case of Exceptions.

Co-authored-by: Jörg Kubitz <jkubitz-eclipse@gmx.de>

* Add missing "static" modifier for constants (#256)

To reduce memory per instance

Co-authored-by: Jörg Kubitz <jkubitz-eclipse@gmx.de>

* [trivial] Fixed "Redundant specification of type arguments" warnings

Reported by official SDK build since 4.29 for whatever reason

See for example
https://download.eclipse.org/eclipse/downloads/drops4/I20230621-1800/compilelogs/plugins/org.eclipse.jdt.debug.jdi.tests_1.1.0.v20230328-1614/@dot.html#OTHER_WARNINGS

* Records with inner records breaks breakpoint toggling
fixes #270

Boundary for Breakpoint should be checked

* Touch bundles affected by the new ecj version

See eclipse-platform/eclipse.platform.releng.aggregator#1184

* Fix html links in VMInstall(Type) Extension-Point documentation

* Re-throw underlying exceptions in OpenFromClipboardTests #27 (#279)

Replace call to Display::syncExec with call to Display::syncCall in the
private method getJavaElementMatches. snycCall does not hide exceptions,
it re-throws them to the calling thread (which helps debugging).

Don't catch exceptions in the helper class "Accessor", re-throw them so
the calling tests can show a more meaningful stack-trace when they fail.

* Use typed for-each loop

Avoiding type-casts makes code easier to read.

* Avoid wrapping primitives for toString()

see https://rules.sonarsource.com/java/RSPEC-2131

* ReferenceTypeImpl: compare Array content

instead of instance comparison.
https://stackoverflow.com/questions/8777257/equals-vs-arrays-equals-in-java

* VMInstallTests: fix random ConcurrentModificationException #202

by using threadsafe datastructures.

* Set console stream encoding for java >= 19 - eclipse.platform.debug#124

https://github.com/eclipse-platform/eclipse.platform.debug/issues/124

* FileHashing: avoid getCanonicalFile()

getCanonicalFile() is slow on windows / JDK17 - can costs even more then
calculating the SHA1 of the file content, which it is supposed to avoid.

* Instead use normalized path. It does not matter that multiple files
could be the same due to symbolic links, it will just recalculate their
SHA1 for all of them - which is still faster.
* Also read all file attributes at once.

* Refactor XML parsing

* Fix path decoding of URL to File containing space (fixes #64)

A space in an URL is encoded as "%20" and has to be decoded to " ".

Otherwise a debugged JAR rooted in a path containing space is not
opening class file but java file editor.

* Add MacOS support for detecting VM installs at start up (#276)

- fixes #265

* require org.eclipse.core.runtime 3.29.0

---------

Signed-off-by: Simeon Andreev <simeon.danailov.andreev@gmail.com>
Co-authored-by: Simeon Andreev <simeon.danailov.andreev@gmail.com>
Co-authored-by: Mickael Istria <mistria@redhat.com>
Co-authored-by: Diethard Ohrt <130975899+diti0023@users.noreply.github.com>
Co-authored-by: Jörg Kubitz <jkubitz-eclipse@gmx.de>
Co-authored-by: Jörg Kubitz <51790620+jukzi@users.noreply.github.com>
Co-authored-by: Jeff Johnston <jjohnstn@redhat.com>
Co-authored-by: Andrey Loskutov <loskutov@gmx.de>
Co-authored-by: Hannes Wellmann <wellmann.hannes1@gmx.net>
Co-authored-by: Federico Jeanne <2205684+fedejeanne@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant