IBM Support

PH71932: CALL TO A COBOL PROGRAM CAUSES AN ABEND WHEN ITS ALIASES IS DELETED FROM THE CEEPIPI TABLE

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • When a COBOL program is entered into the CEEPIPI table under
    different aliases, and when one of those aliases is deleted, a
    subsequent call to the COBOL program with the secondary alias
    leads to an abend.
    

Local fix

  • N/A
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED: Users of Enterprise COBOL 5 and later        *
    *                 releases running aliased programs            *
    *                 with the CEEPIPI interface.                  *
    *                                                              *
    *                 Users of IMS or tools that submit            *
    *                 the IMS UPDATE PGM(REFRESH) command and      *
    *                 run transactions using aliased               *
    *                 COBOL 5/6 programs through the CEEPIPI       *
    *                 interface.                                   *
    ****************************************************************
    * PROBLEM DESCRIPTION: An application (transaction) is         *
    *                      terminated with an abend code or        *
    *                      misbehaves because an unexpected        *
    *                      program or code flow is executed.       *
    *                                                              *
    *                      When a system dump is taken and         *
    *                      the CEEPIPI table entries are inspected *
    *                      using IPCS via VERBEXIT LEDATA 'ALL',   *
    *                      identical entry points and function     *
    *                      pointers are found across distinct      *
    *                      table entries.                          *
    *                                                              *
    *                      For example, using IPCS, the following  *
    *                      CEEPIPI table entry information         *
    *                      shows that programs X1 and X2 share     *
    *                      the same Entry Point (BCBF7000) and     *
    *                      function pointer (BCF05048), indicating *
    *                      aliased programs:                       *
    *                                                              *
    *                      ...                                     *
    *                      CEEPIPI Table Index 1                   *
    *                       Routine Name  = X1                     *
    *                       Routine Type  = COBOLV5+               *
    *                       Routine Entry Point  = BCBF7000        *
    *                       Routine Function Pointer  = BCF05048   *
    *                                                              *
    *                      CEEPIPI Table Index 2                   *
    *                       Routine Name  = X2                     *
    *                       Routine Type  = COBOLV5+               *
    *                       Routine Entry Point  = BCBF7000        *
    *                       Routine Function Pointer  = BCF05048   *
    *                       ...                                    *
    ****************************************************************
    * RECOMMENDATION: Install the provided PTF.                    *
    ****************************************************************
    The problem can be reproduced as follows:
    
    1) Create a COBOL 5/6 release program, namely X1.
    2) Create another program (X2) aliased to X1 using
       the Binder control statement at link-edit:
         ...
         ALIAS X2
         NAME  X1
         ...
    3) Add X1 and X2 to the CEEPIPI table (add_entry).
    4) Delete X2 (delete_entry).
    5) Call X1 (call_sub).
    
    In step 3, when X1 and X2 are added to the table, they share the
    same function pointer, which refers to an internal structure
    describing the entry point and attributes of the program.
    
    In step 4, the deletion of X2 frees the internal structure
    to which the function pointer refers.
    
    In step 5, calling X1 can result in an abend or execute an
    unexpected program because the function pointer still points to
    the freed internal structure, which may have been overwritten
    with unpredictable data by another process.
    
    COB0501T/K COB0502T/K COB0601T/K COB0602T/K COB0603T/K
    COB0604T/K COB0605T/K
    

Problem conclusion

  • The COBOL Runtime logic has been fixed. In the scenario where
    X1 and X2 are aliased and X1 is called after the deletion of X2
    within CEEPIPI, the call to X1 completes successfully.
    
    The COBOL Runtime now detects requests to create or delete a
    COBOL function pointer via the LE Event Code 40
    within the CEEPIPI environment. The COBOL Runtime maintains a
    usage count for these requests using a newly introduced internal
    counter. The function pointer is retained until the counter
    reaches 0 and all other internal criteria are satisfied.
    
    Under the new logic, the COBOL Runtime also evaluates the entry
    point address to detect aliases, as a target program and its
    aliases share the same entry point address. The updated counter
    and per-module metadata are retained within COBOL Runtime
    internal control blocks.
    

Temporary fix

Comments

APAR Information

  • APAR number

    PH71932

  • Reported component name

    LE ENT COBOL LI

  • Reported component ID

    568819812

  • Reported release

    7F0

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2026-06-24

  • Closed date

    2026-09-29

  • Last modified date

    2026-10-03

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

    UO09745 UO09746 UO09747

Modules/Macros

  • IGZBXITA IGZCCCHK IGZCER4  IGZCEV4  IGZCFREM IGZCGETI IGZCGETM
    IGZCJNI2 IGZCLOAD IGZGLUE  IGZLLIBV IGZQR004 IGZRIDT  IGZRTMON
    IGZSETRT IGZTRUE  IGZXAPI  IGZXCA31 IGZXCDA  IGZXD24  IGZXDMR
    IGZXJNI2 IGZXLPIO IGZXLPKA IGZXLPKB IGZXLPKC IGZXLPKD IGZXLPKE
    IGZXLPKF IGZXLPKG IGZXPK2
    

Fix information

  • Fixed component name

    LE ENT COBOL LI

  • Fixed component ID

    568819812

Applicable component levels

  • R7D0 PSY UO09745

       UP26/10/03 I 1000

  • R7E0 PSY UO09746

       UP26/10/03 I 1000

  • R7F0 PSY UO09747

       UP26/10/03 I 1000

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.

[{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SS6SG3","label":"Enterprise COBOL for z\/OS"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7F0","Line of Business":{"code":"LOB70","label":"Z TPS"}}]

Document Information

Modified date:
03 October 2026