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 196005 - Expanding JAR contents in Files window locks the IDE
Summary: Expanding JAR contents in Files window locks the IDE
Status: RESOLVED WORKSFORME
Alias: None
Product: platform
Classification: Unclassified
Component: Explorer (show other bugs)
Version: 7.0
Hardware: PC Mac OS X
: P3 normal (vote)
Assignee: Jaroslav Tulach
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-02-25 14:47 UTC by emi
Modified: 2011-02-26 22:46 UTC (History)
0 users

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description emi 2011-02-25 14:47:25 UTC
Hy,

My 7.0beta 2 IDE locked the other day while I was trying to view the contents of a 20MB signed JAR inside the 'Files' window.

It seems to me that the JAR file is read / verified inside the AWT thread hence the lockup.

Reporting this to Explorer API since perhaps that long loading should happen in another thread.

See the thread dump bellow:


2011-02-23 15:51:36
Full thread dump Java HotSpot(TM) 64-Bit Server VM (17.1-b03-307 mixed mode):

"RMI TCP Connection(2)-192.168.3.177" daemon prio=9 tid=101c0a800 nid=0x156f96000 runnable [156f95000]
   java.lang.Thread.State: RUNNABLE
	at java.net.SocketInputStream.socketRead0(Native Method)
	at java.net.SocketInputStream.read(SocketInputStream.java:129)
	at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
	at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
	- locked <114fde908> (a java.io.BufferedInputStream)
	at java.io.FilterInputStream.read(FilterInputStream.java:66)
	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:517)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- <115070628> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)

"JMX server connection timeout 114" daemon prio=9 tid=102d01800 nid=0x156997000 in Object.wait() [156996000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <113902d00> (a [I)
	at com.sun.jmx.remote.internal.ServerCommunicatorAdmin$Timeout.run(ServerCommunicatorAdmin.java:150)
	- locked <113902d00> (a [I)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- None

"RMI Scheduler(0)" daemon prio=9 tid=1029b5000 nid=0x1565dc000 waiting on condition [1565db000]
   java.lang.Thread.State: TIMED_WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <114f12920> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:198)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2025)
	at java.util.concurrent.DelayQueue.take(DelayQueue.java:164)
	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:609)
	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:602)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- None

"RMI TCP Connection(1)-192.168.3.177" daemon prio=9 tid=101964800 nid=0x1563d9000 runnable [1563d8000]
   java.lang.Thread.State: RUNNABLE
	at java.net.SocketInputStream.socketRead0(Native Method)
	at java.net.SocketInputStream.read(SocketInputStream.java:129)
	at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
	at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
	- locked <114f0c8d0> (a java.io.BufferedInputStream)
	at java.io.FilterInputStream.read(FilterInputStream.java:66)
	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:517)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- <114f10420> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)

"RMI TCP Accept-0" daemon prio=9 tid=102d11000 nid=0x155cf6000 runnable [155cf5000]
   java.lang.Thread.State: RUNNABLE
	at java.net.PlainSocketImpl.socketAccept(Native Method)
	at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:390)
	- locked <11218cd00> (a java.net.SocksSocketImpl)
	at java.net.ServerSocket.implAccept(ServerSocket.java:453)
	at java.net.ServerSocket.accept(ServerSocket.java:421)
	at sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(LocalRMIServerSocketFactory.java:34)
	at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:369)
	at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:341)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- None

"Attach Listener" daemon prio=9 tid=172840000 nid=0x155a34000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
	- None

"logger-awt" daemon prio=1 tid=10190e000 nid=0x1561d6000 runnable [1561d5000]
   java.lang.Thread.State: RUNNABLE
	at sun.management.ThreadImpl.dumpThreads0(Native Method)
	at sun.management.ThreadImpl.dumpAllThreads(ThreadImpl.java:374)
	at org.netbeans.core.ui.sampler.Sampler$1.run(Sampler.java:153)
	- locked <1120d5d70> (a org.netbeans.core.ui.sampler.SelfSamplerAction$InternalSampler)
	at java.util.TimerThread.mainLoop(Timer.java:512)
	at java.util.TimerThread.run(Timer.java:462)

   Locked ownable synchronizers:
	- None

"Parsing & Indexing Loop (201011152355)" daemon prio=1 tid=101a19000 nid=0x154d9a000 waiting on condition [154d99000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <10d1fa7f0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
	at java.util.concurrent.PriorityBlockingQueue.take(PriorityBlockingQueue.java:220)
	at org.netbeans.modules.parsing.impl.TaskProcessor$CompilationJob.run(TaskProcessor.java:581)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- <10d21de30> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)

