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.

Bug 65543 - Deadlock between FolderRecognizer and setModuleLayers
Summary: Deadlock between FolderRecognizer and setModuleLayers
Status: VERIFIED FIXED
Alias: None
Product: platform
Classification: Unclassified
Component: Module System (show other bugs)
Version: 5.x
Hardware: All All
: P1 blocker (vote)
Assignee: Jaroslav Tulach
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-09-30 16:16 UTC by Jaroslav Tulach
Modified: 2008-12-23 08:42 UTC (History)
2 users (show)

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments
Thread dump (26.65 KB, text/plain)
2005-09-30 16:16 UTC, Jaroslav Tulach
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jaroslav Tulach 2005-09-30 16:16:23 UTC
There is a deadlock that prevents commit validation to succeed.
Comment 1 Jaroslav Tulach 2005-09-30 16:16:55 UTC
Created attachment 25373 [details]
Thread dump
Comment 2 Jaroslav Tulach 2005-09-30 16:31:51 UTC
The suspected problemmaker is XML module. Inside of its constructor it uses 
lookup to find some registered factory. It would be better not to use the 
lookup in DataObject's constructor. For example by using CookieSet.Factory... 
 
However I'll check if there is something I could do in the core code itself. 
There is a chance I could detect the situation and exit cleanly. 
 
"Default RequestProcessor" daemon prio=1 tid=0x08575ad8 nid=0x2aab in  
at java.lang.Object.wait(Native Method) 
  waiting on <0xa91b7ad0> (a org.openide.util.RequestProcessor$Task) 
at java.lang.Object.wait(Object.java:429) 
at org.openide.util.Task.waitFinished(Task.java:99) 
- locked <0xa91b7ad0> (a org.openide.util.RequestProcessor$Task) 
at 
org.openide.util.RequestProcessor$Task.waitFinished(RequestProcessor.java:629) 
at org.openide.loaders.FolderInstance.waitFinished(FolderInstance.java:285) 
at org.openide.loaders.FolderInstance.instanceFinished(FolderInstance) 
at org.openide.loaders.FolderLookup$ProxyLkp.beforeLookup(FolderLookup) 
at org.openide.util.lookup.ProxyLookup.lookup(ProxyLookup.java:175) 
at org.openide.util.lookup.ProxyLookup.lookup(ProxyLookup.java:180) 
org.nb.mds.xml.core.text.TextEditorSupport.findEditorSupportFactory(TES.java:663) 
at org.netbeans.modules.xml.core.XMLDataObject.<init>(XMLDataObject.java:79) 
at org.nb.mds.xml.core.XMLDataLoader.createMultiObject(XMLDataLoader.java:164) 
at org.loaders.MultiFileLoader.handleFindDataObject(MultiFileLoader.java:77) 
at org.loaders.DataObjectPool.handleFindDataObject(DataObjectPool.java:111) 
at org.openide.loaders.DataLoader.findDataObject(DataLoader.java:362) 
at org.openide.loaders.DataLoaderPool.findDataObject(DataLoaderPool.java:402) 
at org.openide.loaders.DataLoaderPool.findDataObject(DataLoaderPool.java:362) 
at org.openide.loaders.DataObject.find(DataObject.java:459) 
at org.openide.loaders.FolderList.fileChanged(FolderList.java:392) 
at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source) 
at sun.refngMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:324) 
at org.WeakListenerImpl$ProxyListener.invoke(WeakListenerImpl.java:410) 
at $Proxy1.fileChanged(Unknown Source) 
at org.openide.filesystems.FCLSupport.dispatchEvent(FCLSupport.java:82) 
at org.openide.filesystems.FileObject$ED.dispatch(FileObject.java:811) 
at org.filesystems.EventControl.invokeDispatchers(EventControl.java:179) 
at org.filesystems.EventControl.exitAtomicAction(EventControl.java:153) 
at org.openide.filesystems.EventControl.runAtomicAction(EventControl.java:98) 
at org.openide.filesystems.FileSystem.runAtomicAction(FileSystem.java:450) 
at nb.core.startup.layers.ModuleLayeredFileSystem.setURLs(ModuleLayere:241) 
at netbeans.core.startup.layers.ModuleLayeredFileSystem.addURLs(Mod.java:314) 
at org.netbeans.core.startup.NbInstaller.loadLayers(NbInstaller.java:541) 
at org.netbeans.core.startup.NbInstaller.load(NbInstaller.java:233) 
at org.netbeans.ModuleManager.enable(ModuleManager.java:897) 
at org.autoupdate.catalog.ModuleBean$AllModulesBean.doEnable(ModuleBean:732) 
at org.autoupdate.catalog.ModuleBean$AllModulesBean$Updater.run(:561) 
at org.openide.util.Mutex.writeAccess(Mutex.java:352) 
at org.autoupdate.catalog.ModuleBean$AllModulesBean$Updater.run(:490) 
at org.openide.util.Task.run(Task.java:207) 
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:469) 
at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:870) 
 
Comment 3 Jaroslav Tulach 2005-09-30 18:35:01 UTC
"#65543: Preventing deadlock in FolderLookup by not waiting for the  
computation in folder recognizer if calledfrom inside a DataObject constructor   
 
However it still may be reasonable to fix the XMLDataObject to use something 
more lazy...  
  
cvs: /usr/lib/libkrb5.so.3: no version information available (required by cvs)  
Checking in loaders/src/org/openide/loaders/DataObjectPool.java;  
/cvs/openide/loaders/src/org/openide/loaders/DataObjectPool.java,v  <--   
DataObjectPool.java  
new revision: 1.30; previous revision: 1.29  
done  
Checking in loaders/src/org/openide/loaders/FolderLookup.java;  
/cvs/openide/loaders/src/org/openide/loaders/FolderLookup.java,v  <--   
FolderLookup.java  
new revision: 1.8; previous revision: 1.7  
done  
RCS  
file: /cvs/openide/loaders/test/unit/src/org/openide/loaders/CanYouQueryFolderLookupFromHandleFindTest.java,v  
done  
Checking in  
loaders/test/unit/src/org/openide/loaders/CanYouQueryFolderLookupFromHandleFindTest.java;  
/cvs/openide/loaders/test/unit/src/org/openide/loaders/CanYouQueryFolderLookupFromHandleFindTest.java,v   
<--  CanYouQueryFolderLookupFromHandleFindTest.java  
initial revision: 1.1  
  
Comment 4 Jaromir Uhrik 2006-01-16 15:44:17 UTC
Marking this issue as VERIFIED since the issue reporter == issue owner.