This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.
I was testing JDK 1.8 and I switched from text to graphical view of a JPanel and NetBeans froze Product Version = NetBeans IDE 7.4 (Build 201310111528) Operating System = Windows 7 version 6.1 running on amd64 Java; VM; Vendor = 1.7.0_51 Runtime = Java HotSpot(TM) 64-Bit Server VM 24.51-b03
Created attachment 145666 [details] IDE log
Attached thread dump
Created attachment 145667 [details] The threaddump
BTW: NB 7.4 is not supported to run on JDK 8.0
The deadlock is: "AWT-EventQueue-0" #22 prio=6 os_prio=0 tid=0x00000000259eb800 nid=0x1bc0 in Object.wait() [0x000000002ce9d000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:502) at org.openide.util.Mutex$QueueCell.sleep(Mutex.java:1628) - locked <0x00000007482cb700> (a org.openide.util.Mutex$QueueCell) at org.openide.util.Mutex.enterImpl(Mutex.java:734) at org.openide.util.Mutex.enter(Mutex.java:641) at org.openide.util.Mutex.readEnter(Mutex.java:624) at org.openide.util.Mutex.readAccess(Mutex.java:334) at org.netbeans.api.project.ProjectManager.findProject(ProjectManager.java:235) at org.netbeans.modules.projectapi.SimpleFileOwnerQueryImplementation.getOwner(SimpleFileOwnerQueryImplementation.java:129) at org.netbeans.api.project.FileOwnerQuery.getOwner(FileOwnerQuery.java:102) at org.netbeans.modules.form.project.ClassPathUtils.getFormClassLoader(ClassPathUtils.java:136) at org.netbeans.modules.form.project.ClassPathUtils.loadClass(ClassPathUtils.java:114) at org.netbeans.modules.form.FormUtils.loadClass(FormUtils.java:1521) at org.netbeans.modules.form.PersistenceObjectRegistry.loadClass(PersistenceObjectRegistry.java:98) at org.netbeans.modules.form.GandalfPersistenceManager.getClassFromString(GandalfPersistenceManager.java:5724) at org.netbeans.modules.form.GandalfPersistenceManager.loadAuxValues(GandalfPersistenceManager.java:2991) at org.netbeans.modules.form.GandalfPersistenceManager.loadComponent(GandalfPersistenceManager.java:875) at org.netbeans.modules.form.GandalfPersistenceManager.restoreComponent(GandalfPersistenceManager.java:824) at org.netbeans.modules.form.GandalfPersistenceManager.loadComponent(GandalfPersistenceManager.java:968) at org.netbeans.modules.form.GandalfPersistenceManager.restoreComponent(GandalfPersistenceManager.java:824) at org.netbeans.modules.form.GandalfPersistenceManager.loadComponent(GandalfPersistenceManager.java:968) at org.netbeans.modules.form.GandalfPersistenceManager.loadForm(GandalfPersistenceManager.java:503) at org.netbeans.modules.form.GandalfPersistenceManager.loadForm(GandalfPersistenceManager.java:283) - locked <0x0000000662431e00> (a org.netbeans.modules.form.GandalfPersistenceManager) at org.netbeans.modules.form.FormEditor$2.run(FormEditor.java:352) at org.netbeans.modules.form.FormLAF$2.run(FormLAF.java:293) - locked <0x0000000640a5d740> (a javax.swing.MultiUIDefaults) - locked <0x000000064139d518> (a java.lang.Class for java.beans.Introspector) at org.openide.util.Mutex.doEventAccess(Mutex.java:1368) at org.openide.util.Mutex.readAccess(Mutex.java:327) at org.netbeans.modules.form.FormLAF.executeWithLookAndFeel(FormLAF.java:276) at org.netbeans.modules.form.FormEditor.loadFormData(FormEditor.java:349) at org.netbeans.modules.nbform.FormEditorSupport.loadOpeningForm(FormEditorSupport.java:467) at org.netbeans.modules.nbform.FormDesignerTC.loadForm(FormDesignerTC.java:279) at org.netbeans.modules.nbform.FormDesignerTC.access$300(FormDesignerTC.java:87) at org.netbeans.modules.nbform.FormDesignerTC$PreLoadTask$1.run(FormDesignerTC.java:268) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744) at java.awt.EventQueue.access$400(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:697) at java.awt.EventQueue$3.run(EventQueue.java:691) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) at java.awt.EventQueue.dispatchEvent(EventQueue.java:714) at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) "org.netbeans.modules.project.ui.OpenProjectList" #349 daemon prio=1 os_prio=-2 tid=0x000000002f985000 nid=0x13fc waiting for monitor entry [0x0000000047d4e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.util.Hashtable.get(Hashtable.java:362) - waiting to lock <0x0000000640a5d740> (a javax.swing.MultiUIDefaults) at javax.swing.UIDefaults.getFromHashtable(UIDefaults.java:175) at javax.swing.UIDefaults.get(UIDefaults.java:163) at javax.swing.MultiUIDefaults.get(MultiUIDefaults.java:58) at javax.swing.UIManager.get(UIManager.java:955) at org.openide.util.ImageUtilities.getImageIconFilter(ImageUtilities.java:181) at org.openide.util.ImageUtilities.loadImageIcon(ImageUtilities.java:172) at org.netbeans.modules.project.ant.AntBasedGenericType.getIcon(AntBasedGenericType.java:94) at org.netbeans.modules.project.ant.AntBasedProjectFactorySingleton.isProject2(AntBasedProjectFactorySingleton.java:205) at org.netbeans.api.project.ProjectManager.checkForProject(ProjectManager.java:524) at org.netbeans.api.project.ProjectManager.access$600(ProjectManager.java:86) at org.netbeans.api.project.ProjectManager$3.run(ProjectManager.java:477) - locked <0x0000000640f8ab48> (a java.util.WeakHashMap) at org.netbeans.api.project.ProjectManager$3.run(ProjectManager.java:451) at org.openide.util.Mutex.readAccess(Mutex.java:295) at org.netbeans.api.project.ProjectManager.isProject2(ProjectManager.java:451) at org.netbeans.api.project.ProjectManager.isProject2(ProjectManager.java:435) at org.netbeans.modules.project.ui.OpenProjectList$RecentProjectList$3$1.run(OpenProjectList.java:1579) at org.openide.util.Mutex.writeAccess(Mutex.java:479) at org.netbeans.modules.project.ui.OpenProjectList$RecentProjectList$3.run(OpenProjectList.java:1565) at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1432) at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2042)
Or at least I hope it is the case (that both thread go for the same project manager lock). Form loading runs under MultiUIDefaults lock, project list opening under ProjectManager lock. During the operation both ask for the other lock. Not sure how this could be fixed. Maybe if form could take the ProjectManager lock first and keep it during all the loading. But I'm not sure if it is accessible.
Looks like this can happen only with project that has an external source root and is still being opened when the GUI form is loaded (the result of ProjectManager.findProject is cached for later calls of file owner query).
This seems to be actually fixed already while ago in OpenProjectList: d772ac562107