| Summary: | NPE: Error in CDT UI during reconcile | ||
|---|---|---|---|
| Product: | [Tools] CDT | Reporter: | Andrew Gvozdev <angvoz.dev> |
| Component: | cdt-parser | Assignee: | Project Inbox <cdt-parser-inbox> |
| Status: | RESOLVED DUPLICATE | QA Contact: | Markus Schorn <mschorn.eclipse> |
| Severity: | normal | ||
| Priority: | P3 | CC: | cdtdoug, jens.elmenthaler, malaperle, recoskie |
| Version: | 8.0 | ||
| Target Milestone: | --- | ||
| Hardware: | All | ||
| OS: | All | ||
| Whiteboard: | |||
|
Description
Andrew Gvozdev
Also that one but that one appears only once in the log: Unhandled event loop exception java.lang.NullPointerException at org.eclipse.cdt.internal.core.parser.scanner.ImageLocationInfo$MacroImageLocationInfo.createLocation(ImageLocationInfo.java:45) at org.eclipse.cdt.internal.core.parser.scanner.LocationCtxMacroExpansion.getImageLocation(LocationCtxMacroExpansion.java:98) at org.eclipse.cdt.internal.core.parser.scanner.ASTMacroExpansionLocation.getImageLocation(ASTPreprocessorNode.java:679) at org.eclipse.cdt.internal.core.parser.scanner.LocationMap.getImageLocation(LocationMap.java:491) at org.eclipse.cdt.internal.core.dom.parser.ASTNode.getImageLocation(ASTNode.java:148) at org.eclipse.cdt.internal.core.parser.scanner.FindNodeByImageLocation.processNode(FindNodeByImageLocation.java:53) at org.eclipse.cdt.internal.core.parser.scanner.FindNodeByImageLocation.visit(FindNodeByImageLocation.java:75) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName.accept(CPPASTName.java:165) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTQualifiedName.accept(CPPASTQualifiedName.java:197) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTIdExpression.accept(CPPASTIdExpression.java:101) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFunctionCallExpression.accept(CPPASTFunctionCallExpression.java:180) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTExpressionStatement.accept(CPPASTExpressionStatement.java:71) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTCompoundStatement.accept(CPPASTCompoundStatement.java:79) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFunctionDefinition.accept(CPPASTFunctionDefinition.java:187) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTCompositeTypeSpecifier.accept(CPPASTCompositeTypeSpecifier.java:172) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTSimpleDeclaration.accept(CPPASTSimpleDeclaration.java:96) at org.eclipse.cdt.internal.core.dom.parser.ASTTranslationUnit.accept(ASTTranslationUnit.java:279) at org.eclipse.cdt.internal.core.parser.scanner.LocationMap.findPreprocessorNode(LocationMap.java:532) at org.eclipse.cdt.internal.core.dom.parser.ASTNodeSelector.getNode(ASTNodeSelector.java:98) at org.eclipse.cdt.internal.core.dom.parser.ASTNodeSelector.findNode(ASTNodeSelector.java:89) at org.eclipse.cdt.internal.core.dom.parser.ASTNodeSelector.findNode(ASTNodeSelector.java:51) at org.eclipse.cdt.internal.core.dom.parser.ASTNodeSelector.findEnclosingName(ASTNodeSelector.java:159) at org.eclipse.cdt.internal.ui.editor.CElementHyperlinkDetector$1.runOnAST(CElementHyperlinkDetector.java:78) at org.eclipse.cdt.internal.core.model.ASTCache.runOnAST(ASTCache.java:223) at org.eclipse.cdt.internal.ui.editor.ASTProvider.runOnAST(ASTProvider.java:347) at org.eclipse.cdt.internal.ui.editor.CElementHyperlinkDetector.detectHyperlinks(CElementHyperlinkDetector.java:71) at org.eclipse.ui.texteditor.HyperlinkDetectorRegistry$HyperlinkDetectorDelegate.detectHyperlinks(HyperlinkDetectorRegistry.java:80) at org.eclipse.jface.text.hyperlink.HyperlinkManager.findHyperlinks(HyperlinkManager.java:286) at org.eclipse.jface.text.hyperlink.HyperlinkManager.findHyperlinks(HyperlinkManager.java:258) at org.eclipse.jface.text.hyperlink.HyperlinkManager.mouseMove(HyperlinkManager.java:462) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:211) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4150) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3739) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2696) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577) at org.eclipse.equinox.launcher.Main.run(Main.java:1410) I just got this too: java.lang.NullPointerException at org.eclipse.cdt.internal.core.parser.scanner.ImageLocationInfo$MacroImageLocationInfo.createLocation(ImageLocationInfo.java:45) at org.eclipse.cdt.internal.core.parser.scanner.LocationCtxMacroExpansion.getImageLocation(LocationCtxMacroExpansion.java:98) at org.eclipse.cdt.internal.core.parser.scanner.ASTMacroExpansionLocation.getImageLocation(ASTPreprocessorNode.java:679) at org.eclipse.cdt.internal.core.parser.scanner.LocationMap.getImageLocation(LocationMap.java:491) at org.eclipse.cdt.internal.core.dom.parser.ASTNode.getImageLocation(ASTNode.java:148) at org.eclipse.cdt.internal.ui.editor.SemanticHighlightingReconciler$PositionCollector.addNameLocation(SemanticHighlightingReconciler.java:216) at org.eclipse.cdt.internal.ui.editor.SemanticHighlightingReconciler$PositionCollector.visitNode(SemanticHighlightingReconciler.java:197) at org.eclipse.cdt.internal.ui.editor.SemanticHighlightingReconciler$PositionCollector.visit(SemanticHighlightingReconciler.java:184) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName.accept(CPPASTName.java:165) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTTemplateId.accept(CPPASTTemplateId.java:166) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNamedTypeSpecifier.accept(CPPASTNamedTypeSpecifier.java:93) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTSimpleDeclaration.accept(CPPASTSimpleDeclaration.java:96) at org.eclipse.cdt.internal.core.dom.parser.ASTTranslationUnit.accept(ASTTranslationUnit.java:279) at org.eclipse.cdt.internal.ui.editor.SemanticHighlightingReconciler.reconcilePositions(SemanticHighlightingReconciler.java:402) at org.eclipse.cdt.internal.ui.editor.SemanticHighlightingReconciler.reconciled(SemanticHighlightingReconciler.java:357) at org.eclipse.cdt.internal.ui.editor.CEditor.reconciled(CEditor.java:3091) at org.eclipse.cdt.internal.ui.text.CReconcilingStrategy.reconcile(CReconcilingStrategy.java:105) at org.eclipse.cdt.internal.ui.text.CReconcilingStrategy.reconcile(CReconcilingStrategy.java:71) at org.eclipse.cdt.internal.ui.text.CompositeReconcilingStrategy.reconcile(CompositeReconcilingStrategy.java:84) at org.eclipse.cdt.internal.ui.text.CCompositeReconcilingStrategy.reconcile(CCompositeReconcilingStrategy.java:90) at org.eclipse.jface.text.reconciler.MonoReconciler.process(MonoReconciler.java:77) at org.eclipse.cdt.internal.ui.text.CReconciler.process(CReconciler.java:408) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:206) Can you provide a piece of source code that triggers the bug? I am getting those coming to the log but haven't figured what causes it yet. Any pointers which user action could trigger that? Is it hovering, F3, opening a file, editing? (In reply to comment #4) > I am getting those coming to the log but haven't figured what causes it yet. > Any pointers which user action could trigger that? Is it hovering, F3, opening > a file, editing? The reconciler is called to build the CModel for the currently open source file. It gets triggered when you open the file, and also when you make edits (after a short delay of non-activity on the user's part). I got something different, maybe a different bug though:
java.lang.NullPointerException
at org.eclipse.cdt.core.parser.util.CharArrayUtils.equals(CharArrayUtils.java:92)
at org.eclipse.cdt.core.parser.util.CharTable.lookup(CharTable.java:163)
at org.eclipse.cdt.core.parser.util.CharArrayObjectMap.get(CharArrayObjectMap.java:53)
at org.eclipse.cdt.core.parser.util.CharArrayObjectMap.get(CharArrayObjectMap.java:60)
at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPScope.addName(CPPScope.java:108)
at org.eclipse.cdt.internal.core.dom.parser.ASTInternal.addName(ASTInternal.java:54)
at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.populateCache(CPPSemantics.java:1577)
at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.populateCache(CPPSemantics.java:1467)
at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPScope.populateCache(CPPScope.java:321)
at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPScope.getBindingsInAST(CPPScope.java:251)
at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPScope.getBindings(CPPScope.java:207)
at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.getBindingsFromScope(CPPSemantics.java:1199)
at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.lookup(CPPSemantics.java:943)
at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.resolveBinding(CPPSemantics.java:255)
at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor.createBinding(CPPVisitor.java:227)
at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName.createIntermediateBinding(CPPASTName.java:63)
at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNameBase.resolvePreBinding(CPPASTNameBase.java:74)
at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor.getContainingScopeOrNull(CPPVisitor.java:1082)
at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor.getContainingScope(CPPVisitor.java:1042)
at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.getLookupScope(CPPSemantics.java:783)
at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.lookup(CPPSemantics.java:896)
at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.resolveBinding(CPPSemantics.java:255)
at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor.createBinding(CPPVisitor.java:227)
at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName.createIntermediateBinding(CPPASTName.java:63)
at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNameBase.resolveBinding(CPPASTNameBase.java:86)
at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTQualifiedName.resolveBinding(CPPASTQualifiedName.java:92)
at org.eclipse.cdt.internal.ui.editor.SemanticToken.getBinding(SemanticToken.java:47)
at org.eclipse.cdt.internal.ui.editor.SemanticHighlightings$TemplateParameterHighlighting.consumes(SemanticHighlightings.java:1156)
at org.eclipse.cdt.internal.ui.editor.SemanticHighlightingReconciler$PositionCollector.visitNode(SemanticHighlightingReconciler.java:195)
at org.eclipse.cdt.internal.ui.editor.SemanticHighlightingReconciler$PositionCollector.visit(SemanticHighlightingReconciler.java:184)
at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTQualifiedName.accept(CPPASTQualifiedName.java:182)
at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNamedTypeSpecifier.accept(CPPASTNamedTypeSpecifier.java:93)
at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTSimpleDeclaration.accept(CPPASTSimpleDeclaration.java:96)
at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTDeclarationStatement.accept(CPPASTDeclarationStatement.java:72)
at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTForStatement.accept(CPPASTForStatement.java:130)
at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTCompoundStatement.accept(CPPASTCompoundStatement.java:79)
at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFunctionDefinition.accept(CPPASTFunctionDefinition.java:187)
at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNamespaceDefinition.accept(CPPASTNamespaceDefinition.java:129)
at org.eclipse.cdt.internal.core.dom.parser.ASTTranslationUnit.accept(ASTTranslationUnit.java:279)
at org.eclipse.cdt.internal.ui.editor.SemanticHighlightingReconciler.reconcilePositions(SemanticHighlightingReconciler.java:402)
at org.eclipse.cdt.internal.ui.editor.SemanticHighlightingReconciler.reconciled(SemanticHighlightingReconciler.java:357)
at org.eclipse.cdt.internal.ui.editor.CEditor.reconciled(CEditor.java:3091)
Then after editing some more, I noticed that semantic highlighting was not working at all anymore. Looking at the threads:
- 3 CReconciler threads waiting in AbstractReconciler:179 fDirtyRegionQueue.wait(fDelay);
- 1 CReconciler in an infinite loop in org.eclipse.cdt.core.parser.util.HashTable.linkIntoHashTable(int, int)
while (nextTable[j] != 0) {
// if (nextTable[j] - 1 == j) {
// break;
// }
j = nextTable[j] - 1;
}
value of nextTable[0] was 1
I was editing OgreMesh.cpp (http://www.ogre3d.org/)
(In reply to comment #6) Most likely this exception is the result of concurrently accessing the same AST from different threads (The code of the HashTable has not been changed in the last 3 years). (In reply to comment #7) > (In reply to comment #6) > Most likely this exception is the result of concurrently accessing the same AST > from different threads (The code of the HashTable has not been changed in the > last 3 years). It certainly looks this way. I have troubles to corner the exception, it always slips behind the radar. The closest I happen to notice was that I was doing a search on a macro (#define) then checking the occurrences. Then I manually renamed the macro, navigated to search results and fixed all the occurrences. When my attention released from rename process the exception was there. I don't really know what exactly action triggered it. *** Bug 344440 has been marked as a duplicate of this bug. *** (In reply to bug 344440 comment #5) > (In reply to comment #4) > > The same infinite loop is reported in bug 343175 comment 6 > > *** This bug has been marked as a duplicate of bug 343175 *** > Confirmed. After updating from yesterday's HEAD I don't see that problem any > longer. I do not see reconcile NPE reported in this bug any longer after applying the build with the fix either. *** This bug has been marked as a duplicate of bug 343948 *** |