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
}
		/**
		 * Return whether or not the entry is equivalent to the cached state.
		 * 
		 * @param item
		 * @return boolean <code>true</code> if they are equivalent
		 */
		boolean isEquivalentTo(MarkerItem item) {
			MarkerField[] fields = builder.getVisibleFields();
			if (cachedValues.length != fields.length)
				return false;
			for (int i = 0; i < fields.length; i++) {
				if (cachedValues[i] == fields[i].getValue(item))
					continue;
				return false;
			}
			return true;
		}
	}
	private static int instanceCount = 1;
	private static final String TAG_GENERATOR = "markerContentGenerator"; 
	private static final String TAG_HORIZONTAL_POSITION = "horizontalPosition"; 
	private static final String TAG_VERTICAL_POSITION = "verticalPosition"; 
	private static final String MARKER_FIELD = "MARKER_FIELD"; 
	private static final String TAG_EXPANDED = "expanded"; 
	private static final String TAG_CATEGORY = "category"; 
	private static final String TAG_PART_NAME = "partName"; 
	private static final String TAG_COLUMN_WIDTHS = "columnWidths"; 
	static {
		Platform.getAdapterManager().registerAdapters(new IAdapterFactory() {