Buggy code:
private int progressCount = - 1 ; private WorkbenchWindow [ ] createdWindows ; private ListenerList workbenchListeners = new ListenerList ( ListenerList . IDENTITY ) ; private Workbench ( Display display , WorkbenchAdvisor advisor ) { } public static final Workbench getInstance ( ) { } public static final int createAndRunWorkbench ( final Display display , final WorkbenchAdvisor advisor ) { } public static Display createDisplay ( ) { } private void createSplashWrapper ( ) { } private Image loadImage ( String splashLoc ) { } private static AbstractSplashHandler getSplash ( ) { } public static WorkbenchTestable getWorkbenchTestable ( ) { } public void addWorkbenchListener ( IWorkbenchListener listener ) { } public void removeWorkbenchListener ( IWorkbenchListener listener ) { } boolean firePreShutdown ( final boolean forced ) { } void firePostShutdown ( ) { } public void addWindowListener ( IWindowListener l ) { } public void removeWindowListener ( IWindowListener l ) { } protected void fireWindowOpened ( final IWorkbenchWindow window ) { } protected void fireWindowClosed ( final IWorkbenchWindow window ) { } protected void fireWindowActivated ( final IWorkbenchWindow window ) { } protected void fireWindowDeactivated ( final IWorkbenchWindow window ) { } private boolean busyClose ( final boolean force ) { } public boolean saveAllEditors ( boolean confirm ) { } private IWorkbenchWindow busyOpenWorkbenchWindow ( final String perspID , final IAdaptable input ) throws WorkbenchException { } public boolean close ( ) { } boolean close ( int returnCode , final boolean force ) { } public IWorkbenchWindow getActiveWorkbenchWindow ( ) { } public EditorHistory getEditorHistory ( ) { } public IEditorRegistry getEditorRegistry ( ) { } private int getNewWindowNumber ( ) { } public IWorkbenchOperationSupport getOperationSupport ( ) { } public IPerspectiveRegistry getPerspectiveRegistry ( ) { } public PreferenceManager getPreferenceManager ( ) { } public IPreferenceStore getPreferenceStore ( ) { } public ISharedImages getSharedImages ( ) { } WindowManager getWindowManager ( ) { } private File getWorkbenchStateFile ( ) { } public int getWorkbenchWindowCount ( ) { } public IWorkbenchWindow [ ] getWorkbenchWindows ( ) { } public IWorkingSetManager getWorkingSetManager ( ) { } public ILocalWorkingSetManager createLocalWorkingSetManager ( ) { } private boolean init ( ) { if ( WorkbenchPlugin . getDefault ( ) . isDebugging ( ) ) { WorkbenchPlugin . DEBUG = true ; ModalContext . setDebugMode ( true ) ; } JFaceUtil . initializeJFacePreferences ( ) ; windowManager = new WindowManager ( ) ; IIntroRegistry introRegistry = WorkbenchPlugin . getDefault ( ) . getIntroRegistry ( ) ; if ( ( introRegistry . getIntroCount ( ) ) > 0 ) { IProduct product = Platform . getProduct ( ) ; if ( product != null ) { introDescriptor = ( ( IntroDescriptor ) ( introRegistry . getIntroForProduct ( product . getId ( ) ) ) ) ; } } final EvaluationService evaluationService = new EvaluationService ( ) ; StartupThreading . runWithoutExceptions ( new StartupRunnable ( ) { public void runWithException ( ) { serviceLocator . registerService ( IEvaluationService . class , evaluationService ) ; } } ) ; workbenchActivitySupport = new WorkbenchActivitySupport ( ) ; activityHelper = ActivityPersistanceHelper . getInstance ( ) ; StartupThreading . runWithoutExceptions ( new StartupRunnable ( ) { public void runWithException ( ) { WorkbenchImages . getImageRegistry ( ) ; } } ) ; initializeDefaultServices ( ) ; initializeFonts ( ) ; initializeColors ( ) ; initializeApplicationColors ( ) ; StartupThreading . runWithoutExceptions ( new StartupRunnable ( ) { public void runWithException ( ) { advisor . internalBasicInitialize ( getWorkbenchConfigurer ( ) ) ; } } ) ; boolean useColorIcons = PrefUtil . getInternalPreferenceStore ( ) . getBoolean ( COLOR_ICONS ) ; ActionContributionItem . setUseColorIconsInToolbars ( useColorIcons ) ; initializeSingleClickOption ( ) ; initializeWorkbenchImages ( ) ; StartupThreading . runWithoutExceptions ( new StartupRunnable ( ) { public void runWithException ( ) { ( ( GrabFocus ) ( Tweaklets . get ( KEY ) ) ) . init ( getDisplay ( ) ) ; } } ) ; try { UIStats . start ( RESTORE_WORKBENCH , "Workbench" ) ; final boolean [ ] bail = new boolean [ 1 ] ; StartupThreading . runWithoutExceptions ( new StartupRunnable ( ) { public void runWithException ( ) throws Throwable { advisor . preStartup ( ) ; <START_BUG> if ( ! ( advisor . openWindows ( ) ) ) { <END_BUG> bail [ 0 ] = true ; } } } ) ; if ( bail [ 0 ] ) return false ; } finally { UIStats . end ( RESTORE_WORKBENCH , this , "Workbench" ) ; } forceOpenPerspective ( ) ; return true ; } private void initializeWorkbenchImages ( ) { } private void initializeCommandResolver ( ) { } private void initializeApplicationColors ( ) { } private void initializeSingleClickOption ( ) { } private void initializeFonts ( ) { } private static void initializeImages ( ) { } private void uninitializeImages ( ) { } private void initializeColors ( ) { } public boolean isClosing ( ) { } private final void initializeDefaultServices ( ) { } public boolean isStarting ( ) { } private WorkbenchWindow newWorkbenchWindow ( ) { } private void forceOpenPerspective ( ) { } void openFirstTimeWindow ( ) { } private void runStartupWithProgress ( final int expectedProgressCount , final Runnable runnable ) { } private void doOpenFirstTimeWindow ( ) { } IStatus restoreState ( ) { } public IWorkbenchWindow openWorkbenchWindow ( IAdaptable input ) throws WorkbenchException { } public IWorkbenchWindow openWorkbenchWindow ( final String perspID , final IAdaptable input ) throws WorkbenchException { } IWorkbenchWindow restoreWorkbenchWindow ( IMemento memento ) throws WorkbenchException { } private XMLMemento recordWorkbenchState ( ) { } public boolean restart ( ) { } private IStatus restoreState ( final IMemento memento ) { } public String [ ] getEarlyActivatedPlugins ( ) { } public String [ ] getDisabledEarlyActivatedPlugins ( ) { } private void startPlugins ( ) { } private int runUI ( ) { } private void runEventLoop ( Window . IExceptionHandler handler , Display display ) { }

Fix:
if ( ( isClosing ( ) ) || ( ! ( advisor . openWindows ( ) ) ) ) {