[jira] [Commented] (NETBEANS-6312) Missing READ-LOCK when accessing TokenHierarchy

2021-12-17 Thread Martin Entlicher (Jira)


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

Martin Entlicher commented on NETBEANS-6312:


The stack in question does not really seem to acquire the document read lock 
anywhere.
Method {{DocumentView.modelToYNeedsLock(DocumentView.java:762)}} is supposed to 
be called with a read lock, if I get it right. But it's not called with a 
document read lock, but with {{LockedViewHierarchy}}, which acquires a lock on 
{{DocumentView}}, not on the {{Document}}.

> Missing READ-LOCK when accessing TokenHierarchy
> ---
>
> Key: NETBEANS-6312
> URL: https://issues.apache.org/jira/browse/NETBEANS-6312
> Project: NetBeans
>  Issue Type: Bug
>  Components: java - Editor
>Reporter: Martin Entlicher
>Assignee: Martin Entlicher
>Priority: Major
>
> It can be randomly reproduced on 
> {{org.netbeans.modules.ide.kit.VerifySimpleTemplatesTest}}.
> It breaks gates quite often, e.g.: 
> https://github.com/apache/netbeans/runs/4532335022
> The problem is:
> {code}
> 2021-12-15T10:27:11.4316670Z [junit] INFO 
> [org.netbeans.spi.lexer.MutableTextInput]: !!WARNING!! Missing READ-LOCK when 
> accessing TokenHierarchy: 
> input-source:org.netbeans.modules.editor.NbEditorDocument@743af498, 
> mimeType='text/plain+xml', kitClass=null, length=169, version=1, 
> file=org.netbeans.modules.xml.XMLDataObject@3273bf7e[/Users/runner/work/netbeans/netbeans/ide/ide.kit/build/test/qa-functional/work/o.n.m.i.k.V/at/Test11.xml@e0df019d:262f3b8]
> 2021-12-15T10:27:11.4420580Z [junit] java.lang.Exception
> 2021-12-15T10:27:11.4523420Z [junit] [catch] at 
> org.netbeans.lib.lexer.TokenHierarchyOperation.ensureReadLocked(TokenHierarchyOperation.java:387)
> 2021-12-15T10:27:11.4626970Z [junit]  at 
> org.netbeans.lib.lexer.TokenHierarchyOperation.isActive(TokenHierarchyOperation.java:343)
> 2021-12-15T10:27:11.4794700Z [junit]  at 
> org.netbeans.api.lexer.TokenHierarchy.isActive(TokenHierarchy.java:306)
> 2021-12-15T10:27:11.4898170Z [junit]  at 
> org.netbeans.modules.textmate.lexer.SyntaxHighlighting.getHighlights(SyntaxHighlighting.java:122)
> 2021-12-15T10:27:11.5002140Z [junit]  at 
> org.netbeans.modules.editor.lib2.highlighting.DirectMergeContainer$HlSequence.(DirectMergeContainer.java:209)
> 2021-12-15T10:27:11.5106470Z [junit]  at 
> org.netbeans.modules.editor.lib2.highlighting.DirectMergeContainer.getHighlights(DirectMergeContainer.java:96)
> 2021-12-15T10:27:11.5210700Z [junit]  at 
> org.netbeans.modules.editor.lib2.highlighting.HighlightsReader.(HighlightsReader.java:42)
> 2021-12-15T10:27:11.5318420Z [junit]  at 
> org.netbeans.modules.editor.lib2.view.HighlightsViewFactory.restart(HighlightsViewFactory.java:167)
> 2021-12-15T10:27:11.5421820Z [junit]  at 
> org.netbeans.modules.editor.lib2.view.ViewBuilder$FactoryState.init(ViewBuilder.java:1299)
> 2021-12-15T10:27:11.5524920Z [junit]  at 
> org.netbeans.modules.editor.lib2.view.ViewBuilder.createViews(ViewBuilder.java:699)
> 2021-12-15T10:27:11.5628510Z [junit]  at 
> org.netbeans.modules.editor.lib2.view.ViewBuilder.createReplaceRepaintViews(ViewBuilder.java:660)
> 2021-12-15T10:27:11.5732260Z [junit]  at 
> org.netbeans.modules.editor.lib2.view.ViewUpdates.reinitAllViews(ViewUpdates.java:189)
> 2021-12-15T10:27:11.5822640Z [junit]  at 
> org.netbeans.modules.editor.lib2.view.DocumentViewOp.checkViewsInited(DocumentViewOp.java:619)
> 2021-12-15T10:27:11.5975520Z [junit]  at 
> org.netbeans.modules.editor.lib2.view.DocumentView.modelToYNeedsLock(DocumentView.java:762)
> 2021-12-15T10:27:11.6079100Z [junit]  at 
> org.netbeans.modules.editor.lib2.view.ViewHierarchyImpl.modelToY(ViewHierarchyImpl.java:183)
> 2021-12-15T10:27:11.6182660Z [junit]  at 
> org.netbeans.modules.editor.lib2.view.LockedViewHierarchy.modelToY(LockedViewHierarchy.java:90)
> 2021-12-15T10:27:11.6285920Z [junit]  at 
> org.netbeans.editor.BaseTextUI.getYFromPos(BaseTextUI.java:271)
> 2021-12-15T10:27:11.6456740Z [junit]  at 
> org.netbeans.modules.editor.bracesmatching.BraceMatchingSidebarComponent.showTooltip(BraceMatchingSidebarComponent.java:695)
> 2021-12-15T10:27:11.6561980Z [junit]  at 
> org.netbeans.modules.editor.bracesmatching.BraceMatchingSidebarComponent.access$400(BraceMatchingSidebarComponent.java:93)
> 2021-12-15T10:27:11.000Z [junit]  at 
> org.netbeans.modules.editor.bracesmatching.BraceMatchingSidebarComponent$4.run(BraceMatchingSidebarComponent.java:448)
> 2021-12-15T10:27:11.6766190Z [junit]  at 
> java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
> 2021-12-15T10:27:11.6869060Z [junit]  at 
> 

