Duplicate :
|
FULL PRODUCT VERSION : java version "1.6.0_06" Java(TM) SE Runtime Environment (build 1.6.0_06-b02) Java HotSpot(TM) Client VM (build 10.0-b22, mixed mode) ADDITIONAL OS VERSION INFORMATION : Microsoft Windows XP [Version 5.1.2600] A DESCRIPTION OF THE PROBLEM : There is a deadlock when I tried bringing up the JFileChooser. The symptom is very similar to 6744953 but has a different stack: Thread [AWT-EventQueue-0] (Suspended) owns: Win32ShellFolder2 (id=48) owns: Component$AWTTreeLock (id=54) Unsafe.park(boolean, long) line: not available [native method] LockSupport.park(Object) line: 158 FutureTask$Sync(AbstractQueuedSynchronizer).parkAndCheckInterrupt() line: 747 FutureTask$Sync(AbstractQueuedSynchronizer).doAcquireSharedInterruptibly(int) line: 905 FutureTask$Sync(AbstractQueuedSynchronizer).acquireSharedInterruptibly(int) line: 1217 FutureTask$Sync.innerGet() line: 218 FutureTask<V>.get() line: 83 Win32ShellFolderManager2$ComInvoker.invoke(Callable<T>) line: 495 Win32ShellFolder2.hasAttribute(int) line: 520 Win32ShellFolder2.isLink() line: 737 WindowsFileSystemView(FileSystemView).isFileSystem(File) line: 281 WindowsFileSystemView(FileSystemView).getSystemDisplayName(File) line: 155 BasicFileChooserUI$BasicFileView.getName(File) line: 1157 JFileChooser.getName(File) line: 1478 FilePane$FileRenderer.getListCellRendererComponent(JList, Object, int, boolean, boolean) line: 1320 BasicListUI.updateLayoutState() line: 1342 BasicListUI.maybeUpdateLayoutState() line: 1292 BasicListUI.getPreferredSize(JComponent) line: 559 FilePane$3(JComponent).getPreferredSize() line: 1632 ScrollPaneLayout$UIResource(ScrollPaneLayout).layoutContainer(Container) line: 769 JScrollPane(Container).layout() line: 1432 JScrollPane(Container).doLayout() line: 1421 JScrollPane(Container).validateTree() line: 1519 JPanel(Container).validateTree() line: 1526 FilePane(Container).validateTree() line: 1526 JFileChooser(Container).validateTree() line: 1526 JPanel(Container).validateTree() line: 1526 JLayeredPane(Container).validateTree() line: 1526 JRootPane(Container).validateTree() line: 1526 AddBlockTemplateCatalogDialog(Container).validateTree() line: 1526 AddBlockTemplateCatalogDialog(Container).validate() line: 1491 AddBlockTemplateCatalogDialog(Window).pack() line: 679 AddBlockTemplateCatalogDialog(BaseDialog).showDialog(boolean) line: 142 AddBlockTemplateCatalogAction.actionPerformed(ActionEvent) line: 59 JButton(AbstractButton).fireActionPerformed(ActionEvent) line: 1995 AbstractButton$Handler.actionPerformed(ActionEvent) line: 2318 DefaultButtonModel.fireActionPerformed(ActionEvent) line: 387 DefaultButtonModel.setPressed(boolean) line: 242 BasicButtonListener.mouseReleased(MouseEvent) line: 236 AWTEventMulticaster.mouseReleased(MouseEvent) line: 272 JButton(Component).processMouseEvent(MouseEvent) line: 6041 JButton(JComponent).processMouseEvent(MouseEvent) line: 3265 JButton(Component).processEvent(AWTEvent) line: 5806 JButton(Container).processEvent(AWTEvent) line: 2058 JButton(Component).dispatchEventImpl(AWTEvent) line: 4413 JButton(Container).dispatchEventImpl(AWTEvent) line: 2116 JButton(Component).dispatchEvent(AWTEvent) line: 4243 LightweightDispatcher.retargetMouseEvent(Component, int, MouseEvent) line: 4322 LightweightDispatcher.processMouseEvent(MouseEvent) line: 3986 LightweightDispatcher.dispatchEvent(AWTEvent) line: 3916 MainFrame(Container).dispatchEventImpl(AWTEvent) line: 2102 MainFrame(Window).dispatchEventImpl(AWTEvent) line: 2440 MainFrame(Component).dispatchEvent(AWTEvent) line: 4243 EventQueue.dispatchEvent(AWTEvent) line: 599 EventDispatchThread.pumpOneEventForFilters(int) line: 273 EventDispatchThread.pumpEventsForFilter(int, Conditional, EventFilter) line: 183 EventDispatchThread.pumpEventsForHierarchy(int, Conditional, Component) line: 173 EventDispatchThread.pumpEvents(int, Conditional) line: 168 EventDispatchThread.pumpEvents(Conditional) line: 160 EventDispatchThread.run() line: 121 Daemon System Thread [Swing-Shell] (Suspended) owns: Vector<E> (id=49) waiting for: Win32ShellFolder2 (id=48) Win32ShellFolder2.isFileSystem() line: 510 Win32ShellFolder2.equals(Object) line: 484 Vector<E>(AbstractList<E>).equals(Object) line: 507 Vector<E>.equals(Object) line: 925 BasicDirectoryModel$LoadFilesThread$1.call() line: 314 BasicDirectoryModel$LoadFilesThread$1.call() line: 221 FutureTask$Sync.innerRun() line: 303 FutureTask<V>.run() line: 138 ThreadPoolExecutor$Worker.runTask(Runnable) line: 885 ThreadPoolExecutor$Worker.run() line: 907 Win32ShellFolderManager2$ComInvoker$3.run() line: 458 Thread.run() line: 619 Above stacks were taken from inside eclipse debug. STEPS TO FOLLOW TO REPRODUCE THE PROBLEM : It seems to be happening more often if I visited a directory with a lot of folders/files once. Close it and try to reopen it again. EXPECTED VERSUS ACTUAL BEHAVIOR : EXPECTED - Deadlock inside swing's thread is bad, especially all we're doing is to bring up the JFileChooser. Looks like the Swing-shell is locking a Vector object (id=49) triggered by a FutureTask. ACTUAL - It shouldn't deadlock! REPRODUCIBILITY : This bug can be reproduced always.