Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 319014

Summary: VPG update problem
Product: [Tools] PTP Reporter: Matthew Fotzler <incongruous>
Component: Photran.Refactoring EngineAssignee: Photran Inbox <photran-inbox>
Status: NEW --- QA Contact:
Severity: normal    
Priority: P2 CC: com-eclipse-dot-org
Version: unspecified   
Target Milestone: ---   
Hardware: Macintosh   
OS: Mac OS X   
Whiteboard:

Description Matthew Fotzler CLA 2010-07-06 10:35:14 EDT
I'm noticing that when I call listAllModules(), if I close a project,
the modules still are listed until I clear and rebuild the VPG
database.

I made calls to ensure the database is up-to-date in the refactoring
and input page, but it didn't change anything.

If I rebuild the database, open a project, and then run the
refactoring without rebuilding again, I get two different errors.. one
of them is with control flow analysis and the other appears to be with
name binding..  they both seem to be having issues with the same
index, which is probably from the newly opened project that isn't in
the VPG database.

java.lang.ArrayIndexOutOfBoundsException: 280208
at org.eclipse.rephraserengine.internal.db.org.eclipse.cdt.internal.core.pdom.db.Database.getChunk(Database.java:232)
at org.eclipse.rephraserengine.internal.db.org.eclipse.cdt.internal.core.pdom.db.Database.putInt(Database.java:380)
at org.eclipse.rephraserengine.internal.db.org.eclipse.cdt.internal.core.pdom.db.Database.removeBlock(Database.java:331)
at org.eclipse.rephraserengine.internal.db.org.eclipse.cdt.internal.core.pdom.db.Database.malloc(Database.java:282)
at org.eclipse.rephraserengine.internal.core.vpg.db.cdt.InternalCDTDB$Edges.createNewRecord(InternalCDTDB.java:784)
at org.eclipse.rephraserengine.internal.core.vpg.db.cdt.InternalCDTDB$Edges.ensure(InternalCDTDB.java:848)
at org.eclipse.rephraserengine.core.vpg.db.cdt.CDTDB.ensure(CDTDB.java:500)
at org.eclipse.rephraserengine.core.vpg.db.profiling.ProfilingDB.ensure(ProfilingDB.java:345)
at org.eclipse.rephraserengine.core.vpg.db.caching.CachingDB.ensure(CachingDB.java:246)
at org.eclipse.photran.internal.core.analysis.flow.ControlFlowAnalysis.createFlow(ControlFlowAnalysis.java:127)
at org.eclipse.photran.internal.core.analysis.flow.ControlFlowAnalysis.flowTo(ControlFlowAnalysis.java:133)
at org.eclipse.photran.internal.core.analysis.flow.ControlFlowAnalysis.visitIExecutableConstruct(ControlFlowAnalysis.java:162)
at org.eclipse.photran.internal.core.analysis.flow.ControlFlowAnalysis.visitIActionStmt(ControlFlowAnalysis.java:154)
at org.eclipse.photran.internal.core.parser.ASTAssignmentStmtNode.accept(ASTAssignmentStmtNode.java:186)
at org.eclipse.photran.internal.core.parser.ASTVisitor.traverseChildren(ASTVisitor.java:21)
at org.eclipse.photran.internal.core.parser.ASTVisitor.visitASTListNode(ASTVisitor.java:26)
at org.eclipse.photran.internal.core.parser.ASTListNode.accept(ASTListNode.java:130)
at org.eclipse.photran.internal.core.analysis.flow.ControlFlowAnalysis.visitASTIfConstructNode(ControlFlowAnalysis.java:389)
at org.eclipse.photran.internal.core.parser.ASTIfConstructNode.accept(ASTIfConstructNode.java:100)
at org.eclipse.photran.internal.core.parser.ASTVisitor.traverseChildren(ASTVisitor.java:21)
at org.eclipse.photran.internal.core.parser.ASTVisitor.visitASTListNode(ASTVisitor.java:26)
at org.eclipse.photran.internal.core.parser.ASTListNode.accept(ASTListNode.java:130)
at org.eclipse.photran.internal.core.parser.ASTVisitor.traverseChildren(ASTVisitor.java:21)
at org.eclipse.photran.internal.core.parser.ASTVisitor.visitASTSubroutineSubprogramNode(ASTVisitor.java:359)
at org.eclipse.photran.internal.core.parser.ASTSubroutineSubprogramNode.accept(ASTSubroutineSubprogramNode.java:100)
at org.eclipse.photran.internal.core.parser.ASTVisitor.traverseChildren(ASTVisitor.java:21)
at org.eclipse.photran.internal.core.parser.ASTVisitor.visitASTListNode(ASTVisitor.java:26)
at org.eclipse.photran.internal.core.parser.ASTListNode.accept(ASTListNode.java:130)
at org.eclipse.photran.internal.core.parser.ASTVisitor.traverseChildren(ASTVisitor.java:21)
at org.eclipse.photran.internal.core.parser.ASTVisitor.visitASTModuleNode(ASTVisitor.java:259)
at org.eclipse.photran.internal.core.parser.ASTModuleNode.accept(ASTModuleNode.java:74)
at org.eclipse.photran.internal.core.parser.ASTVisitor.traverseChildren(ASTVisitor.java:21)
at org.eclipse.photran.internal.core.parser.ASTVisitor.visitASTListNode(ASTVisitor.java:26)
at org.eclipse.photran.internal.core.parser.ASTListNode.accept(ASTListNode.java:130)
at org.eclipse.photran.internal.core.parser.ASTVisitor.traverseChildren(ASTVisitor.java:21)
at org.eclipse.photran.internal.core.parser.ASTVisitor.visitASTExecutableProgramNode(ASTVisitor.java:176)
at org.eclipse.photran.internal.core.parser.ASTExecutableProgramNode.accept(ASTExecutableProgramNode.java:61)
at org.eclipse.photran.internal.core.analysis.flow.ControlFlowAnalysis.analyze(ControlFlowAnalysis.java:98)
at org.eclipse.photran.internal.core.vpg.PhotranVPGBuilder.populateVPG(PhotranVPGBuilder.java:472)
at org.eclipse.photran.internal.core.vpg.PhotranVPGBuilder.populateVPG(PhotranVPGBuilder.java:1)
at org.eclipse.rephraserengine.core.vpg.VPG.computeEdgesAndAnnotations(VPG.java:203)
at org.eclipse.rephraserengine.core.vpg.VPG.acquireTransientAST(VPG.java:147)
at org.eclipse.rephraserengine.core.vpg.VPG.forceRecomputationOfEdgesAndAnnotations(VPG.java:291)
at org.eclipse.rephraserengine.core.vpg.eclipse.EclipseVPG$VPGResourceDeltaVisitor.index(EclipseVPG.java:375)
at org.eclipse.rephraserengine.core.vpg.eclipse.EclipseVPG$VPGResourceDeltaJob.runInWorkspace(EclipseVPG.java:266)
at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)


