IV88620: JAVA 7 MULTI-TYPE EXCEPTION CATCH FAILS TO EXECUTE THE FINALLY B LOCK
Closed as program error.
Error Message: In a JIT-compiled Java method, a finally block is not executed when: 1. A multi-type catch block is used to catch more than one type of exceptions. 2. An exception is thrown from the try block that matches anything but the first type in the multi-type catch. 3. An exception is thrown from the catch block. It can be a new exception, or the caught (re-thrown) exception. 4. Some sort of control flow (i.e. if/else blocks) exist in the catcher. . Stack Trace: N/A . This APAR is very similar to APAR IV68110, but in this case the catch block must be more complex resulting in more then one block of code existing in the catcher and at least one of those bocks must be only conditionally executed.
The issue can be avoided by rewriting the multi-type catch block into traditional single-type catch blocks. If it is not feasible to rewrite the code, the JIT compiler can be disabled with the -Xint option.
The JIT compiler incorrectly processes multi-catch blocks that are themselves inside a try region (or have finally clauses, which are the same internally). An internal data structure neglects to record the proper control flow information for all bocks of code within the second and subsequent catch types listed
The JIT compiler has been fixed to generate correct control flow for all blocks of code within multi-type catch blocks. . This APAR will be fixed in the following Java Releases: 7 SR9 FP60 (22.214.171.124) 7 R1 SR3 FP60 (126.96.36.199) 8 SR3 FP12 (188.8.131.52) . Contact your IBM Product's Service Team for these Service Refreshes and Fix Packs. For those running stand-alone, information about the available Service Refreshes and Fix Packs can be found at: https://www.ibm.com/developerworks/java/jdk/
Reported component name
Reported component ID
NoSpecatt / Xsystem
Last modified date
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fixed component name
Fixed component ID
Applicable component levels