Details
-
Bug
-
Resolution: Done
-
Major
-
1.0.2
-
None
Description
The control flow graph algorithm employed during code transformation to associate try catch blocks with any synchronized blocks in which they are embedded is incorrect. The problem manifests with a sequence of error printouts during transformation of the form:
invalid open enters block for block Lnnnnnnn at index i
invalid open enters instruction index for block Lnnnnnnn at index i
where nnnnnnn is a digit sequence and i an integer.
This has not been observed to affect the validity of the code transformation.
The problem is because the algorithm has been coded incorrectly. When monitorenter locations are propagated from one block to the next they are passed in reverse order, causing the algorithm to match the wrong location when it subsequently encounters a monitorexit.