I’d guess that the linked list of jobs has somehow become corrupt so that the while loop has turned into an infinite loop. Perhaps the same job is being added twice?
final void addLast(InternalJob entry) { InternalJob last = this; //find the end of the queue while (last.previous != null) last = last.previous; //add the new entry to the end of the queue last.previous = entry; entry.next = last; entry.previous = null; }
Is it reproducible? Could you put some conditional breakpoints for when ‘last == last.previous’, and some watchpoints so that previous and next are never set to the same object?
Brian.
On 22-Sep-2014, at 10:39 AM, Martin Lippert < mlippert@xxxxxxxxx> wrote: Hey!
I have a question around debugging problems with jobs. I got a number of thread dumps from users reporting freezes in Eclipse/STS, but I have difficulties identifying the issue from looking at the thread dumps and I wonder if you have an idea how to investigate those issues.
Suspicious (to me) is that there is a thread in this state:
"Worker-343" prio=6 tid=0x000000002d791800 nid=0x19cc runnable [0x0000000039dbf000] java.lang.Thread.State: RUNNABLE at org.eclipse.core.internal.jobs.InternalJob.addLast(InternalJob.java:171) at org.eclipse.core.internal.jobs.JobManager.nextJob(JobManager.java:1025) - locked <0x00000005f0191fb8> (a java.lang.Object) at org.eclipse.core.internal.jobs.JobManager.startJob(JobManager.java:1519) at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:221) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51)
Locked ownable synchronizers: - None
While other threads are blocked because of this lock (for example the main UI thread):
"main" prio=6 tid=0x0000000002bcd800 nid=0x2284 waiting for monitor entry [0x000000000012e000] java.lang.Thread.State: BLOCKED (on object monitor) at org.eclipse.core.internal.jobs.JobManager.doSchedule(JobManager.java:532) - waiting to lock <0x00000005f0191fb8> (a java.lang.Object) at org.eclipse.core.internal.jobs.JobManager.schedule(JobManager.java:1161) at org.eclipse.core.internal.jobs.InternalJob.schedule(InternalJob.java:430) at org.eclipse.core.runtime.jobs.Job.schedule(Job.java:500) at org.eclipse.ui.internal.navigator.actions.LinkEditorAction.activateEditor(LinkEditorAction.java:225)
However, I have no idea how to find out that is really going on here. I there a good way to analyze this?
Thanks a lot for your help! -Martin
_______________________________________________ platform-core-dev mailing list platform-core-dev@xxxxxxxxxxx To change your delivery options, retrieve your password, or unsubscribe from this list, visit https://dev.eclipse.org/mailman/listinfo/platform-core-dev
|