"DestroyJavaVM" prio=5 tid=102803000 nid=0x100601000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
	- None

"AWT-EventQueue-1" prio=6 tid=102b75800 nid=0x171c04000 runnable [171c01000]
   java.lang.Thread.State: RUNNABLE
	at java.util.jar.JarFile.initializeVerifier(JarFile.java:322)
	at java.util.jar.JarFile.getInputStream(JarFile.java:388)
	- locked <1120f3258> (a java.util.jar.JarFile)
	at org.openide.filesystems.JarFileSystem.getInputStream4336753(JarFileSystem.java:628)
	at org.openide.filesystems.JarFileSystem.getMemInputStream(JarFileSystem.java:513)
	at org.openide.filesystems.JarFileSystem.inputStream(JarFileSystem.java:593)
	- locked <1120c1260> (a java.lang.Object)
	at org.openide.filesystems.JarFileSystem$Impl.inputStream(JarFileSystem.java:1151)
	at org.openide.filesystems.StreamPool.createInputStream(StreamPool.java:105)
	at org.openide.filesystems.AbstractFileObject.getInputStream(AbstractFileObject.java:215)
	at org.openide.filesystems.MIMESupport$CachedFileObject.getInputStream(MIMESupport.java:406)
	at org.netbeans.modules.openide.filesystems.declmime.MIMEResolverImpl$Type.accept(MIMEResolverImpl.java:1061)
	at org.netbeans.modules.openide.filesystems.declmime.MIMEResolverImpl$Type.access$2900(MIMEResolverImpl.java:727)
	at org.netbeans.modules.openide.filesystems.declmime.MIMEResolverImpl$FileElement.resolve(MIMEResolverImpl.java:687)
	at org.netbeans.modules.openide.filesystems.declmime.MIMEResolverImpl$FileElement.access$800(MIMEResolverImpl.java:658)
	at org.netbeans.modules.openide.filesystems.declmime.MIMEResolverImpl$Impl.findMIMEType(MIMEResolverImpl.java:317)
	at org.openide.filesystems.MIMESupport$CachedFileObject.resolveMIME(MIMESupport.java:375)
	at org.openide.filesystems.MIMESupport$CachedFileObject.getMIMEType(MIMESupport.java:316)
	at org.openide.filesystems.MIMESupport.findMIMEType(MIMESupport.java:137)
	at org.openide.filesystems.FileUtil.getMIMEType(FileUtil.java:1442)
	at org.openide.filesystems.FileObject.getMIMEType(FileObject.java:555)
	at org.openide.filesystems.AbstractFileObject.getMIMEType(AbstractFileObject.java:195)
	at org.openide.loaders.DataLoaderPool.allLoaders(DataLoaderPool.java:332)
	at org.openide.loaders.DataLoaderPool.findDataObject(DataLoaderPool.java:530)
	at org.openide.loaders.DataLoaderPool.findDataObject(DataLoaderPool.java:493)
	at org.openide.loaders.DataObject.find(DataObject.java:510)
	at org.openide.loaders.FolderChildren.createNodes(FolderChildren.java:208)
	at org.openide.loaders.FolderChildren.createNodes(FolderChildren.java:68)
	at org.openide.nodes.Children$Keys$KE.nodes(Children.java:1648)
	at org.openide.nodes.EntrySupport$Lazy$EntryInfo.getNode(EntrySupport.java:1591)
	at org.openide.nodes.EntrySupport$Lazy$EntryInfo.getNode(EntrySupport.java:1557)
	at org.openide.nodes.EntrySupport$Lazy$LazySnapshot.get(EntrySupport.java:1819)
	at org.openide.nodes.EntrySupport$Lazy$LazySnapshot.get(EntrySupport.java:1814)
	at org.openide.nodes.EntrySupport$Lazy$LazySnapshot.get(EntrySupport.java:1802)
	at org.openide.explorer.view.VisualizerChildren.getChildAt(VisualizerChildren.java:119)
	at org.openide.explorer.view.VisualizerNode.getChildAt(VisualizerNode.java:321)
	at javax.swing.tree.DefaultTreeModel.getChild(DefaultTreeModel.java:156)
	at javax.swing.tree.FixedHeightLayoutCache$VisibleFHTreeStateNodeEnumeration.nextElement(FixedHeightLayoutCache.java:1506)
	at javax.swing.tree.FixedHeightLayoutCache$VisibleFHTreeStateNodeEnumeration.nextElement(FixedHeightLayoutCache.java:1461)
	at javax.swing.tree.AbstractLayoutCache.getPreferredWidth(AbstractLayoutCache.java:228)
	at javax.swing.plaf.basic.BasicTreeUI.updateCachedPreferredSize(BasicTreeUI.java:1820)
	at javax.swing.plaf.basic.BasicTreeUI.getPreferredSize(BasicTreeUI.java:1921)
	at javax.swing.plaf.basic.BasicTreeUI.getPreferredSize(BasicTreeUI.java:1909)
	at javax.swing.JComponent.getPreferredSize(JComponent.java:1634)
	at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:769)
	at org.openide.explorer.view.TreeView$ExplorerScrollPaneLayout.layoutContainer(TreeView.java:1761)
	at java.awt.Container.layout(Container.java:1421)
	at java.awt.Container.doLayout(Container.java:1410)
	at java.awt.Container.validateTree(Container.java:1507)
	at java.awt.Container.validate(Container.java:1480)
	- locked <1090fb898> (a java.awt.Component$AWTTreeLock)
	at org.openide.explorer.view.TreeView.access$101(TreeView.java:151)
	at org.openide.explorer.view.TreeView$3.run(TreeView.java:645)
	at org.openide.util.Mutex.readAccess(Mutex.java:365)
	at org.openide.util.Mutex$1R.run(Mutex.java:1307)
	at org.openide.nodes.Children$ProjectManagerDeadlockDetector.execute(Children.java:1907)
	at org.openide.util.Mutex.doWrapperAccess(Mutex.java:1326)
	at org.openide.util.Mutex.readAccess(Mutex.java:354)
	at org.openide.explorer.view.TreeView.validate(TreeView.java:643)
	at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:669)
	at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:124)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:633)
	at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:138)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

   Locked ownable synchronizers:
	- None

