Bug 498590 - sporadic ArrayIndexOutOfBoundsException when doing undo/redo
Summary: sporadic ArrayIndexOutOfBoundsException when doing undo/redo
Status: NEW
Alias: None
Product: z_Archived
Classification: Eclipse Foundation
Component: PDT (show other bugs)
Version: unspecified   Edit
Hardware: PC Windows 7
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: PHP UI CLA
QA Contact:
URL:
Whiteboard:
Keywords:
: 530499 (view as bug list)
Depends on: 530721
Blocks:
  Show dependency tree
 
Reported: 2016-07-27 11:51 EDT by Thierry BLIND CLA
Modified: 2020-05-14 10:17 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Thierry BLIND CLA 2016-07-27 11:51:36 EDT
Hi,
when doing very fast ctrl-z / ctrl-y, I get (rarely) ArrayIndexOutOfBoundsException logged in console.

It's probably related with what I've already seen in https://bugs.eclipse.org/bugs/show_bug.cgi?id=491105#c5

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

eclipse.buildId=4.5.2.M20160212-1500
java.version=1.8.0_66
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=fr_FR
Framework arguments:  -product org.eclipse.epp.package.jee.product
Command-line arguments:  -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.jee.product

org.eclipse.php.core
Error
Tue Jul 26 16:55:34 CEST 2016
null