--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



java.lang.reflect.InvocationTargetException
       at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:421)
       at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:507)
       at org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog.run(ProgressMonitorJobsDialog.java:275)
       at org.eclipse.ui.internal.progress.ProgressManager$5.run(ProgressManager.java:960)
       at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
       at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:995)
       at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:970)
       at org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation.checkInitialConditions(RefactoringWizardOpenOperation.java:205)
       at org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation.access$0(RefactoringWizardOpenOperation.java:200)
       at org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation$1.run(RefactoringWizardOpenOperation.java:163)
       at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
       at org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation.run(RefactoringWizardOpenOperation.java:192)
       at org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation.run(RefactoringWizardOpenOperation.java:115)
       at org.eclipse.rephraserengine.internal.ui.actions.RefactoringAction.run(RefactoringAction.java:140)
       at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:464)
       at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:372)
       at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:507)
       at org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog.run(ProgressMonitorJobsDialog.java:275)
       at org.eclipse.ui.internal.progress.ProgressManager.run(ProgressManager.java:1162)
       at org.eclipse.ui.internal.progress.ProgressManager$RunnableWithStatus.run(ProgressManager.java:1346)
       at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
       at org.eclipse.ui.internal.progress.ProgressManager$7.run(ProgressManager.java:1184)
       at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:179)
       at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150)
       at org.eclipse.swt.widgets.Display.syncExec(Display.java:4233)
       at org.eclipse.ui.internal.progress.ProgressManager.runInUI(ProgressManager.java:1182)
       at org.eclipse.rephraserengine.internal.ui.actions.RefactoringAction.run(RefactoringAction.java:116)
       at org.eclipse.rephraserengine.internal.ui.actions.RefactoringAction.run(RefactoringAction.java:99)
       at org.eclipse.rephraserengine.ui.menus.RefactorMenu$EditorRefactoringContributionItem$1.widgetSelected(RefactorMenu.java:322)
       at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234)
       at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
       at org.eclipse.swt.widgets.Display.sendEvent(Display.java:3776)
       at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1367)
       at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1390)
       at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1375)
       at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1187)
       at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3622)
       at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3277)
       at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2629)
       at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2593)
       at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2427)
       at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:670)
       at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
       at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:663)
       at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
       at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
       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:369)
       at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:597)
       at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
       at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
       at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
       at org.eclipse.equinox.launcher.Main.main(Main.java:1383)