[jira] [Commented] (NETBEANS-6312) Missing READ-LOCK when accessing TokenHierarchy

2021-12-17 Thread Martin Entlicher (Jira)


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

Martin Entlicher commented on NETBEANS-6312:


There are cases when the read lock is acquired outside of event dispatch 
thread. This can cause race conditions:
{code}
"main"
at 
javax.swing.text.AbstractDocument.readLock(AbstractDocument.java:1381)
at 
org.netbeans.modules.editor.indent.TaskHandler.collectTasks(TaskHandler.java:127)
at 
org.netbeans.modules.editor.indent.IndentImpl.reformatLock(IndentImpl.java:191)
at 
org.netbeans.modules.editor.indent.api.Reformat.lock(Reformat.java:89)
at 
org.netbeans.modules.editor.indent.IndentScriptEngineHack.eval(IndentScriptEngineHack.java:67)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
at 
org.netbeans.modules.editor.indent.IndentScriptEngineHack.eval(IndentScriptEngineHack.java:119)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:249)
at 
org.netbeans.api.templates.CreateFromTemplateImpl.defaultCreate(CreateFromTemplateImpl.java:377)
at 
org.netbeans.api.templates.CreateFromTemplateImpl.build(CreateFromTemplateImpl.java:151)
at 
org.netbeans.api.templates.CreateFromTemplateImpl.lambda$build$0(CreateFromTemplateImpl.java:86)
at 
org.netbeans.api.templates.CreateFromTemplateImpl$$Lambda$43.841262455.run
at 
org.openide.filesystems.EventControl.runAtomicAction(EventControl.java:102)
at 
org.openide.filesystems.FileSystem.runAtomicAction(FileSystem.java:494)
at 
org.netbeans.api.templates.CreateFromTemplateImpl.build(CreateFromTemplateImpl.java:84)
at org.netbeans.api.templates.FileBuilder.build(FileBuilder.java:267)
at 
org.netbeans.api.templates.FileBuilder.createFromTemplate(FileBuilder.java:369)
at org.openide.loaders.FileEntry.createFromTemplate(FileEntry.java:130)
at 
org.openide.loaders.MultiDataObject.handleCreateFromTemplate(MultiDataObject.java:863)
at 
org.openide.loaders.MultiDataObject.handleCreateFromTemplate(MultiDataObject.java:841)
at 
org.openide.loaders.DefaultDataObject.handleCreateFromTemplate(DefaultDataObject.java:144)
at org.openide.loaders.DataObject$CreateAction.run(DataObject.java:1572)
at 
org.openide.loaders.DataObjectPool$1WrapAtomicAction.run(DataObjectPool.java:236)
at 
org.openide.filesystems.EventControl.runAtomicAction(EventControl.java:102)
at 
org.openide.filesystems.FileSystem.runAtomicAction(FileSystem.java:494)
at 
org.openide.loaders.DataObjectPool.runAtomicAction(DataObjectPool.java:261)
at 
org.openide.loaders.DataObject.invokeAtomicAction(DataObject.java:1026)
at 
org.openide.loaders.DataObject.createFromTemplate(DataObject.java:958)
at 
org.openide.loaders.DataObject.createFromTemplate(DataObject.java:938)
at 
org.netbeans.modules.ide.kit.VerifySimpleTemplatesTest.testAllTemplates(VerifySimpleTemplatesTest.java:77)
at 
sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at junit.framework.TestCase.runTest(TestCase.java:177)
at org.netbeans.junit.NbTestCase.access$200(NbTestCase.java:77)
at org.netbeans.junit.NbTestCase$2.doSomething(NbTestCase.java:476)
at org.netbeans.junit.NbTestCase$1Guard.run(NbTestCase.java:402)
at org.netbeans.junit.NbTestCase.runBare(NbTestCase.java:495)
at junit.framework.TestResult$1.protect(TestResult.java:122)
at junit.framework.TestResult.runProtected(TestResult.java:142)
at junit.framework.TestResult.run(TestResult.java:125)
at junit.framework.TestCase.run(TestCase.java:130)
at org.netbeans.junit.NbTestCase.run(NbTestCase.java:291)
at junit.framework.TestSuite.runTest(TestSuite.java:241)
at 
org.netbeans.junit.NbModuleSuite$NbTestSuiteLogCheck.runTest(NbModuleSuite.java:1611)
at junit.framework.TestSuite.run(TestSuite.java:236)
at junit.framework.TestSuite.runTest(TestSuite.java:241)
at junit.framework.TestSuite.run(TestSuite.java:236)
at 
org.netbeans.junit.NbModuleSuite$S.runInRuntimeContainer(NbModuleSuite.java:939)
at org.netbeans.junit.NbModuleSuite$S.access$100(NbModuleSuite.java:660)
at org.netbeans.junit.NbModuleSuite$S$1.protect(NbModuleSuite.java:681)
at junit.framework.TestResult.runProtected(TestResult.java:142)
at org.netbeans.junit.NbModuleSuite$S.run(NbModuleSuite.java:677)
at