java.lang.ArrayIndexOutOfBoundsException
	at java.lang.System.arraycopy(Native Method)
	at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:570)
	at java.lang.StringBuffer.append(StringBuffer.java:369)
	at org.eclipse.jface.text.GapTextStore.get(GapTextStore.java:164)
	at org.eclipse.wst.sse.core.internal.text.StructuredDocumentTextStore.get(StructuredDocumentTextStore.java:66)
	at org.eclipse.wst.sse.core.internal.text.BasicStructuredDocument.get(BasicStructuredDocument.java:1210)
	at org.eclipse.dltk.internal.ui.editor.DocumentAdapter.getContents(DocumentAdapter.java:336)
	at org.eclipse.dltk.internal.core.AbstractSourceModule.getSourceAsCharArray(AbstractSourceModule.java:334)
	at org.eclipse.dltk.internal.core.AbstractSourceModule.getContentsAsCharArray(AbstractSourceModule.java:353)
	at org.eclipse.php.internal.core.compiler.ast.parser.AbstractPHPSourceParser.parse(AbstractPHPSourceParser.java:39)
	at org.eclipse.php.internal.core.compiler.ast.parser.PHPSourceParserFactory.parse(PHPSourceParserFactory.java:41)
	at org.eclipse.dltk.core.SourceParserUtil.parse(SourceParserUtil.java:149)
	at org.eclipse.dltk.core.SourceParserUtil.getModuleDeclaration(SourceParserUtil.java:185)
	at org.eclipse.dltk.core.SourceParserUtil.getModuleDeclaration(SourceParserUtil.java:180)
	at org.eclipse.php.internal.core.typeinference.PHPModelUtils.extractNamespaceName(PHPModelUtils.java:199)
	at org.eclipse.php.internal.core.typeinference.PHPModelUtils.getTypes(PHPModelUtils.java:1724)
	at org.eclipse.php.internal.core.typeinference.PHPTypeInferenceUtils.internalGetModelElements(PHPTypeInferenceUtils.java:203)
	at org.eclipse.php.internal.core.typeinference.PHPTypeInferenceUtils.internalGetModelElements(PHPTypeInferenceUtils.java:216)
	at org.eclipse.php.internal.core.typeinference.PHPTypeInferenceUtils.getModelElements(PHPTypeInferenceUtils.java:152)
	at org.eclipse.php.internal.core.typeinference.BindingUtility.getModelElement(BindingUtility.java:341)
	at org.eclipse.php.internal.core.typeinference.BindingUtility.getModelElement(BindingUtility.java:326)
	at org.eclipse.php.internal.core.ast.nodes.DefaultBindingResolver.getModelElements(DefaultBindingResolver.java:272)
	at org.eclipse.php.internal.core.ast.nodes.DefaultBindingResolver.resolveExpressionType(DefaultBindingResolver.java:364)
	at org.eclipse.php.internal.core.ast.nodes.Expression.resolveTypeBinding(Expression.java:110)
	at org.eclipse.php.internal.ui.editor.highlighter.ModelUtils.getMethod(ModelUtils.java:61)
	at org.eclipse.php.internal.ui.editor.highlighters.DeprecatedHighlighting$DeprecatedApply.visit(DeprecatedHighlighting.java:145)
	at org.eclipse.php.internal.core.ast.nodes.MethodInvocation.accept0(MethodInvocation.java:76)
	at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:292)
	at org.eclipse.php.internal.core.ast.nodes.MethodInvocation.childrenAccept(MethodInvocation.java:84)
	at org.eclipse.php.internal.core.ast.nodes.MethodInvocation.accept0(MethodInvocation.java:78)
	at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:292)
	at org.eclipse.php.internal.core.ast.nodes.MethodInvocation.childrenAccept(MethodInvocation.java:84)
	at org.eclipse.php.internal.core.ast.nodes.MethodInvocation.accept0(MethodInvocation.java:78)
	at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:292)
	at org.eclipse.php.internal.core.ast.nodes.Assignment.childrenAccept(Assignment.java:138)
	at org.eclipse.php.internal.core.ast.nodes.Assignment.accept0(Assignment.java:167)
	at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:292)
	at org.eclipse.php.internal.core.ast.nodes.ExpressionStatement.childrenAccept(ExpressionStatement.java:75)
	at org.eclipse.php.internal.core.ast.nodes.ExpressionStatement.accept0(ExpressionStatement.java:69)
	at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:292)
	at org.eclipse.php.internal.core.ast.nodes.Block.childrenAccept(Block.java:94)
	at org.eclipse.php.internal.core.ast.nodes.Block.accept0(Block.java:87)
	at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:292)
	at org.eclipse.php.internal.core.ast.nodes.IfStatement.childrenAccept(IfStatement.java:92)
	at org.eclipse.php.internal.core.ast.nodes.IfStatement.accept0(IfStatement.java:85)
	at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:292)
	at org.eclipse.php.internal.core.ast.nodes.Block.childrenAccept(Block.java:94)
	at org.eclipse.php.internal.core.ast.nodes.Block.accept0(Block.java:87)
	at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:292)
	at org.eclipse.php.internal.core.ast.nodes.IfStatement.childrenAccept(IfStatement.java:92)
	at org.eclipse.php.internal.core.ast.nodes.IfStatement.accept0(IfStatement.java:85)
	at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:292)
	at org.eclipse.php.internal.core.ast.nodes.Block.childrenAccept(Block.java:94)
	at org.eclipse.php.internal.core.ast.nodes.Block.accept0(Block.java:87)
	at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:292)
	at org.eclipse.php.internal.core.ast.nodes.FunctionDeclaration.childrenAccept(FunctionDeclaration.java:128)
	at org.eclipse.php.internal.core.ast.nodes.FunctionDeclaration.accept0(FunctionDeclaration.java:114)
	at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:292)
	at org.eclipse.php.internal.core.ast.nodes.MethodDeclaration.childrenAccept(MethodDeclaration.java:90)
	at org.eclipse.php.internal.core.ast.nodes.MethodDeclaration.accept0(MethodDeclaration.java:82)
	at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:292)
	at org.eclipse.php.internal.core.ast.nodes.Block.childrenAccept(Block.java:94)
	at org.eclipse.php.internal.core.ast.nodes.Block.accept0(Block.java:87)
	at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:292)
	at org.eclipse.php.internal.core.ast.nodes.ClassDeclaration.childrenAccept(ClassDeclaration.java:127)
	at org.eclipse.php.internal.core.ast.nodes.ClassDeclaration.accept0(ClassDeclaration.java:113)
	at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:292)
	at org.eclipse.php.internal.core.ast.nodes.Program.childrenAccept(Program.java:176)
	at org.eclipse.php.internal.core.ast.nodes.Program.accept0(Program.java:169)
	at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:292)
	at org.eclipse.php.internal.ui.editor.highlighter.AbstractSemanticHighlighting.consumes(AbstractSemanticHighlighting.java:99)
	at org.eclipse.php.internal.ui.editor.highlighter.AbstractSemanticHighlighting.consumes(AbstractSemanticHighlighting.java:109)
	at org.eclipse.wst.sse.ui.internal.style.SemanticHighlightingReconciler.reconcile(SemanticHighlightingReconciler.java:136)
	at org.eclipse.wst.sse.ui.internal.reconcile.DocumentRegionProcessor.endProcessing(DocumentRegionProcessor.java:137)
	at org.eclipse.wst.sse.ui.internal.reconcile.DirtyRegionProcessor$BackgroundThread.run(DirtyRegionProcessor.java:697)

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

