Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 481457

Summary: OS freezes when debugger stops at breakpoint
Product: [Eclipse Project] JDT Reporter: Karen Hagberg <khagberg>
Component: DebugAssignee: JDT-Debug-Inbox <jdt-debug-inbox>
Status: CLOSED WONTFIX QA Contact:
Severity: major    
Priority: P3 CC: khagberg, sarika.sinha
Version: 4.5.1   
Target Milestone: ---   
Hardware: PC   
OS: Windows 10   
Whiteboard: stalebug
Attachments:
Description Flags
Eclipse configuration file
none
Portion of Eclipse Error Log none

Description Karen Hagberg CLA 2015-11-04 16:38:06 EST
Created attachment 257745 [details]
Eclipse configuration file

Eclipse causes Windows 7, 8 and 10 to freeze when the debugger stops at a breakpoint. The OS would not respond to mouse or keyboard input like Alt-Tab or Ctrl-Alt-Del, so had to do a hard reboot. Also happened on a Linux machine. Mac seems fine.

This happened when a large file was being opened with an XML parser in a very large proprietary code base. Unfortunately I haven't been able to reproduce this in a small self-contained test case.

See the attached Eclipse log file for: 

java.lang.OutOfMemoryError: unable to create new native thread 

around the time of one freeze. Please note that earlier freezes did not leave any errors in the Eclipse error log or create any Java hs_err_pid*.log files. Also note that the large file opens just fine without any breakpoints set; the freeze only happens when stopping at a breakpoint.

I've also attached the Eclipse configuration details and the file that was being opened when the freeze happened.
Comment 1 Karen Hagberg CLA 2015-11-04 16:45:13 EST
Created attachment 257746 [details]
Portion of Eclipse Error Log
Comment 2 Sarika Sinha CLA 2015-11-05 00:05:46 EST
Can you provide the part of the log which has debug freezing ?

Where is the breakpoint ? in a java file ? if not it needs to be moved to the appropriate component.
Comment 3 Karen Hagberg CLA 2015-11-05 08:49:58 EST
Yes, the breakpoint is set in our Java code. Here is part of the Eclipse error log:

!ENTRY org.eclipse.core.jobs 4 2 2015-11-04 09:46:54.189
!MESSAGE Unhandled error
!STACK 0
java.lang.OutOfMemoryError: unable to create new native thread
        at java.lang.Thread.start0(Native Method)
        at java.lang.Thread.start(Unknown Source)
        at org.eclipse.core.internal.jobs.WorkerPool.jobQueued(WorkerPool.java:148)
        at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:244)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:52)

!ENTRY org.eclipse.ui 4 0 2015-11-04 09:47:35.980
!MESSAGE Unhandled event loop exception
!STACK 0
org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.OutOfMemoryError: unable to create new native thread)
        at org.eclipse.swt.SWT.error(SWT.java:4491)
        at org.eclipse.swt.SWT.error(SWT.java:4406)
        at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:138)
        at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4155)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3772)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1127)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1018)
        at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156)
        at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:654)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:598)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
        at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:139)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:608)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1515)
