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.
A Dead lock appeared while parsing editing C++ code during project parsing. I anonymized the name of the C++-file and project. Output from jconsole Deadlock detection: Name: ToolTip-Evaluator State: BLOCKED on org.netbeans.modules.cnd.modelimpl.csm.core.ModelImpl$Lock@179a185 owned by: IDE needs to set up tools collections for P1. Total blocked: 65 Total waited: 57 Stack trace: org.netbeans.modules.cnd.modelimpl.csm.core.ModelImpl.findProject(ModelImpl.java:125) org.netbeans.modules.cnd.modelimpl.csm.core.ModelImpl.getProject(ModelImpl.java:146) org.netbeans.modules.cnd.modelutil.CsmUtilities.getCsmFiles(CsmUtilities.java:412) org.netbeans.modules.cnd.modelutil.CsmUtilities.getCsmFile(CsmUtilities.java:475) org.netbeans.modules.cnd.modelutil.CsmUtilities.getCsmFile(CsmUtilities.java:332) org.netbeans.modules.cnd.completion.cplusplus.hyperlink.CsmHyperlinkProvider.findTargetObject(CsmHyperlinkProvider.java:230) org.netbeans.modules.cnd.completion.cplusplus.hyperlink.CsmHyperlinkProvider.getTooltipText(CsmHyperlinkProvider.java:348) org.netbeans.modules.cnd.completion.cplusplus.hyperlink.CsmAbstractHyperlinkProvider.getTooltipText(CsmAbstractHyperlinkProvider.java:236) org.netbeans.lib.editor.hyperlink.HyperlinkOperation$TooltipResolver.getValue(HyperlinkOperation.java:503) org.netbeans.lib.editor.hyperlink.HyperlinkOperation$TooltipResolver.getValue(HyperlinkOperation.java:490) org.netbeans.modules.editor.NbToolTip$Request.getTooltipFromHighlightingLayers(NbToolTip.java:437) org.netbeans.modules.editor.NbToolTip$Request.resolveTooltipText(NbToolTip.java:425) org.netbeans.modules.editor.NbToolTip$Request.run(NbToolTip.java:361) org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1424) org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1973) Name: IDE needs to set up tools collections for P1. State: BLOCKED on org.netbeans.modules.cnd.modelimpl.csm.core.LibraryManager$Lock@1fec54c owned by: Code Model Parser 3: Parsing YYY.cc Total blocked: 80 Total waited: 25 Stack trace: org.netbeans.modules.cnd.modelimpl.csm.core.LibraryManager.getOrCreateLibrary(LibraryManager.java:348) org.netbeans.modules.cnd.modelimpl.csm.core.LibraryManager.readProjectLibraries(LibraryManager.java:438) org.netbeans.modules.cnd.modelimpl.csm.core.ProjectImpl.<init>(ProjectImpl.java:450) org.netbeans.modules.cnd.modelimpl.csm.core.CsmObjectFactory.createObject(CsmObjectFactory.java:306) org.netbeans.modules.cnd.repository.support.AbstractObjectFactory.readSelfPersistent(AbstractObjectFactory.java:78) org.netbeans.modules.cnd.modelimpl.csm.core.CsmObjectFactory.read(CsmObjectFactory.java:579) org.netbeans.modules.cnd.repository.sfs.BufferedRWAccess.read(BufferedRWAccess.java:112) org.netbeans.modules.cnd.repository.disk.FilesAccessStrategyImpl.read(FilesAccessStrategyImpl.java:120) org.netbeans.modules.cnd.repository.disk.MultyFileStorage.read(MultyFileStorage.java:95) org.netbeans.modules.cnd.repository.disk.UnitImpl.get(UnitImpl.java:119) org.netbeans.modules.cnd.repository.disk.DiskRepositoryManager.get(DiskRepositoryManager.java:203) org.netbeans.modules.cnd.repository.impl.DelegateRepository.get(DelegateRepository.java:82) org.netbeans.modules.cnd.modelimpl.repository.RepositoryUtils.get(RepositoryUtils.java:130) org.netbeans.modules.cnd.modelimpl.csm.core.ProjectBase.readInstance(ProjectBase.java:245) org.netbeans.modules.cnd.modelimpl.csm.core.ProjectImpl.createInstance(ProjectImpl.java:88) org.netbeans.modules.cnd.modelimpl.csm.core.ProjectImpl.createInstance(ProjectImpl.java:81) org.netbeans.modules.cnd.modelimpl.csm.core.ModelImpl.addProject(ModelImpl.java:196) - locked org.netbeans.modules.cnd.modelimpl.csm.core.ModelImpl$Lock@179a185 org.netbeans.modules.cnd.modelimpl.platform.ModelSupport$3.runImpl(ModelSupport.java:362) org.netbeans.modules.cnd.utils.NamedRunnable.run(NamedRunnable.java:62) org.netbeans.modules.cnd.spi.toolchain.CompilerSetManagerEvents.runProjectReadiness(CompilerSetManagerEvents.java:91) org.netbeans.modules.cnd.makeproject.api.configurations.Configurations.runOnProjectReadiness(Configurations.java:136) org.netbeans.modules.cnd.makeproject.api.configurations.Configurations.runOnProjectReadiness(Configurations.java:118) org.netbeans.modules.cnd.makeproject.NativeProjectProvider.runOnProjectReadiness(NativeProjectProvider.java:129) org.netbeans.modules.cnd.modelimpl.platform.ModelSupport.addProject(ModelSupport.java:365) org.netbeans.modules.cnd.modelimpl.platform.ModelSupport.openProjects(ModelSupport.java:235) - locked java.util.HashSet@143abcd org.netbeans.modules.cnd.modelimpl.platform.ModelSupport.access$100(ModelSupport.java:103) org.netbeans.modules.cnd.modelimpl.platform.ModelSupport$1.run(ModelSupport.java:117) org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1424) org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1973) Name: Code Model Parser 3: Parsing YYY.cc State: BLOCKED on org.netbeans.modules.cnd.modelimpl.csm.core.ModelImpl$Lock@179a185 owned by: IDE needs to set up tools collections for P1. Total blocked: 30 Total waited: 22 Stack trace: org.netbeans.modules.cnd.modelimpl.csm.core.ModelImpl.findProject(ModelImpl.java:125) org.netbeans.modules.cnd.modelimpl.csm.core.ProjectBase.getLibraries(ProjectBase.java:2115) org.netbeans.modules.cnd.modelimpl.csm.core.LibraryManager.searchInProjectRootsArtificial(LibraryManager.java:308) org.netbeans.modules.cnd.modelimpl.csm.core.LibraryManager.resolveFileProjectOnInclude(LibraryManager.java:191) - locked org.netbeans.modules.cnd.modelimpl.csm.core.LibraryManager$Lock@1fec54c org.netbeans.modules.cnd.modelimpl.parser.apt.APTProjectFileBasedWalker.include(APTProjectFileBasedWalker.java:97) org.netbeans.modules.cnd.apt.support.APTAbstractWalker.serialIncludeImpl(APTAbstractWalker.java:278) org.netbeans.modules.cnd.apt.support.APTAbstractWalker.includeImpl(APTAbstractWalker.java:146) - locked org.netbeans.modules.cnd.apt.support.PostIncludeData@a0ea4f org.netbeans.modules.cnd.apt.support.APTAbstractWalker.onInclude(APTAbstractWalker.java:112) org.netbeans.modules.cnd.apt.support.APTWalker.onAPT(APTWalker.java:223) org.netbeans.modules.cnd.apt.support.APTWalker.toNextNode(APTWalker.java:329) org.netbeans.modules.cnd.apt.support.APTWalker.nextTokenImpl(APTWalker.java:301) org.netbeans.modules.cnd.apt.support.APTWalker.access$200(APTWalker.java:61) org.netbeans.modules.cnd.apt.support.APTWalker$WalkerTokenStream.nextToken(APTWalker.java:103) org.netbeans.modules.cnd.apt.support.APTWalker$WalkerTokenStream.nextToken(APTWalker.java:95) org.netbeans.modules.cnd.antlr.TokenStreamSelector.nextToken(TokenStreamSelector.java:36) org.netbeans.modules.cnd.apt.support.APTExpandedStream.nextToken(APTExpandedStream.java:114) org.netbeans.modules.cnd.apt.support.APTExpandedStream.nextToken(APTExpandedStream.java:75) org.netbeans.modules.cnd.apt.utils.APTCommentsFilter.nextToken(APTCommentsFilter.java:69) org.netbeans.modules.cnd.apt.utils.APTCommentsFilter.nextToken(APTCommentsFilter.java:57) org.netbeans.modules.cnd.apt.support.lang.APTBaseLanguageFilter$FilterStream.nextToken(APTBaseLanguageFilter.java:143) org.netbeans.modules.cnd.antlr.TokenBuffer.<init>(TokenBuffer.java:67) org.netbeans.modules.cnd.antlr.TokenBuffer.<init>(TokenBuffer.java:48) org.netbeans.modules.cnd.antlr.LLkParser.<init>(LLkParser.java:27) org.netbeans.modules.cnd.antlr.LLkParserNoEx.<init>(LLkParserNoEx.java:38) org.netbeans.modules.cnd.modelimpl.parser.generated.CPPParser.<init>(CPPParser.java:454) org.netbeans.modules.cnd.modelimpl.parser.generated.CPPParser.<init>(CPPParser.java:460) org.netbeans.modules.cnd.modelimpl.parser.CPPParserEx.<init>(CPPParserEx.java:111) org.netbeans.modules.cnd.modelimpl.parser.CPPParserEx.getInstance(CPPParserEx.java:126) org.netbeans.modules.cnd.modelimpl.parser.ParserProviderImpl$Antlr2CppParser.init(ParserProviderImpl.java:110) org.netbeans.modules.cnd.modelimpl.csm.core.FileImpl.doParse(FileImpl.java:1178) org.netbeans.modules.cnd.modelimpl.csm.core.FileImpl._parse(FileImpl.java:830) org.netbeans.modules.cnd.modelimpl.csm.core.FileImpl.ensureParsed(FileImpl.java:517) - locked org.netbeans.modules.cnd.modelimpl.csm.core.FileImpl$StateLock@d96987 org.netbeans.modules.cnd.modelimpl.csm.core.ParserThread._run(ParserThread.java:139) org.netbeans.modules.cnd.modelimpl.csm.core.ParserThread.run(ParserThread.java:72) org.netbeans.modules.cnd.modelimpl.csm.core.ParserThreadManager$Wrapper.run(ParserThreadManager.java:91) org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1424) org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1973)
It seems ModelImpl.findProject(Object id) should not use lock.
fixed http://hg.netbeans.org/cnd-main/rev/9f80c7dd4870
Integrated into 'main-golden' Changeset: http://hg.netbeans.org/main-golden/rev/9f80c7dd4870 User: Vladimir Voskresensky <vv159170@netbeans.org> Log: fixed #204057 - Deadlock editing C++ project while netbeans parses projects - reuse libraries of project got out of library manager lock