eclipse.buildId=4.5.2.M20160212-1500
java.version=1.8.0_66
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=fr_FR
Framework arguments:  -product org.eclipse.epp.package.jee.product
Command-line arguments:  -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.jee.product

org.eclipse.php.core
Error
Tue Jul 26 16:51:18 CEST 2016
null

java.lang.ArrayIndexOutOfBoundsException
	at java.lang.System.arraycopy(Native Method)
	at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:570)
	at java.lang.StringBuffer.append(StringBuffer.java:369)
	at org.eclipse.jface.text.GapTextStore.get(GapTextStore.java:164)
	at org.eclipse.wst.sse.core.internal.text.StructuredDocumentTextStore.get(StructuredDocumentTextStore.java:66)
	at org.eclipse.wst.sse.core.internal.text.BasicStructuredDocument.get(BasicStructuredDocument.java:1210)
	at org.eclipse.dltk.internal.ui.editor.DocumentAdapter.getContents(DocumentAdapter.java:336)
	at org.eclipse.dltk.internal.core.AbstractSourceModule.getSourceAsCharArray(AbstractSourceModule.java:334)
	at org.eclipse.dltk.internal.core.AbstractSourceModule.getContentsAsCharArray(AbstractSourceModule.java:353)
	at org.eclipse.php.internal.core.compiler.ast.parser.AbstractPHPSourceParser.parse(AbstractPHPSourceParser.java:39)
	at org.eclipse.php.internal.core.compiler.ast.parser.PHPSourceParserFactory.parse(PHPSourceParserFactory.java:41)
	at org.eclipse.dltk.core.SourceParserUtil.parse(SourceParserUtil.java:149)
	at org.eclipse.dltk.core.SourceParserUtil.getModuleDeclaration(SourceParserUtil.java:185)
	at org.eclipse.dltk.core.SourceParserUtil.getModuleDeclaration(SourceParserUtil.java:180)
	at org.eclipse.php.internal.core.typeinference.PHPModelUtils.extractNamespaceName(PHPModelUtils.java:199)
	at org.eclipse.php.internal.core.typeinference.PHPModelUtils.getTypes(PHPModelUtils.java:1724)
	at org.eclipse.php.internal.core.typeinference.PHPTypeInferenceUtils.internalGetModelElements(PHPTypeInferenceUtils.java:203)
	at org.eclipse.php.internal.core.typeinference.PHPTypeInferenceUtils.getModelElements(PHPTypeInferenceUtils.java:152)
	at org.eclipse.php.internal.core.typeinference.BindingUtility.getModelElement(BindingUtility.java:341)
	at org.eclipse.php.internal.core.typeinference.BindingUtility.getModelElement(BindingUtility.java:326)
	at org.eclipse.php.internal.core.ast.nodes.DefaultBindingResolver.getModelElements(DefaultBindingResolver.java:272)
	at org.eclipse.php.internal.core.ast.nodes.DefaultBindingResolver.resolveExpressionType(DefaultBindingResolver.java:364)
	at org.eclipse.php.internal.core.ast.nodes.Expression.resolveTypeBinding(Expression.java:110)
	at org.eclipse.php.internal.ui.editor.highlighter.ModelUtils.getMethod(ModelUtils.java:61)
	at org.eclipse.php.internal.ui.editor.highlighters.DeprecatedHighlighting$DeprecatedApply.visit(DeprecatedHighlighting.java:145)
	at org.eclipse.php.internal.core.ast.nodes.MethodInvocation.accept0(MethodInvocation.java:76)
	at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:292)
	at org.eclipse.php.internal.core.ast.nodes.ExpressionStatement.childrenAccept(ExpressionStatement.java:75)
	at org.eclipse.php.internal.core.ast.nodes.ExpressionStatement.accept0(ExpressionStatement.java:69)
	at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:292)
	at org.eclipse.php.internal.core.ast.nodes.Block.childrenAccept(Block.java:94)
	at org.eclipse.php.internal.core.ast.nodes.Block.accept0(Block.java:87)
	at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:292)
	at org.eclipse.php.internal.core.ast.nodes.ForEachStatement.childrenAccept(ForEachStatement.java:107)
	at org.eclipse.php.internal.core.ast.nodes.ForEachStatement.accept0(ForEachStatement.java:96)
	at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:292)
	at org.eclipse.php.internal.core.ast.nodes.Block.childrenAccept(Block.java:94)
	at org.eclipse.php.internal.core.ast.nodes.Block.accept0(Block.java:87)
	at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:292)
	at org.eclipse.php.internal.core.ast.nodes.FunctionDeclaration.childrenAccept(FunctionDeclaration.java:128)
	at org.eclipse.php.internal.core.ast.nodes.FunctionDeclaration.accept0(FunctionDeclaration.java:114)
	at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:292)
	at org.eclipse.php.internal.core.ast.nodes.MethodDeclaration.childrenAccept(MethodDeclaration.java:90)
	at org.eclipse.php.internal.core.ast.nodes.MethodDeclaration.accept0(MethodDeclaration.java:82)
	at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:292)
	at org.eclipse.php.internal.core.ast.nodes.Block.childrenAccept(Block.java:94)
	at org.eclipse.php.internal.core.ast.nodes.Block.accept0(Block.java:87)
	at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:292)
	at org.eclipse.php.internal.core.ast.nodes.ClassDeclaration.childrenAccept(ClassDeclaration.java:127)
	at org.eclipse.php.internal.core.ast.nodes.ClassDeclaration.accept0(ClassDeclaration.java:113)
	at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:292)
	at org.eclipse.php.internal.core.ast.nodes.Program.childrenAccept(Program.java:176)
	at org.eclipse.php.internal.core.ast.nodes.Program.accept0(Program.java:169)
	at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:292)
	at org.eclipse.php.internal.ui.editor.highlighter.AbstractSemanticHighlighting.consumes(AbstractSemanticHighlighting.java:99)
	at org.eclipse.php.internal.ui.editor.highlighter.AbstractSemanticHighlighting.consumes(AbstractSemanticHighlighting.java:109)
	at org.eclipse.wst.sse.ui.internal.style.SemanticHighlightingReconciler.reconcile(SemanticHighlightingReconciler.java:136)
	at org.eclipse.wst.sse.ui.internal.reconcile.DocumentRegionProcessor.endProcessing(DocumentRegionProcessor.java:137)
	at org.eclipse.wst.sse.ui.internal.reconcile.DirtyRegionProcessor$BackgroundThread.run(DirtyRegionProcessor.java:697)
