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 String
	 */
	private String getStatusMessage() {
		String status = MarkerSupportInternalUtilities.EMPTY_STRING;
		int totalCount = builder.getTotalMarkerCount();
		int filteredCount = 0;
		MarkerSupportItem[] categories = builder.getCategories();
		
		if (categories != null && builder.isShowingHierarchy()) {
			int markerLimit = MarkerSupportInternalUtilities.getMarkerLimit();
			for (int i = 0; i < categories.length; i++) {
				filteredCount += markerLimit < 0 ? categories[i]
						.getChildrenCount() : Math.min(categories[i]
						.getChildrenCount(), markerLimit);
			}
		} else {
			filteredCount = MarkerSupportInternalUtilities.getMarkerLimit();
		}
		Integer[] counts = builder.getMarkerCounts();
		
		if (counts[0].intValue() == 0 && counts[1].intValue() == 0) {
			if (filteredCount < 0 || filteredCount >= totalCount) {
				status = NLS.bind(MarkerMessages.filter_itemsMessage,
						new Integer(totalCount));
			} else {
				status = NLS.bind(MarkerMessages.filter_matchedMessage,
						new Integer(filteredCount), new Integer(totalCount));
			}
			return status;