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

Bug 342465

Summary: 'Processing Dirty Regions' pop-up error message when certain PHP code is in the editor.
Product: z_Archived Reporter: Dan Small <s.j.small>
Component: PDTAssignee: PHP UI <php.ui-inbox>
Status: CLOSED FIXED QA Contact: Ilina Stefanova <ilina.s>
Severity: minor    
Priority: P1 CC: kalin.a
Version: unspecified   
Target Milestone: ---   
Hardware: Other   
OS: Linux   
Whiteboard:

Description Dan Small CLA 2011-04-11 12:23:30 EDT
Build Identifier: M20110210-1200

The following line of PHP code:
${'prefix'.$i}($line);
generates a pop up window with the text 'Processing Dirty Regions' and the details 'An internal error occurred during: "Processing Dirty Regions".
java.lang.NullPointerException' whenever focus is given to the file in the editor.
The following code does not give the error and works exactly the same: 
call_user_func(${'prefix'.$i}, $line);

I am reading a variable number human readable expressions from a configuration file (XML file), using PHP create_function to create a function, in memory, to process the expression, using PHP variable variables to label the functions then using this code to call the functions many thousands of times.

The pop-up is a distraction as it appears every time focus is given to the file within the editor. It even happens when toggling breakpoints when debugging. The first line of code is faster than the second so it would be better to use the first line I provided.

It occurs on Helios with PHP Development Tools (PDT) SDK Feature	2.2.1.v20101001-2300-53184QAN4JBQgLYPWMLcXn6Na9Od but not Galileo 3.5 with PHP Development Tools (PDT) SDK Feature 2.1.1.

The error log entry is below:
!ENTRY org.eclipse.core.jobs 4 2 2011-04-11 16:33:14.912
!MESSAGE An internal error occurred during: "Processing Dirty Regions".
!STACK 0
java.lang.NullPointerException
        at org.eclipse.php.internal.core.model.PerFileModelAccessCache.getGlobalFunctions(PerFileModelAccessCache.java:151)
        at org.eclipse.php.internal.ui.editor.highlighters.DeprecatedHighlighting$DeprecatedApply.visit(DeprecatedHighlighting.java:93)
        at org.eclipse.php.internal.core.ast.nodes.FunctionInvocation.accept0(FunctionInvocation.java:78)
        at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:275)
        at org.eclipse.php.internal.core.ast.nodes.ExpressionStatement.childrenAccept(ExpressionStatement.java:73)
        at org.eclipse.php.internal.core.ast.nodes.ExpressionStatement.accept0(ExpressionStatement.java:67)
        at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:275)
        at org.eclipse.php.internal.core.ast.nodes.Program.childrenAccept(Program.java:195)
        at org.eclipse.php.internal.core.ast.nodes.Program.accept0(Program.java:188)
        at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:275)
        at org.eclipse.php.internal.ui.editor.highlighter.AbstractSemanticHighlighting.consumes(AbstractSemanticHighlighting.java:90)
        at org.eclipse.php.internal.ui.editor.highlighter.AbstractSemanticHighlighting.consumes(AbstractSemanticHighlighting.java:99)
        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:119)
        at org.eclipse.wst.sse.ui.internal.reconcile.DirtyRegionProcessor.run(DirtyRegionProcessor.java:682)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

!ENTRY org.eclipse.core.jobs 4 2 2011-04-11 16:40:50.521
!MESSAGE An internal error occurred during: "Processing Dirty Regions".
!STACK 0
java.lang.NullPointerException
        at org.eclipse.php.internal.core.model.PerFileModelAccessCache.getGlobalFunctions(PerFileModelAccessCache.java:151)
        at org.eclipse.php.internal.ui.editor.highlighters.DeprecatedHighlighting$DeprecatedApply.visit(DeprecatedHighlighting.java:93)
        at org.eclipse.php.internal.core.ast.nodes.FunctionInvocation.accept0(FunctionInvocation.java:78)
        at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:275)
        at org.eclipse.php.internal.core.ast.nodes.InfixExpression.childrenAccept(InfixExpression.java:189)
        at org.eclipse.php.internal.core.ast.nodes.InfixExpression.accept0(InfixExpression.java:183)
        at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:275)
        at org.eclipse.php.internal.core.ast.nodes.IfStatement.childrenAccept(IfStatement.java:95)
        at org.eclipse.php.internal.core.ast.nodes.IfStatement.accept0(IfStatement.java:89)
        at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:275)
        at org.eclipse.php.internal.core.ast.nodes.Block.childrenAccept(Block.java:97)
        at org.eclipse.php.internal.core.ast.nodes.Block.accept0(Block.java:90)
        at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:275)
        at org.eclipse.php.internal.core.ast.nodes.ForStatement.childrenAccept(ForStatement.java:128)
        at org.eclipse.php.internal.core.ast.nodes.ForStatement.accept0(ForStatement.java:113)
        at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:275)
        at org.eclipse.php.internal.core.ast.nodes.Block.childrenAccept(Block.java:97)
        at org.eclipse.php.internal.core.ast.nodes.Block.accept0(Block.java:90)
        at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:275)
        at org.eclipse.php.internal.core.ast.nodes.ForEachStatement.childrenAccept(ForEachStatement.java:108)
        at org.eclipse.php.internal.core.ast.nodes.ForEachStatement.accept0(ForEachStatement.java:97)
        at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:275)
        at org.eclipse.php.internal.core.ast.nodes.Program.childrenAccept(Program.java:195)
        at org.eclipse.php.internal.core.ast.nodes.Program.accept0(Program.java:188)
        at org.eclipse.php.internal.core.ast.nodes.ASTNode.accept(ASTNode.java:275)
        at org.eclipse.php.internal.ui.editor.highlighter.AbstractSemanticHighlighting.consumes(AbstractSemanticHighlighting.java:90)
        at org.eclipse.php.internal.ui.editor.highlighter.AbstractSemanticHighlighting.consumes(AbstractSemanticHighlighting.java:99)
        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:119)
        at org.eclipse.wst.sse.ui.internal.reconcile.DirtyRegionProcessor.run(DirtyRegionProcessor.java:682)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

Reproducible: Always

Steps to Reproduce:
1. Open a file containing the code or return focus to a file containing the code.
Comment 1 Zhongwei Zhao CLA 2011-05-11 00:20:18 EDT
fixed
Comment 2 Kalin CLA 2011-07-28 03:48:22 EDT
Verified.
Closing...