Bug 128644 [Markers] ArrayIndexOutOfBoundsException while queuing viewer updates
Build 3.2m5, multiple windows, using categorization in problem view. Occasionally when incrementally building, I am seeing a dialog popup and telling about an error while queuing viewer updates, with following entry in the .log. !ENTRY org.eclipse.ui 4 4 2006-02-20 15:22:18.027 !MESSAGE Unhandled event loop exception !ENTRY org.eclipse.ui 4 0 2006-02-20 15:22:18.027 !MESSAGE Failed to execute runnable (java.lang.ArrayIndexOutOfBoundsException) !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.ArrayIndexOutOfBoundsException) at org.eclipse.swt.SWT.error(SWT.java:3349) at org.eclipse.swt.SWT.error(SWT.java:3272) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:126) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3264) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2910) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1899) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1863) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:417) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:106) at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:99) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:374) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:169) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.eclipse.core.launcher.Main.invokeFramework(Main.java:338) at org.eclipse.core.launcher.Main.basicRun(Main.java:282) at org.eclipse.core.launcher.Main.run(Main.java:977) at org.eclipse.core.launcher.Main.main(Main.java:952) Caused by: java.lang.ArrayIndexOutOfBoundsException at java.lang.System.arraycopy(Native Method) at org.eclipse.ui.views.markers.internal.MarkerAdapter$MarkerCategory.getChildren(MarkerAdapter.java:76) at org.eclipse.ui.views.markers.internal.MarkerTreeContentProvider.hasChildren(MarkerTreeContentProvider.java:67) at org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(AbstractTreeViewer.java:1787) at org.eclipse.jface.viewers.TreeViewer.isExpandable(TreeViewer.java:807) at org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(AbstractTreeViewer.java:1810) at org.eclipse.jface.viewers.AbstractTreeViewer.updatePlus(AbstractTreeViewer.java:2379) at org.eclipse.jface.viewers.AbstractTreeViewer.updateChildren(AbstractTreeViewer.java:2315) at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:1563) at org.eclipse.jface.viewers.TreeViewer.internalRefreshStruct(TreeViewer.java:912) at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1540) at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1495) at org.eclipse.jface.viewers.StructuredViewer$8.run(StructuredViewer.java:1351) at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1261) at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1349) at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1306) at org.eclipse.ui.views.markers.internal.MarkerView$UpdateJob.runInUIThread(MarkerView.java:264) at org.eclipse.ui.progress.UIJob$1.run(UIJob.java:93) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:123) ... 20 more Mon Feb 20 15:22:18 CET 2006 - [Worker-28] Build requested, needsBuild: false state: 4 delay: 100
bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/markers/internal/MarkerAdapter.java
}
			monitor.subTask(MarkerMessages.MarkerView_queueing_updates);
			if (isShowingHierarchy()) {
				categories = buildHierarchy(lastMarkers, 0, lastMarkers
						.getSize() - 1, 0);
			}
			if (monitor.isCanceled())
				return;
			monitor.done();
		} finally {
			building = false;
		}
	}
	/**
	 * Return whether or not a hierarchy is showing.
	 * 
	 * @return boolean
	 */
	private boolean isShowingHierarchy() {
		ViewerSorter sorter = view.getViewer().getSorter();
		if (sorter instanceof CategorySorter)
			return ((CategorySorter) sorter).getCategoryField() != null;
		return false;
	}
	/**
	 * Break the marker up into categories
	 * 
	 * @param markers
	 * @param start
	 *            the start index in the markers