APAR status
Closed as program error.
Error description
Error Message: As this is a silent performance issue, by default no messages will be generated. The issue can be diagnosed by using the following JIT command line option to generate a verbose log: -Xjit:verbose={compile*},vlog=vlog.txt The verbose log will show that many methods fail compilations repeatedly with an error code of compilationInterrupted. Example: (warm) Compiling java/lang/J9VMInternals.prepare(Ljava/lang/Class;)V t=30 ! java/lang/J9VMInternals.prepare(Ljava/lang/Class;)V code=0xFFFFFFFFFFFFFFFF compilationInterrupted (warm) Compiling java/lang/J9VMInternals.prepare(Ljava/lang/Class;)V t=30 ! java/lang/J9VMInternals.prepare(Ljava/lang/Class;)V code=0xFFFFFFFFFFFFFFFF compilationInterrupted (warm) Compiling java/lang/J9VMInternals.prepare(Ljava/lang/Class;)V t=30 ! java/lang/J9VMInternals.prepare(Ljava/lang/Class;)V code=0xFFFFFFFFFFFFFFFF compilationInterrupted (warm) Compiling java/lang/J9VMInternals.prepare(Ljava/lang/Class;)V t=30 ! java/lang/J9VMInternals.prepare(Ljava/lang/Class;)V code=0xFFFFFFFFFFFFFFFF compilationInterrupted. . Stack Trace: N/A .
Local fix
A possible workaround is to reduce the optimization level of affected methods to 'cold' or even noOpt. Example: -Xjit:{myMethod}(optLevel=cold) This approach my not be feasible if very many methods are affected. Also, please note that this approach is likely to decrease performance as well, although to a lesser degree.
Problem summary
The problem is caused by the JIT which uses an incorrect error code. When GC unloads classes the compilation in progress is aborted, but it will be retried. The error seen in the verbose log is 'compilationInterrupted'. Class unloading being a rather rare event the compilation retrial is expected to succeed. This is normal operation and isolated compilation failures with an error code of 'compilationInterrupted' are benign. In the problematic case the method was too complex for the JIT to compile at the desired optimization level. In such cases an appropriate error code is used and the JIT will retry the compilation at a lower optimization level. Due to a bug, an incorrect error code was used and the JIT was retrying the compilation at the same optimization level causing the compilation of the method to fail repeatedly.
Problem conclusion
This defect will be fixed in: 6.0.0 SR10 . The JIT was changed to use the appropriate error code when a JIT compilation cannot be performed due to high complexity . To obtain the fix: Install build 20110523 or later
Temporary fix
Comments
APAR Information
APAR number
IV02776
Reported component name
JIT
Reported component ID
620700124
Reported release
600
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2011-07-05
Closed date
2011-07-11
Last modified date
2011-07-11
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fix information
Fixed component name
JIT
Fixed component ID
620700124
Applicable component levels
R600 PSY
UP
[{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSC9HBA","label":"Just In Time (JIT) Compiler"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"6.0","Edition":"","Line of Business":{"code":"","label":""}}]
Document Information
Modified date:
11 July 2011