A fix is available
APAR status
Closed as program error.
Error description
From the dump we can see that the system T8 in the JVM is acquired by the XXXX task. The thread then gets stuck getting into the JVM because the entire JVM is locked due to heap and GC issues. The CONL task tries to do a SET JVMSERVER DISABLED PURGE command. This acquires the JVMSRVLK in DFHSJJS and then goes through each active task issuing purges against them. The purge goes to DFHXMIQ and then to DFHSJTH because the target task is currently running in the JVM. DFHSJTH needs to get the system T8. The TCB is allocated to the XXXX task so the CONL task has has to suspend. The JVMSRVLK should be released before waiting on JVMTHRED but DFHSJTH did not detect that the lock was already held. This meant that the JVMTHRED wait was issued still holding the lock. That caused all the other Java tasks to back up waiting for the lock. ADDITIONAL KEYWORDS: CONL JVMSRVLK JVMTHRED DFHSJTH KIXREVxxx
Local fix
Problem summary
**************************************************************** * USERS AFFECTED: All CICS Users. * **************************************************************** * PROBLEM DESCRIPTION: A task suspends on the system thread * * (JVMTHRED) whilst holding the JVM * * server lock (JVMSRVLK). * * This causes all other tasks requiring * * the JVMSRVLK to suspend. * **************************************************************** A SET TASK PURGE is issued against a Java task, this operation requires the system T8 for the JVMSERVER that the Java task is running in. The system T8 is obtained but this task then gets held up, for example if Garbage Collection has control of the JVM at this time. A SET JVMSERVER PURGE command is then issued to PURGE the JVMSERVER, this task obtains the JVMSRVLK exclusively and then attempts to purge each task that is using the JVMSERVER. The system T8 is required for the purge so this task tries to obtain it. The system T8 however is still allocated to the SET TASK PURGE request that is currently held up by Garbage Collection. The SET JVMSERVER task now suspends on JVMTHRED and waits for the system T8 to become available. This wait is issued without releasing the JVMSRVLK. As a result, all other tasks requiring the JVMSRVLK suspend.
Problem conclusion
CICS code has been updated to ensure that the JVMSRVLK is released before suspending on JVMTHRED.
Temporary fix
Comments
APAR Information
APAR number
PH30759
Reported component name
CICS TS Z/OS V5
Reported component ID
5655Y0400
Reported release
100
Status
CLOSED PER
PE
NoPE
HIPER
YesHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2020-10-21
Closed date
2020-12-16
Last modified date
2021-01-04
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
UI73178 UI73180 UI73181 UI73182
Modules/Macros
DFHSJDM DFHSJDUF DFHSJJS DFHSJST DFHSJTH
Fix information
Fixed component name
CICS TS Z/OS V5
Fixed component ID
5655Y0400
Applicable component levels
R000 PSY UI73182
UP20/12/18 P F012 ¢
R100 PSY UI73181
UP20/12/17 P F012 ¢
R200 PSY UI73180
UP20/12/17 P F012 ¢
R300 PSY UI73178
UP20/12/17 P F012 ¢
Fix is available
Select the PTF appropriate for your component level. You will be required to sign in. Distribution on physical media is not available in all countries.
[{"Line of Business":{"code":"LOB35","label":"Mainframe SW"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSGMGV","label":"CICS Transaction Server"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"5.4"}]
Document Information
Modified date:
05 January 2021