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.
Summary: | Deadlock with NB7.4 + JDK1.8.0 | ||
---|---|---|---|
Product: | guibuilder | Reporter: | scanti <scanti> |
Component: | Code | Assignee: | issues@guibuilder <issues> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | P3 | ||
Version: | 7.4 | ||
Hardware: | PC | ||
OS: | Windows 7 | ||
Issue Type: | DEFECT | Exception Reporter: | |
Attachments: |
IDE log
The threaddump |
Description
scanti
2014-02-28 14:36:28 UTC
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 |