Bug 569620 - Eclipse freeze regulary
Summary: Eclipse freeze regulary
Status: NEW
Alias: None
Product: Platform
Classification: Eclipse Project
Component: IDE (show other bugs)
Version: 4.17   Edit
Hardware: PC Linux
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Platform-UI-Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords: performance
Depends on:
Blocks:
 
Reported: 2020-12-10 06:29 EST by unk know CLA
Modified: 2020-12-10 12:38 EST (History)
1 user (show)

See Also:


Attachments
stack trace when eclipse is frozen (39.80 KB, text/x-log)
2020-12-10 06:29 EST, unk know CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
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.