"TimerQueue" daemon prio=5 tid=101f8f800 nid=0x16d67c000 in Object.wait() [16d67b000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <1099a45f8> (a javax.swing.TimerQueue)
	at javax.swing.TimerQueue.run(TimerQueue.java:232)
	- locked <1099a45f8> (a javax.swing.TimerQueue)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- None

"Thread-5" daemon prio=5 tid=101e61800 nid=0x171a01000 in Object.wait() [171a00000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <1098207c0> (a java.util.LinkedList)
	at java.lang.Object.wait(Object.java:485)
	at java.util.prefs.AbstractPreferences$EventDispatchThread.run(AbstractPreferences.java:1461)
	- locked <1098207c0> (a java.util.LinkedList)

   Locked ownable synchronizers:
	- None

"Thread-4" prio=5 tid=102e6a800 nid=0x170e39000 waiting on condition [170e38000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <109964d68> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
	at org.netbeans.modules.masterfs.watcher.OSXNotifier.nextEvent(OSXNotifier.java:103)
	at org.netbeans.modules.masterfs.watcher.Watcher$Ext.run(Watcher.java:151)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- None

"Thread-3" daemon prio=5 tid=101bb0800 nid=0x16df0b000 runnable [16df0a000]
   java.lang.Thread.State: RUNNABLE
	at com.sun.jna.Function.invokeVoid(Native Method)
	at com.sun.jna.Function.invoke(Function.java:282)
	at com.sun.jna.Function.invoke(Function.java:223)
	at com.sun.jna.Library$Handler.invoke(Library.java:204)
	at $Proxy6.CFRunLoopRun(Unknown Source)
	at org.netbeans.modules.masterfs.watcher.OSXNotifier$1.run(OSXNotifier.java:132)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- <10999efe0> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)

"Java2D Disposer" daemon prio=10 tid=1029fc800 nid=0x16d144000 in Object.wait() [16d143000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <108fadcf0> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
	- locked <108fadcf0> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
	at sun.java2d.Disposer.run(Disposer.java:127)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- None

"AWT-Shutdown" prio=5 tid=1019a8800 nid=0x168827000 in Object.wait() [168826000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <108c4b590> (a java.lang.Object)
	at java.lang.Object.wait(Object.java:485)
	at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:265)
	- locked <108c4b590> (a java.lang.Object)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- None

"AWT-AppKit" daemon prio=5 tid=1019a8000 nid=0x7fff70436ca0 runnable [7fff5fbf9000]
   java.lang.Thread.State: RUNNABLE
	at apple.awt.CToolkit.doAWTRunLoop(Native Method)
	at apple.awt.CToolkit.invokeAndWait(CToolkit.java:1135)
	at apple.awt.CToolkit.invokeAndWait(CToolkit.java:1087)
	at com.apple.laf.ScreenMenu.invokeOpenLater(ScreenMenu.java:115)

   Locked ownable synchronizers:
	- None

"Poller SunPKCS11-Darwin" daemon prio=1 tid=102b3d000 nid=0x157199000 waiting on condition [157198000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
	at java.lang.Thread.sleep(Native Method)
	at sun.security.pkcs11.SunPKCS11$TokenPoller.run(SunPKCS11.java:692)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- None

"CLI Requests Server" daemon prio=5 tid=102b0a000 nid=0x156d93000 runnable [156d92000]
   java.lang.Thread.State: RUNNABLE
	at java.net.PlainSocketImpl.socketAccept(Native Method)
	at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:390)
	- locked <108d0a2a0> (a java.net.SocksSocketImpl)
	at java.net.ServerSocket.implAccept(ServerSocket.java:453)
	at java.net.ServerSocket.accept(ServerSocket.java:421)
	at org.netbeans.CLIHandler$Server.run(CLIHandler.java:1031)

   Locked ownable synchronizers:
	- None

"Active Reference Queue Daemon" daemon prio=1 tid=101a93000 nid=0x154616000 in Object.wait() [154615000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <108c410e0> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
	- locked <108c410e0> (a java.lang.ref.ReferenceQueue$Lock)
	at org.openide.util.lookup.implspi.ActiveQueue$Impl.run(ActiveQueue.java:101)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- None

"Timer-0" daemon prio=5 tid=102b0d000 nid=0x154413000 in Object.wait() [154412000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <108cb5fe0> (a java.util.TaskQueue)
	at java.util.TimerThread.mainLoop(Timer.java:509)
	- locked <108cb5fe0> (a java.util.TaskQueue)
	at java.util.TimerThread.run(Timer.java:462)

   Locked ownable synchronizers:
	- None

"Low Memory Detector" daemon prio=5 tid=10281f800 nid=0x15400d000 runnable [00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
	- None

"CompilerThread1" daemon prio=9 tid=10281e800 nid=0x153e0a000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
	- None

"CompilerThread0" daemon prio=9 tid=10281e000 nid=0x153c07000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
	- None

"Signal Dispatcher" daemon prio=9 tid=10281d000 nid=0x153a04000 runnable [00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
	- None

"Surrogate Locker Thread (CMS)" daemon prio=5 tid=10281c800 nid=0x153801000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
	- None

"Finalizer" daemon prio=8 tid=10280e800 nid=0x153404000 in Object.wait() [153403000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <108d13f40> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
	- locked <108d13f40> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
	at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

   Locked ownable synchronizers:
	- None

"Reference Handler" daemon prio=10 tid=10280e000 nid=0x153201000 in Object.wait() [153200000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <108c410c8> (a java.lang.ref.Reference$Lock)
	at java.lang.Object.wait(Object.java:485)
	at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
	- locked <108c410c8> (a java.lang.ref.Reference$Lock)

   Locked ownable synchronizers:
	- None

"VM Thread" prio=9 tid=10280b000 nid=0x15260b000 runnable 

"Gang worker#0 (Parallel GC Threads)" prio=9 tid=101800800 nid=0x102504000 runnable 

"Gang worker#1 (Parallel GC Threads)" prio=9 tid=101801000 nid=0x102707000 runnable 

"Concurrent Mark-Sweep GC Thread" prio=9 tid=10184c000 nid=0x152318000 runnable 
"VM Periodic Task Thread" prio=10 tid=102831000 nid=0x154210000 waiting on condition 

"Exception Catcher Thread" prio=10 tid=102801800 nid=0x102301000 runnable 
JNI global references: 10175
Comment 1 Jaroslav Tulach 2011-02-26 15:27:23 UTC
I don't see a deadlock.  AWT thread is in 
at java.util.jar.JarFile.initializeVerifier(JarFile.java:322)
but there is no lock! I guess it can safely proceed.
Comment 2 emi 2011-02-26 16:25:22 UTC
And yet the IDE became unusable for me and I remained that way for enough time to have me go open VisualVM, look at what the IDE is doing, do a thread dump, save it to a file and then decide to kill the IDE.

I never said it's a deadlock, but I wasn't able to use the IDE for a considerable amount of time and I don't think it's kosher to do IO in the Event Queue.
Comment 3 Jaroslav Tulach 2011-02-26 19:04:43 UTC
OK, blocking AWT dispatch thread is a bug. But rather than thread dump, I'd like to get a nps or npss snapshot. One should have been generated automatically by the IDE. If one, you can install JVisualVM plugin to do perform sampling from outside.
Comment 4 emi 2011-02-26 22:46:56 UTC
Glad we agree it looks like a bug.

On that JAR the MANIFEST.MF was over 1MB so if the verifier really reads all those signatures (since the JAR is signed) it might do a bit of IO.