Comment 1 Thierry BLIND CLA 2018-01-23 09:53:12 EST
Hi,
sadly still present, even after the new PHP reconciler patch (https://git.eclipse.org/r/#/c/115761/) was merged:

Exception:java.lang.ArrayIndexOutOfBoundsException: null
	 at java.lang.System.arraycopy(System.java:-2)
	 at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:597)
	 at java.lang.StringBuffer.append(StringBuffer.java:367)
	 at org.eclipse.jface.text.GapTextStore.get(GapTextStore.java:161)
	 at org.eclipse.wst.sse.core.internal.text.StructuredDocumentTextStore.get(StructuredDocumentTextStore.java:66)
	 at org.eclipse.wst.sse.core.internal.text.BasicStructuredDocument.get(BasicStructuredDocument.java:1210)
	 at org.eclipse.dltk.internal.ui.editor.DocumentAdapter.getContents(DocumentAdapter.java:397)
	 at org.eclipse.dltk.internal.core.AbstractSourceModule.getSourceAsCharArray(AbstractSourceModule.java:336)
	 at org.eclipse.dltk.internal.core.AbstractSourceModule.getContentsAsCharArray(AbstractSourceModule.java:355)
	 at org.eclipse.php.internal.core.compiler.ast.parser.AbstractPHPSourceParser.parse(AbstractPHPSourceParser.java:40)
	 at org.eclipse.php.internal.core.compiler.ast.parser.PHPSourceParserFactory.parse(PHPSourceParserFactory.java:36)
	 at org.eclipse.dltk.core.SourceParserUtil.parse(SourceParserUtil.java:149)
	 at org.eclipse.dltk.core.SourceParserUtil.getModuleDeclaration(SourceParserUtil.java:185)
	 at org.eclipse.dltk.core.SourceParserUtil.getModuleDeclaration(SourceParserUtil.java:180)
	 at org.eclipse.php.internal.core.typeinference.PHPModelUtils.extractNamespaceName(PHPModelUtils.java:241)
	 at org.eclipse.php.internal.core.typeinference.PHPModelUtils.getTypes(PHPModelUtils.java:1881)
	 at org.eclipse.php.internal.core.typeinference.PHPTypeInferenceUtils.internalGetModelElements(PHPTypeInferenceUtils.java:203)
	 at org.eclipse.php.internal.core.typeinference.PHPTypeInferenceUtils.getModelElements(PHPTypeInferenceUtils.java:152)
	 at org.eclipse.php.internal.core.typeinference.BindingUtility.getModelElement(BindingUtility.java:337)
	 at org.eclipse.php.internal.core.typeinference.BindingUtility.getModelElement(BindingUtility.java:322)
	 at org.eclipse.php.core.ast.nodes.DefaultBindingResolver.getModelElements(DefaultBindingResolver.java:275)
	 at org.eclipse.php.core.ast.nodes.DefaultBindingResolver.resolveExpressionType(DefaultBindingResolver.java:374)
	 at org.eclipse.php.core.ast.nodes.Expression.resolveTypeBinding(Expression.java:110)
	 at org.eclipse.php.internal.ui.editor.highlighter.ModelUtils.getMethod(ModelUtils.java:61)
	 at org.eclipse.php.internal.ui.editor.highlighters.DeprecatedHighlighting$DeprecatedApply.visit(DeprecatedHighlighting.java:145)
	 at org.eclipse.php.core.ast.nodes.MethodInvocation.accept0(MethodInvocation.java:77)
	 at org.eclipse.php.core.ast.nodes.ASTNode.accept(ASTNode.java:294)
	 at org.eclipse.php.core.ast.nodes.ExpressionStatement.childrenAccept(ExpressionStatement.java:77)
	 at org.eclipse.php.core.ast.nodes.ExpressionStatement.accept0(ExpressionStatement.java:70)
	 at org.eclipse.php.core.ast.nodes.ASTNode.accept(ASTNode.java:294)
	 at org.eclipse.php.core.ast.nodes.Block.childrenAccept(Block.java:96)
	 at org.eclipse.php.core.ast.nodes.Block.accept0(Block.java:88)
	 at org.eclipse.php.core.ast.nodes.ASTNode.accept(ASTNode.java:294)
	 at org.eclipse.php.core.ast.nodes.IfStatement.childrenAccept(IfStatement.java:94)
	 at org.eclipse.php.core.ast.nodes.IfStatement.accept0(IfStatement.java:86)
	 at org.eclipse.php.core.ast.nodes.ASTNode.accept(ASTNode.java:294)
	 at org.eclipse.php.core.ast.nodes.Block.childrenAccept(Block.java:96)
	 at org.eclipse.php.core.ast.nodes.Block.accept0(Block.java:88)
	 at org.eclipse.php.core.ast.nodes.ASTNode.accept(ASTNode.java:294)
	 at org.eclipse.php.core.ast.nodes.FunctionDeclaration.childrenAccept(FunctionDeclaration.java:132)
	 at org.eclipse.php.core.ast.nodes.FunctionDeclaration.accept0(FunctionDeclaration.java:117)
	 at org.eclipse.php.core.ast.nodes.ASTNode.accept(ASTNode.java:294)
	 at org.eclipse.php.core.ast.nodes.MethodDeclaration.childrenAccept(MethodDeclaration.java:92)
	 at org.eclipse.php.core.ast.nodes.MethodDeclaration.accept0(MethodDeclaration.java:83)
	 at org.eclipse.php.core.ast.nodes.ASTNode.accept(ASTNode.java:294)
	 at org.eclipse.php.core.ast.nodes.Block.childrenAccept(Block.java:96)
	 at org.eclipse.php.core.ast.nodes.Block.accept0(Block.java:88)
	 at org.eclipse.php.core.ast.nodes.ASTNode.accept(ASTNode.java:294)
	 at org.eclipse.php.core.ast.nodes.ClassDeclaration.childrenAccept(ClassDeclaration.java:129)
	 at org.eclipse.php.core.ast.nodes.ClassDeclaration.accept0(ClassDeclaration.java:114)
	 at org.eclipse.php.core.ast.nodes.ASTNode.accept(ASTNode.java:294)
	 at org.eclipse.php.core.ast.nodes.Program.childrenAccept(Program.java:188)
	 at org.eclipse.php.core.ast.nodes.Program.accept0(Program.java:180)
	 at org.eclipse.php.core.ast.nodes.ASTNode.accept(ASTNode.java:294)
	 at org.eclipse.php.internal.ui.editor.highlighter.AbstractSemanticHighlighting.consumes(AbstractSemanticHighlighting.java:98)
	 at org.eclipse.php.internal.ui.editor.highlighter.AbstractSemanticHighlighting.consumes(AbstractSemanticHighlighting.java:109)
	 at org.eclipse.wst.sse.ui.internal.style.SemanticHighlightingReconciler.reconcile(SemanticHighlightingReconciler.java:127)
	 at org.eclipse.wst.sse.ui.internal.reconcile.DocumentRegionProcessor.endProcessing(DocumentRegionProcessor.java:137)
	 at org.eclipse.wst.sse.ui.internal.reconcile.DirtyRegionProcessor$BackgroundThread.run(DirtyRegionProcessor.java:697)
