Bug 58542 Dangerous change to setSystem in MarkersViews
In MarkerView.refresh() there is the line uiJob.setSystem(true); Which may happen after the uiJob has run. As a result it is possible that it is not being used to decrement the count of jobs and the progress monitor can run forever.
bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/markers/internal/TableContentProvider.java
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.SubProgressMonitor;
import org.eclipse.core.runtime.jobs.ILock;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.swt.widgets.Control;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.progress.IWorkbenchSiteProgressService;
import org.eclipse.ui.progress.WorkbenchJob;
/**
 * Provides a threaded content provider for efficiently handling large tables.
 * The owner of this object is responsible for adding and removing the items in the
 * table (by invoking the add, remove, set, and change methods, respectively). However,
 * the changes are buffered and applied to the actual table incrementally
 * using a background thread. This keeps the UI responsive when manipulating very
 * large tables. 
 * 
 * <p>
 * Other objects should set the contents of the table by manipulating
 * this object rather than manipulating the table itself. Threading issues
 * are encapsulated internally.
 * </p>
 *
 */
class TableContentProvider implements IStructuredContentProvider {