IBM Support

SOC4 Abends in RBD due to migration from version 8.5 to 9.5

White Papers


Abstract

Venkatasuresh Kothuri
Project Manager
Venkata.SK@hcl.com


This paper details the possible issues that occur during the migration of RBD from version 8.5 to 9.5 and possible solutions to those issues.

Content

Problem 1 – SOC4 Abends in ELAMEM:
Various SOC4 / SOC7 abends occur after migrating RBD from version 8.5 to 9.5.
Impacted Users:
Applications generated using RBD 8.5 to COBOL running on z/OS and VSE, with PTF UK94570 and UK95592 installed in the runtime.
Root Cause:
The generated COBOL code from EGL version 8.5 had a flaw in the logic related to called programs and what level of local heap variables must be released. When an EGL program was called during the exit process, it issued a call to the runtime to release heap memory variables. These variables were only supposed to be variables local to the called program, but it erroneously provided to the runtime, a level number that was too low. This caused other local heap variables from the higher-level calling programs to be released as well, which otherwise should not have been released. Even though this is a problem, the application would execute normally until the next garbage collection. At that point, the storage for variables that were erroneously released is freed. Further reference to these variables could cause a memory error.
This problem was not seen until PTF UK94570 and UK95592 was applied in Z/OS & Z/VSE to the runtime. In this PTF, ELAMEM was redesigned and it exposed the problem.
Solution:
There were multiple solutions to resolve this issue. Following are the solutions according to their priority.

Rational Cobol Runtime Before the PTF's UK94570 (z/OS) / UK95592 (z/VSE) Installed

Rational Cobol Runtime after the PTF's UK94570 (z/OS) / UK95592 (z/VSE) Installed

RBD 8.5 Generated Programs

Running okay (Even though the programs work fine, the original problem of releasing local variables memory belonging to higher-level programs is still persistent. During Garbage collection, issues may arise for long-running transactions)

Regenerate all RBD 8.5 programs to RBD 9.5.            

                          (OR)

Apply the ZAP against the module ELAMEM. ZAP is provided to the customer upon request.

RBD 9.5 Generated Programs

Running okay (Even though the programs work fine, the original problem of releasing local variables memory belonging to higher-level programs is still persistent. During Garbage collection, issues may arise for long-running transactions).

   

Running okay

  1. Regenerate all the RBD 8.5 generated programs in RBD 9.5 environment. This solution is highly recommended since it avoids all the major issues related to memory.
  2. Apply the ZAP provided by RBD team against the RBD 9.5 COBOL runtime environment. ZAP is provided to the customer upon request.
    The provided ZAP must be applied against the heap manager program (ELAMEM) that essentially disables the garbage collection. This is a viable workaround in most cases. Without garbage collection, the amount of memory allocated continuously grows, but this does not matter if there is enough memory available. This may be an issue only for long-running applications.
Conclusion:
This white paper discusses the issues that arise during the migration of RBD 8.5 to RBD 9.5. Based on the issue and the environment of the customer, they can select a suitable solution.

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSMQ79","label":"Rational Business Developer"},"Component":"","Platform":[{"code":"PF035","label":"z\/OS"}],"Version":"9.5","Edition":"","Line of Business":{"code":"LOB35","label":"Mainframe SW"}}]

Document Information

Modified date:
25 November 2019

UID

ibm11097409