Bug 228006 [Markers] Marker generation should not run on shutdown
I20080415-1646 Sorry, no steps to reproduce, but I was shutting down eclipse and got this NPE: !ENTRY org.eclipse.core.jobs 4 2 2008-04-21 15:48:30.821 !MESSAGE An internal error occurred during: "Process resource updates". !STACK 0 java.lang.NullPointerException at org.eclipse.core.internal.resources.Marker.getInfo(Marker.java:179) at org.eclipse.core.internal.resources.Marker.getType(Marker.java:193) at org.eclipse.ui.views.markers.internal.MarkerGroup$GroupMarkerField.compare(MarkerGroup.java:311) at org.eclipse.ui.internal.views.markers.MarkerComparator.compare(MarkerComparator.java:88) at java.util.Arrays.mergeSort(Arrays.java:1307) at java.util.Arrays.mergeSort(Arrays.java:1296) at java.util.Arrays.mergeSort(Arrays.java:1295) at java.util.Arrays.mergeSort(Arrays.java:1295) at java.util.Arrays.mergeSort(Arrays.java:1295) at java.util.Arrays.mergeSort(Arrays.java:1296) at java.util.Arrays.mergeSort(Arrays.java:1295) at java.util.Arrays.mergeSort(Arrays.java:1295) at java.util.Arrays.mergeSort(Arrays.java:1295) at java.util.Arrays.mergeSort(Arrays.java:1296) at java.util.Arrays.mergeSort(Arrays.java:1296) at java.util.Arrays.mergeSort(Arrays.java:1295) at java.util.Arrays.mergeSort(Arrays.java:1296) at java.util.Arrays.mergeSort(Arrays.java:1296) at java.util.Arrays.mergeSort(Arrays.java:1296) at java.util.Arrays.sort(Arrays.java:1223) at org.eclipse.ui.internal.views.markers.CachedMarkerBuilder.sortAndMakeCategories(CachedMarkerBuilder.java:1107) at org.eclipse.ui.internal.views.markers.CachedMarkerBuilder.buildAllMarkers(CachedMarkerBuilder.java:234) at org.eclipse.ui.internal.views.markers.CachedMarkerBuilder$1.run(CachedMarkerBuilder.java:351) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) I have a workspace with 135129 errors (yeah!) and I think the markers view was still populating itself (which seams to take forever) during the shutdown.
bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/ExtendedMarkersView.java
* @param markerItem
	 * @param allMarkers
	 *            {@link Collection} of {@link IMarker}
	 */
	private void addMarkers(MarkerSupportItem markerItem, Collection allMarkers) {
		if (markerItem.getMarker() != null)
			allMarkers.add(markerItem.getMarker());
		MarkerSupportItem[] children = markerItem.getChildren();
		for (int i = 0; i < children.length; i++) {
			addMarkers(children[i], allMarkers);
		}
	}
	/**
	 * Create the columns for the receiver.
	 * 
	 * @param currentColumns
	 *            the columns to refresh
	 */
	private void createColumns(TreeColumn[] currentColumns) {
		Tree tree = viewer.getTree();
		TableLayout layout = new TableLayout();
		MarkerField[] fields = builder.getVisibleFields();
		IMemento columnWidths = null;
		if (memento != null)
			columnWidths = memento.getChild(TAG_COLUMN_WIDTHS);
		for (int i = 0; i < fields.length; i++) {
			MarkerField markerField = fields[i];
			TreeViewerColumn column;
			if (i < currentColumns.length)
				column = new TreeViewerColumn(viewer, currentColumns[i]);