Bug 569620

Summary: Eclipse freeze regulary
Product: [Eclipse Project] Platform Reporter: unk know <unknow0>
Component: IDEAssignee: Platform-UI-Inbox <Platform-UI-Inbox>
Status: NEW --- QA Contact:
Severity: normal    
Priority: P3 CC: loskutov
Version: 4.17Keywords: performance
Target Milestone: ---   
Hardware: PC   
OS: Linux   
See Also: https://bugs.eclipse.org/bugs/show_bug.cgi?id=527312
Whiteboard:
Attachments:
Description Flags
stack trace when eclipse is frozen none

Description unk know CLA 2020-12-10 06:29:39 EST
Created attachment 285014 [details]
stack trace when eclipse is frozen

Hi,

eclipse freeze regularly far a random duration.

i attached the stack trace when eclipse is frozen.

the relevant part of the stack (i think) is that the main thread is waiting for the marker thing:

"main" #1 prio=6 os_prio=0 cpu=20055,49ms elapsed=67,68s tid=0x0000000000aec800 nid=0x75fc waiting for monitor entry  [0x00007ffd8bd0f000]
   java.lang.Thread.State: BLOCKED (on object monitor)
	at org.eclipse.ui.internal.views.markers.Markers.getMarkerItem(Markers.java:349)
	- waiting to lock <0x00000006af34dd50> (a org.eclipse.ui.internal.views.markers.Markers)
	at org.eclipse.ui.internal.views.markers.ExtendedMarkersView.setSelection(ExtendedMarkersView.java:1306)

"Worker-20: Searching for markers" #60 prio=5 os_prio=0 cpu=35946,87ms elapsed=51,05s tid=0x00007f82540cd800 nid=0x76cc runnable  [0x00007f82503e5000]
   java.lang.Thread.State: RUNNABLE
	at sun.text.normalizer.NormalizerBase.nextNormalize(java.base@11.0.8/NormalizerBase.java:756)
	at sun.text.normalizer.NormalizerBase.next(java.base@11.0.8/NormalizerBase.java:520)
	at java.text.CollationElementIterator.next(java.base@11.0.8/CollationElementIterator.java:217)
	at java.text.RuleBasedCollator.getCollationKey(java.base@11.0.8/RuleBasedCollator.java:630)
	- locked <0x00000007613e9dc0> (a java.text.RuleBasedCollator)
	at org.eclipse.ui.internal.views.markers.MarkerEntry.getCollationKey(MarkerEntry.java:222)
	at org.eclipse.ui.internal.views.markers.MarkerDescriptionField.getDescriptionKey(MarkerDescriptionField.java:120)
	at org.eclipse.ui.internal.views.markers.MarkerDescriptionField.compare(MarkerDescriptionField.java:104)
	at org.eclipse.ui.internal.views.markers.MarkerProblemSeverityAndMessageField.compare(MarkerProblemSeverityAndMessageField.java:39)
	at org.eclipse.ui.internal.views.markers.MarkerComparator.compareFields(MarkerComparator.java:110)
	at org.eclipse.ui.internal.views.markers.MarkerComparator$$Lambda$890/0x0000000840ed5840.compare(Unknown Source)
	at org.eclipse.ui.internal.views.markers.MarkerSortUtil.adjustMaxElement(MarkerSortUtil.java:105)
	at org.eclipse.ui.internal.views.markers.MarkerSortUtil.partiallySort(MarkerSortUtil.java:83)
	at org.eclipse.ui.internal.views.markers.MarkerSortUtil.sortStartingKElement(MarkerSortUtil.java:350)
	at org.eclipse.ui.internal.views.markers.Markers.sortMarkerEntries(Markers.java:168)
	- locked <0x00000006af34dd50> (a org.eclipse.ui.internal.views.markers.Markers)
	at org.eclipse.ui.internal.views.markers.Markers.sortAndMakeCategories(Markers.java:139)
	- locked <0x00000006af34dd50> (a org.eclipse.ui.internal.views.markers.Markers)
	at org.eclipse.ui.internal.views.markers.Markers.updateWithNewMarkers(Markers.java:103)
	- locked <0x00000006af34dd50> (a org.eclipse.ui.internal.views.markers.Markers)
	at org.eclipse.ui.internal.views.markers.MarkerUpdateJob.processMarkerEntries(MarkerUpdateJob.java:128)
	at org.eclipse.ui.internal.views.markers.MarkerUpdateJob.buildMarkers(MarkerUpdateJob.java:82)
	at org.eclipse.ui.internal.views.markers.MarkerUpdateJob.run(MarkerUpdateJob.java:54)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

Regards.
Comment 1 Andrey Loskutov CLA 2020-12-10 12:38:40 EST
Looks like it is waiting on the lock introduced in bug 527312 (to prevent MT issues). 
I believe the problem is the inefficient implementation in Markers.sortAndMakeCategories() (but may be it's JFace issue too) - if you have more than ~20.000 markers visible in the tree, you are most likely to see freezes.