Comment 2 Dawid Pakula CLA 2018-01-27 15:21:06 EST
As I see this problem has been reported on SSE by Natalia: https://bugs.eclipse.org/bugs/show_bug.cgi?id=369559
Comment 3 Dawid Pakula CLA 2018-01-27 15:45:39 EST
But real problem is how BindingResolver works. It can't play with realWorking copy, see for example bug 438096 and bug 438091.

It't problem with most of our internal tools:
1. Binding tools work with Compiler AST, and keep it working copy synced with DOM AST
2. It internally use PHPTypeInferenceUtils, where connection is lost because most of our tools require ISourceModule / IContext / IResource.
3. These tools use others off course (dependency hell)
4. When any of these tools need ASTNode (most of them require it off course), they call SourceParserUtil.
5. SourceParserUtil detects document change, trying to reconcile ...
6. Huston we have a problem... ;)
Comment 4 Dawid Pakula CLA 2018-01-31 18:24:50 EST
*** Bug 530499 has been marked as a duplicate of this bug. ***
Comment 5 Dawid Pakula CLA 2018-02-01 03:39:24 EST
To fix this I have to change internal APIs a lot and during work I'll touch at least bug 438100  bug 438096 and bug 438091. Also to do it in reasonable time I'll drop backward compatibility. API's are internal so I think I can do this during 5.3 phase. After patch memory and cpu usage will drop.

My plan:
Introduce IPHPModelAccess, implementation should take care of:
1. Accessing to Index
2. Accessing to AST
3. Keeping correct search scope
4. His sub class can cache AST and queries to index (like IPHPModelAccess but based on search scope).

IPHPModelAccess have to be used internally by all inference/assist/model/ast tools. If tool need information from other tool, IPHPModelAccess have to be forwarded, directly or for example by IContext.

Later we can move IPHPModelAccess to API and introduce public factories.

Do you have any objections?
Comment 6 Thierry BLIND CLA 2018-02-01 06:30:07 EST
Hi Dawid,
no objections, that's great, it should be fixed sooner or later ;) I'll follow your progression of the gerrit patch(es) ;)

Thierry.