Caused by: java.lang.Error: java.lang.ArrayIndexOutOfBoundsException: 280208
       at org.eclipse.photran.internal.core.analysis.binding.BindingCollector.addDefinition(BindingCollector.java:88)
       at org.eclipse.photran.internal.core.analysis.binding.DefinitionCollector.visitASTProgramStmtNode(DefinitionCollector.java:338)
       at org.eclipse.photran.internal.core.parser.ASTProgramStmtNode.accept(ASTProgramStmtNode.java:75)
       at org.eclipse.photran.internal.core.parser.ASTVisitor.traverseChildren(ASTVisitor.java:21)
       at org.eclipse.photran.internal.core.parser.ASTVisitor.visitASTMainProgramNode(ASTVisitor.java:251)
       at org.eclipse.photran.internal.core.parser.ASTMainProgramNode.accept(ASTMainProgramNode.java:100)
       at org.eclipse.photran.internal.core.parser.ASTVisitor.traverseChildren(ASTVisitor.java:21)
       at org.eclipse.photran.internal.core.parser.ASTVisitor.visitASTListNode(ASTVisitor.java:26)
       at org.eclipse.photran.internal.core.parser.ASTListNode.accept(ASTListNode.java:130)
       at org.eclipse.photran.internal.core.parser.ASTVisitor.traverseChildren(ASTVisitor.java:21)
       at org.eclipse.photran.internal.core.parser.ASTVisitor.visitASTExecutableProgramNode(ASTVisitor.java:176)
       at org.eclipse.photran.internal.core.analysis.binding.DefinitionCollector.visitASTExecutableProgramNode(DefinitionCollector.java:535)
       at org.eclipse.photran.internal.core.parser.ASTExecutableProgramNode.accept(ASTExecutableProgramNode.java:61)
       at org.eclipse.photran.internal.core.FortranAST.accept(FortranAST.java:56)
       at org.eclipse.photran.internal.core.analysis.binding.Binder.bind(Binder.java:45)
       at org.eclipse.photran.internal.core.vpg.PhotranVPGBuilder.populateVPG(PhotranVPGBuilder.java:468)
       at org.eclipse.photran.internal.core.vpg.PhotranVPGBuilder.populateVPG(PhotranVPGBuilder.java:1)
       at org.eclipse.rephraserengine.core.vpg.VPG.computeEdgesAndAnnotations(VPG.java:203)
       at org.eclipse.rephraserengine.core.vpg.VPG.acquireTransientAST(VPG.java:147)
       at org.eclipse.rephraserengine.core.vpg.VPG.forceRecomputationOfEdgesAndAnnotations(VPG.java:291)
       at org.eclipse.rephraserengine.core.vpg.eclipse.EclipseVPG.indexIfNotUpToDate(EclipseVPG.java:406)
       at org.eclipse.rephraserengine.core.vpg.eclipse.EclipseVPG$WorkspaceSyncResourceVisitor.index(EclipseVPG.java:207)
       at org.eclipse.rephraserengine.core.vpg.eclipse.EclipseVPG.ensureVPGIsUpToDate(EclipseVPG.java:132)
       at org.eclipse.rephraserengine.core.vpg.refactoring.VPGRefactoring.checkInitialConditions(VPGRefactoring.java:63)
       at org.eclipse.ltk.core.refactoring.CheckConditionsOperation.run(CheckConditionsOperation.java:83)
       at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1975)
       at org.eclipse.ltk.internal.ui.refactoring.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:87)
       at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 280208
       at org.eclipse.rephraserengine.internal.db.org.eclipse.cdt.internal.core.pdom.db.Database.getChunk(Database.java:232)
       at org.eclipse.rephraserengine.internal.db.org.eclipse.cdt.internal.core.pdom.db.Database.putInt(Database.java:380)
       at org.eclipse.rephraserengine.internal.db.org.eclipse.cdt.internal.core.pdom.db.Database.removeBlock(Database.java:331)
       at org.eclipse.rephraserengine.internal.db.org.eclipse.cdt.internal.core.pdom.db.Database.malloc(Database.java:282)
       at org.eclipse.rephraserengine.internal.db.org.eclipse.cdt.internal.core.pdom.db.ShortString.<init>(ShortString.java:56)
       at org.eclipse.rephraserengine.internal.db.org.eclipse.cdt.internal.core.pdom.db.Database.newString(Database.java:415)
       at org.eclipse.rephraserengine.internal.core.vpg.db.cdt.InternalCDTDB$Files.setFilename(InternalCDTDB.java:195)
       at org.eclipse.rephraserengine.internal.core.vpg.db.cdt.InternalCDTDB$Files.createNewRecord(InternalCDTDB.java:211)
       at org.eclipse.rephraserengine.internal.core.vpg.db.cdt.InternalCDTDB$Files.ensure(InternalCDTDB.java:264)
       at org.eclipse.rephraserengine.internal.core.vpg.db.cdt.InternalCDTDB$Edges.ensure(InternalCDTDB.java:843)
       at org.eclipse.rephraserengine.core.vpg.db.cdt.CDTDB.ensure(CDTDB.java:500)
       at org.eclipse.rephraserengine.core.vpg.db.profiling.ProfilingDB.ensure(ProfilingDB.java:345)
       at org.eclipse.rephraserengine.core.vpg.db.caching.CachingDB.ensure(CachingDB.java:246)
       at org.eclipse.photran.internal.core.vpg.PhotranVPGBuilder.markScope(PhotranVPGBuilder.java:104)
       at org.eclipse.photran.internal.core.analysis.binding.BindingCollector.addDefinition(BindingCollector.java:79)
       ... 27 more