Bug 296822 NullProgressMonitor is not thread safe for expected usage
NullProgressMonitor.setCanceled and isCanceled access the cancelled field, but there's no synchronization. The expected use is that setCanceled is called from a thread other than the one doing the work, which polls isCanceled(), so this needs to be thread safe. Could either make these two methods synchronized or make the field volatile. Should check other progress monitor implementations too.
bundles/org.eclipse.jface/src/org/eclipse/jface/action/StatusLine.java
/**
	 * @see IProgressMonitor#internalWorked(double)
	 */
	public void internalWorked(double work) {
		if (!fProgressIsVisible) {
			if (System.currentTimeMillis() - fStartTime > DELAY_PROGRESS) {
				showProgress();
			}
		}
		if (fProgressBar != null) {
			fProgressBar.worked(work);
		}
	}
	/**
	 * Returns true if the user does some UI action to cancel this operation.
	 * (like hitting the Cancel button on the progress dialog). The long running
	 * operation typically polls isCanceled().
	 */
	public boolean isCanceled() {
		return fIsCanceled;
	}
	/**
	 * Returns
	 * <code>true</true> if the ProgressIndication provides UI for canceling
	 * a long running operation.
	 * @return <code>true</true> if the ProgressIndication provides UI for canceling
	 */
	public boolean isCancelEnabled() {
		return fCancelEnabled;
	}