IBM Support

OA48273: ABEND0C4 PIC3B REGISTER 15 R15 DIRTY HIGH HALF AMODE64 after STORAGE OBTAIN - unpredictable results 15/07/14 PTF PECHANGE

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • With the apply of apar OA46291 (ptf UA90976),
    IAXVP was compiled with a different option.  This option
    resulted in an instruction that leaves register 15 content of
    00000010_yyyyyyyy, where previously it resulted in the high half
    of the register being cleared.  The x'10' in the high half is
    then used by the caller, unexpectedly and an Abend0C4-3B PIC3B
    results when in AMODE(64).
    
    This happened across a Storage Obtain/getmain call and the
    service documents that bits 0-31 of register 15 are
    unpredictable.  It is good programming practice to make sure
    your register is cleared before you use it.
    
    Depending upon the reaction of the code/subsystem/exit that
    encounters the dirty Reg15, unpredictable results may occur.
    While an ABEND0C4 Pic3B is the more common result, other
    situations may occur.  For example, IRLM, which received
    the dirty Reg15 checked it for the Return code.  It was doing a
    Conditional Getmain and thought that the Getmain was
    unsuccessful (when in reality it actually was successful), so it
    proceeded to reattempt the Getmain only to get the same results.
    Without limits in place, this Getmain was issued
    repeatedly until storage in the address space is exhausted with
    an ABEND878-10, causing the job or address space to crash.
    
    If any code expects zeroes in the high half of a register, the
    results of what may happen when the high half is not zeroes then
    becomes unpredictable, based on how the application/job behaves.
    
    Additional keywords: R2964/K   D/T2964
    
    00000010
    ERBMFCLS
    BPXLKLCP
    OEM software
    AMODE64
    
    Verification Steps:
    1. APAR OA46291 is applied (ptf UA90976 )
       In a dump:
       ip verbx nucmap
       f IAXVP       (you can search for any module that the ptfs
                      changed)
       ip list yyyyyyyy len(x'40')
         *NOTE* replace yyyyyyyy withe the address under location
                column from verbx nucmap
       If one of the mentioned PTFs applied proceed to step 2.
       If it is not applied, this  does not describe why your
       register may be dirty.
    
    2. check the value of register 15 in abend registers
       (Abend0C4-3B)
       In the cases where this was observed, R15 content that is
       dirty is x'10',
       example
       00000010_yyyyyyyy
       *NOTE* yyyyyyyy is irrelevent what content it is.
    
    3. If an Abend0C4-3B was observed, you may see close to the
       abend or directly before it in the system trace that a
       storage obtain or getmain occurred from the program that took
       the Abend0C4
    

Local fix

  • By turning on the RSM Component Trace (CTRACE) the high order
    bits will be cleared during Ctrace processing in the module that
    experienced the issue.   The ctrace options selected below
    (HSPSCROL & ALLOC2G) were chosen since they would be less likely
    than other RSM options to be encountered on most customer
    systems.  However, if you either suspect that  both would
    be likely to be encountered frequently, or experience any
    issues when turning on Ctrace, please contact Level2 for further
    recommendations on other Ctrace options that can be chosen.
    
    ---------- Turn on RSM Ctrace ----------------------------
    
    There are two ways to turn the CTRACE on
    
    1. From the console
    
    TRACE CT,100M,COMP=SYSRSM
     R xx,OPTIONS=(BUFF=(7,60),HSPCACHE),END
    
    We do not anticipate there will be any impact from this option,
    as it is a fairly uncommon function.  If it happens that a
    customer does complain about a  performance from the above
    ctrace then you may use a different CTRACE option.  In that
    case, replace HSPCACHE with ALLOC2G.  So the reply would look
    like
    
     R xx,OPTIONS=(BUFF=(7,60),ALLOC2G),END
    
    
    or
    
    2. Through a PARMLIB member, so it is enabled at IPL
       automatically
    
       Create a CTIRSMxx member in PARMLIB with the following
       content:
    
       TRACEOPTS ON OPTIONS('BUFF=(7,60)','HSPCACHE')
    
       Add the following command to your COMMNDxx member in PARMLIB:
    
       TRACE CT,100M,COMP=SYSRSM,PARM=CTIRSMxx
    
       This will enable RSM trace at IPL time.
    
    As with option #1, if there is a performance impact from the
    HSPCACHE  option, ALLOC2G or HSPSCROL can be chosen.
    
    
    -------------------------------------------------------------
    
    You can Display the results of turning on/off the Ctrace with
    
    D TRACE,COMP=SYSRSM
    
    -------------------------------------------------------------
    
    To turn OFF the RSM Ctrace, in case any problems arise,  use
    
    TRACE CT,OFF,COMP=SYSRSM
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED: Users of HBB7790 who                         *
    *                 apply apar OA46291 (PTF UA90976).            *
    ****************************************************************
    * PROBLEM DESCRIPTION: ABEND0C4 PIC3B register 15 R15 dirty    *
    *                      high half AMODE64 after storage         *
    *                      obtain - unpredictable results          *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    With the apply of apar OA46291 (PTF UA90976),
    IAXVP was compiled with a different option.  This option
    resulted in an instruction that could corrupt the content
    of the high half of R15, where previously it resulted in
    the high half of R15 being cleared.
    This can lead to Abend0C4-3B PIC3B or unexpected results
    by the caller in AMODE(64).
    This happened across a Storage Obtain/getmain call and the
    service documents that bits 0-31 of register 15 are
    unpredictable.  It is good programming practice to make sure
    your register is cleared before you use it.
    

Problem conclusion

  • The code in IAXVP is changed to clear the high half
    of the return code (R15).
    Additional keywords: R2964/K   D/T2964
    

Temporary fix

  • *********
    * HIPER *
    *********
    

Comments

APAR Information

  • APAR number

    OA48273

  • Reported component name

    RSM - REAL STOR

  • Reported component ID

    5752SC1CR

  • Reported release

    790

  • Status

    CLOSED PER

  • PE

    YesPE

  • HIPER

    YesHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2015-07-01

  • Closed date

    2015-08-14

  • Last modified date

    2015-10-23

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

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

    UA78633

Modules/Macros

  • IAXVP
    

Fix information

  • Fixed component name

    RSM - REAL STOR

  • Fixed component ID

    5752SC1CR

Applicable component levels

  • R790 PSY UA78633

       UP15/08/26 P F508 ®

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":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SG19M","label":"APARs - z\/OS environment"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"790","Edition":"","Line of Business":{"code":"","label":""}},{"Business Unit":{"code":null,"label":null},"Product":{"code":"SG19O","label":"APARs - MVS environment"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"790","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
23 October 2015