[ 
https://issues.apache.org/jira/browse/NETBEANS-373?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16432706#comment-16432706
 ] 

Jan Lahoda commented on NETBEANS-373:
-------------------------------------

Regarding the old CVS, some have it, but it is fairly difficult to work with 
that (as it was never converted to hg/git; and also the layout of some things 
changed several times).

 

I think Austin's question is valid: why is showDialog synchronized? Looking at 
the CVS, there's no real help with that (the method appears to be synchronized 
from the beginning, but there may be some much bigger context I am missing.). 
And it does not appear to be very meaningful (the lock is locked for the whole 
duration the dialog is showing - why do that? That feels like asking for 
trouble (the dialog may be showing for a long time). My suggestion would be to 
delete the synchronized flag from the showDialog method; and also delete the 
"synchronized (this)" from cancelActionPerformed.

> Netbeans sometimes freezes when showing any refactor dialog when running with 
> jdk 1.8.0_152-b16 or later
> --------------------------------------------------------------------------------------------------------
>
>                 Key: NETBEANS-373
>                 URL: https://issues.apache.org/jira/browse/NETBEANS-373
>             Project: NetBeans
>          Issue Type: Bug
>          Components: java - Refactoring
>    Affects Versions: 8.2, 9.0
>         Environment: Mac
>            Reporter: Austin Stephens
>            Priority: Blocker
>         Attachments: Screen Shot 2018-04-02 at 11.22.11 AM.png, Screen Shot 
> 2018-04-02 at 11.23.15 AM.png, nbpresenter.diff
>
>
> Sometimes (or almost always), when you try to do some refactor action, 
> NetBeans freezes. It appears that a lock is obtained on a panel when the 
> dialog is shown, and the AppKit Thread tries to get the lock while trying to 
> add an accessible listener to it.
> AppKit Thread:
> {code:java}
> Container.addContainerListener:2142    
> Container$AccessibleAWTContainer.addPropertyChangeListener:3885    
> JComponent$AccessibleJComponent.addPropertyChangeListener:3765    
> Hidden Source Calls    
> CAccessible.addNotificationListeners:102    
> CAccessible.<init>:84    
> CAccessible.getCAccessible:60
> {code}
> EDT Thread:
> {code:java}
> Hidden Source Calls    
> Unsafe.park    
> LockSupport.park:194    
> AbstractQueuedSynchronizer$ConditionObject.await:2062    
> EventQueue.getNextEvent:557    
> EventDispatchThread.pumpOneEventForFilters:173    
> EventDispatchThread.pumpEventsForFilter:124    
> EventDispatchThread.pumpEventsForFilter:117    
> WaitDispatchSupport$2.run:190    
> WaitDispatchSupport$4.run:235    
> WaitDispatchSupport$4.run:233    
> AccessController.doPrivileged    
> WaitDispatchSupport.enter:233    
> Dialog.show:1070    
> NbPresenter.superShow:1060    
> NbPresenter.doShow:1110    
> NbPresenter.run:1082    
> NbPresenter.run:105    
> NbMutexEventProvider$Event.doEventAccess:115    
> NbMutexEventProvider$Event.readAccess:75    
> LazyMutexImplementation.readAccess:71    
> Mutex.readAccess:193    
> NbPresenter.show:1067    
> Component.show:1669    
> Component.setVisible:1616    
> Window.setVisible:1017    
> Dialog.setVisible:1005    
> ParametersPanel.showDialog:674    
> RefactoringPanel.refresh:660    
> RefactoringPanel.<init>:144    
> UI.openRefactoringUI:61    
> ContextAnalyzer$4.show:648    
> ContextAnalyzer$TextComponentTask.run:369    
> RefactoringActionsProvider.doFindUsages:232    
> ActionsImplementationFactory.doFindUsages:91    
> WhereUsedAction.performAction:52    
> RefactoringGlobalAction$ContextAction.actionPerformed:172    
> TopComponent.processKeyBinding:1151    
> JComponent.processKeyBindings:2963    
> JComponent.processKeyEvent:2863    
> Component.processEvent:6355    
> Container.processEvent:2259    
> Component.dispatchEventImpl:4961    
> Container.dispatchEventImpl:2317    
> Component.dispatchEvent:4793    
> KeyboardFocusManager.redispatchEvent:1955    
> DefaultKeyboardFocusManager.dispatchKeyEvent:827    
> DefaultKeyboardFocusManager.preDispatchKeyEvent:1096    
> DefaultKeyboardFocusManager.typeAheadAssertions:966    
> DefaultKeyboardFocusManager.dispatchEvent:792    
> Component.dispatchEventImpl:4842    
> Container.dispatchEventImpl:2317    
> Window.dispatchEventImpl:2758    
> Component.dispatchEvent:4793    
> EventQueue.dispatchEventImpl:766    
> EventQueue.access$500:97    
> EventQueue$3.run:717    
> EventQueue$3.run:711    
> AccessController.doPrivileged    
> ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege:89    
> ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege:99    
> EventQueue$4.run:739    
> EventQueue$4.run:737    
> AccessController.doPrivileged    
> ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege:89    
> EventQueue.dispatchEvent:736    
> TimableEventQueue.dispatchEvent:136    
> EventDispatchThread.pumpOneEventForFilters:199    
> EventDispatchThread.pumpEventsForFilter:124    
> EventDispatchThread.pumpEventsForHierarchy:113    
> EventDispatchThread.pumpEvents:109    
> EventDispatchThread.pumpEvents:101    
> EventDispatchThread.run:90   
> {code}
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org
For additional commands, e-mail: commits-h...@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists

Reply via email to