Caused by: java.lang.OutOfMemoryError: unable to create new native thread
        at java.lang.Thread.start0(Native Method)
        at java.lang.Thread.start(Unknown Source)
        at org.eclipse.jface.text.source.projection.ProjectionSummary$Summarizer.<init>(ProjectionSummary.java:48)
        at org.eclipse.jface.text.source.projection.ProjectionSummary.updateSummaries(ProjectionSummary.java:141)
        at org.eclipse.jface.text.source.projection.ProjectionViewer$AnnotationModelListener.processModelChanged(ProjectionViewer.java:126)
        at org.eclipse.jface.text.source.projection.ProjectionViewer$AnnotationModelListener.modelChanged(ProjectionViewer.java:115)
        at org.eclipse.jface.text.source.AnnotationModel.fireModelChanged(AnnotationModel.java:613)
        at org.eclipse.jface.text.source.AnnotationModel$InternalModelListener.modelChanged(AnnotationModel.java:262)
        at org.eclipse.jface.text.source.AnnotationModel.fireModelChanged(AnnotationModel.java:613)
        at org.eclipse.jface.text.source.AnnotationModel.fireModelChanged(AnnotationModel.java:579)
        at org.eclipse.jface.text.source.AnnotationModel.replaceAnnotations(AnnotationModel.java:423)
        at org.eclipse.jface.text.source.AnnotationModel.replaceAnnotations(AnnotationModel.java:388)
        at org.eclipse.jdt.internal.ui.javaeditor.JavaEditor.removeOccurrenceAnnotations(JavaEditor.java:3483)
        at org.eclipse.jdt.internal.ui.javaeditor.JavaEditor$ActivationListener.windowDeactivated(JavaEditor.java:1277)
        at org.eclipse.ui.internal.Workbench$12.run(Workbench.java:1059)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.ui.internal.Workbench.fireWindowDeactivated(Workbench.java:1056)
        at org.eclipse.ui.internal.WorkbenchWindow$15.shellDeactivated(WorkbenchWindow.java:2295)
        at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:111)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
        at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4362)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1113)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1137)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1118)
        at org.eclipse.swt.widgets.Decorations.WM_ACTIVATE(Decorations.java:1685)
        at org.eclipse.swt.widgets.Shell.WM_ACTIVATE(Shell.java:2193)
        at org.eclipse.swt.widgets.Control.windowProc(Control.java:4673)
        at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:339)
        at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1633)
        at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2117)
        at org.eclipse.swt.widgets.Display.windowProc(Display.java:5050)
        at org.eclipse.swt.internal.win32.OS.BringWindowToTop(Native Method)
        at org.eclipse.swt.widgets.Decorations.bringToTop(Decorations.java:230)
        at org.eclipse.swt.widgets.Shell.open(Shell.java:1244)
        at org.eclipse.jface.window.Window.open(Window.java:799)
        at org.eclipse.ui.internal.statushandlers.InternalDialog.open(InternalDialog.java:334)
        at org.eclipse.ui.internal.statushandlers.WorkbenchStatusDialogManagerImpl.doAddStatusAdapter(WorkbenchStatusDialogManagerImpl.java:272)
        at org.eclipse.ui.internal.statushandlers.WorkbenchStatusDialogManagerImpl.addStatusAdapter(WorkbenchStatusDialogManagerImpl.java:198)
        at org.eclipse.ui.statushandlers.WorkbenchStatusDialogManager.addStatusAdapter(WorkbenchStatusDialogManager.java:158)
        at org.eclipse.ui.statushandlers.WorkbenchErrorHandler.showStatusAdapter(WorkbenchErrorHandler.java:96)
        at org.eclipse.ui.statushandlers.WorkbenchErrorHandler.access$0(WorkbenchErrorHandler.java:89)
        at org.eclipse.ui.statushandlers.WorkbenchErrorHandler$1.run(WorkbenchErrorHandler.java:56)
        at org.eclipse.ui.internal.UILockListener.doPendingWork(UILockListener.java:162)
        at org.eclipse.ui.internal.UISynchronizer$3.run(UISynchronizer.java:154)
        at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
        at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
        ... 23 more
Comment 4 Eclipse Genie CLA 2020-02-20 12:39:20 EST
This bug hasn't had any activity in quite some time. Maybe the problem got resolved, was a duplicate of something else, or became less pressing for some reason - or maybe it's still relevant but just hasn't been looked at yet. As such, we're closing this bug.

If you have further information on the current state of the bug, please add it and reopen this bug. The information can be, for example, that the problem still occurs, that you still want the feature, that more information is needed, or that the bug is (for whatever reason) no longer relevant.

--
The automated Eclipse Genie.