Bug 9296 - Hang on open type during indexing
Summary: Hang on open type during indexing
Status: RESOLVED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 2.0   Edit
Hardware: PC Windows 2000
: P3 normal (vote)
Target Milestone: 2.0 M6   Edit
Assignee: Philipe Mulet CLA
QA Contact:
URL:
Whiteboard:
Keywords:
: 13234 (view as bug list)
Depends on:
Blocks:
 
Reported: 2002-02-07 23:52 EST by Nick Edgar CLA
Modified: 2002-04-25 05:05 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nick Edgar CLA 2002-02-07 23:52:31 EST
Build 20020205 using Team 2.0

- Went to open type
- got progress dialog indicating "110 files to index"
- it hung there
- hit cancel
- got Type Selection / No types available dialog
- tried again
- got the same thing

- tried closing the projects I had been working on
- this had no effect

- I had recently done a synchronize where I released one file (in 
org.eclipse.ui.tests)

- exited and restarted
- tried again
- it indexed over 1000 files, taking 30 secs or so on a fast machine
- the open type dialog came up properly though
Comment 1 Erich Gamma CLA 2002-04-14 10:08:09 EDT
moving to JDT Core for investigation
Comment 2 Philipe Mulet CLA 2002-04-19 04:44:06 EDT
Got a similar one, indexer died in the background due to a crash in the index 
layer (or JIT?. While waiting a ctrl-pause shows that the indexing thread was 
gone.

Full thread dump:

"ModalContext" prio=5 tid=0x12096d90 nid=0x534 waiting on monitor 
[0x15caf000..0x15cafdbc]
        at java.lang.Thread.sleep(Native Method)
        at 
org.eclipse.jdt.internal.core.search.processing.JobManager.performConcurrentJob
(JobManager.java:216)
        at org.eclipse.jdt.core.search.SearchEngine.search
(SearchEngine.java:395)
        at org.eclipse.jdt.core.search.SearchEngine.search
(SearchEngine.java:353)
        at org.eclipse.jdt.internal.ui.search.JavaSearchOperation.execute
(JavaSearchOperation.java:82)
        at org.eclipse.ui.actions.WorkspaceModifyOperation$1.run
(WorkspaceModifyOperation.java:64)
        at org.eclipse.core.internal.resources.Workspace.run
(Workspace.java:1343)
        at org.eclipse.ui.actions.WorkspaceModifyOperation.run
(WorkspaceModifyOperation.java:78)
        at org.eclipse.jface.operation.ModalContext$ModalContextThread.run
(ModalContext.java:98)

"org.eclipse.jface.text.reconciler.MonoReconciler" daemon prio=2 tid=0x1135fe88 
nid=0x644 waiting on monitor [0x15c6f000..0x15c6fdbc]
        at java.lang.Object.wait(Native Method)
        at 
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run
(AbstractReconciler.java:128)

"org.eclipse.jface.text.reconciler.MonoReconciler" daemon prio=2 tid=0x113629e8 
nid=0x4e8 waiting on monitor [0x15a5f000..0x15a5fdbc]
        at java.lang.Object.wait(Native Method)
        at 
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run
(AbstractReconciler.java:128)

"org.eclipse.jface.text.reconciler.MonoReconciler" daemon prio=2 tid=0x13b5ed00 
nid=0x1e4 waiting on monitor [0x157af000..0x157afdbc]
        at java.lang.Object.wait(Native Method)
        at 
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run
(AbstractReconciler.java:128)

"org.eclipse.jface.text.reconciler.MonoReconciler" daemon prio=2 tid=0x12017740 
nid=0x500 runnable [0x1576f000..0x1576fdbc]
        at java.lang.Object.wait(Native Method)
        at 
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run
(AbstractReconciler.java:128)

"Evaluation thread" prio=5 tid=0x13b4e940 nid=0x648 waiting on monitor 
[0x1498f000..0x1498fdbc]
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:420)
        at 
org.eclipse.jdt.internal.debug.eval.ast.engine.ASTEvaluationEngine$1.run
(ASTEvaluationEngine.java:178)
        at java.lang.Thread.run(Thread.java:484)

"Signal Dispatcher" daemon prio=10 tid=0x803538 nid=0x408 waiting on monitor 
[0..0]

"Finalizer" daemon prio=9 tid=0x819d18 nid=0x4fc waiting on monitor 
[0x114ef000..0x114efdbc]
        at java.lang.Object.wait(Native Method)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:108)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:123)
        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:162)

"Reference Handler" daemon prio=10 tid=0x11230290 nid=0x558 waiting on monitor 
[0x114af000..0x114afdbc]
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:420)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:110)

"main" prio=5 tid=0x2345f8 nid=0x124 runnable [0x6f000..0x6fc34]
        at org.eclipse.swt.internal.win32.OS.WaitMessage(Native Method)
        at org.eclipse.swt.widgets.Display.sleep(Display.java:1621)
        at org.eclipse.jface.operation.ModalContext$ModalContextThread.block
(ModalContext.java:134)
        at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:258)
        at org.eclipse.jface.dialogs.ProgressMonitorDialog.run
(ProgressMonitorDialog.java:335)
        at org.eclipse.jdt.internal.ui.search.ElementSearchAction.run
(ElementSearchAction.java:77)
        at org.eclipse.jdt.internal.ui.search.JavaElementAction.run
(JavaElementAction.java:86)
        at org.eclipse.jdt.internal.ui.search.WorkingSetAction.run
(WorkingSetAction.java:21)
        at org.eclipse.jface.action.Action.runWithEvent(Action.java:590)
        at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection
(ActionContributionItem.java:407)
        at org.eclipse.jface.action.ActionContributionItem.handleWidgetEvent
(ActionContributionItem.java:361)
        at org.eclipse.jface.action.ActionContributionItem.access$0
(ActionContributionItem.java:352)
        at 
org.eclipse.jface.action.ActionContributionItem$ActionListener.handleEvent
(ActionContributionItem.java:47)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:75)
        at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:637)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:1412)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1208)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:836)
        at org.eclipse.ui.internal.Workbench.run(Workbench.java:819)
        at org.eclipse.core.internal.boot.InternalBootLoader.run
(InternalBootLoader.java:777)
        at org.eclipse.core.boot.BootLoader.run(BootLoader.java:319)
        at java.lang.reflect.Method.invoke(Native Method)
        at org.eclipse.core.launcher.Main.basicRun(Main.java:190)
        at org.eclipse.core.launcher.Main.run(Main.java:549)
        at org.eclipse.core.launcher.UIMain.main(UIMain.java:52)

"VM Thread" prio=5 tid=0x805260 nid=0x580 runnable

"VM Periodic Task Thread" prio=10 tid=0x819190 nid=0x3d4 waiting on monitor
"Suspend Checker Thread" prio=10 tid=0x8183c0 nid=0x128 runnable
Comment 3 Philipe Mulet CLA 2002-04-25 05:03:58 EDT
We have identified a possible collision in index writing, when needing to save 
changes, the write lock is exited, and the read lock is taken. If in between 
someone does acquire the write lock again (background indexer), then the read 
job will trigger a save (merge) action which could be fatal if multiple threads 
are doing the same.

The odd it occurs is fairly very low, but it is feasible.

Fixed, also added some crash recovery on the indexer (will restart) in case 
some badness occurs. Thus this problem should be fixed.
Comment 4 Philipe Mulet CLA 2002-04-25 05:05:37 EDT
*** Bug 13234 has been marked as a duplicate of this bug. ***