IBM Support

PM18089: MESSAGE DFHUS0002 A SEVERE ERROR (CODE X'030C') HAS OCCURRED IN DFHUSAD IS RECEIVED AND CICS TERMINATES.

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • You receive MSGDFHUS0002  A severe error (code X'030C') has
    occurred in DFHUSAD and your CICS region terminates.  You are
    running CICS 4.1 under z/OS 1.11.
    The exception trace entry in the dump looks as follows:
    US 030C USAD  *EXC* - User-not-in-directory - FUNCTION(NOTIFY)
    DOMAIN_TOKEN(00000000 , 1D226100)
    TASK-TI    KE_NUM-001F TCB-QR   /00BF8128 RET-966F9254
    TIME-17:10:38.6360610014 INTERVAL-00.0000213906        =001953=
    .
    On another instance of the problem, the exception trace entry
    appeared as follows:
    US USAD  *EXC* - User-not-in-directory - FUNCTION(DELETE_USER)
    SIGNOFF_TYPE(DEFERRED_SIGN_OFF) USER_TOKEN(00000415)
    TASK-XM    KE_NUM-00A2 TCB-QR   /00BC0D90 RET-96A54198
    .
    In another instance of this problem, the following trace entry
    occurs:
     TI  QR  US 0316 USAD  *EXC* Del-expired-failed
                           NOTIFY,00000000 , nnnnnnnn
    .
    This problem only occurs on z/OS 1.11 or higher as it relates
    to the ENF notifications that CICS now receives from RACF when a
    userid is added to or removed from a group.
    What happens is as follows:
    .
    - An ENF notification is received for a userid currently in use
    in CICS. That userid is running a non-terminal task.
    - This is processed by notify_userid in DFHUSAD
    - usud_notify_received gets turned on
    - Before the currently in use userid gets to DELETE_USER
    processing an identical non-terminal signon is done.
    This gets handled by the add_user processing in DFHUSAD
    - usud_notify_received is turned on so process_expired_users
    gets called.
    - If the user was on the timeout queue then it would just be
    deleted
    - In our case the userid is in use so it gets removed from
    the USD1 directory and usud_deleted_from_dirkey gets set on.
    - The new user is now added to USD2 (new entry) and USD1 (same
    entry as was just removed except references a new USUDB).
    - This new task finishes and DELETE_USER adds the userid to the
      timeout queue.
    Eventually the original task finishes.
    - DELETE_USER processing is done.
    - This finds usud_notify_received turned on so deletes the user
    instead of putting on to the timeout queue.
    - The USD2 entry is deleted.
    - The USD1 entry was deleted earlier by the new task.  However,
    the usud_deleted_from_dirkey bit is not checked so the NEW
    USD1 entry gets deleted.
    *** This leaves our new user on the timeout queue without a USD1
        entry.
    - USRDELAY time expires an DFHUSAD is called to process the
    timeout queue.
    - The new user is found on the queue so gets deleted.
    - It is located in the USD2 directory which means it is still
    valid and eligible for deletion.
    - The user is removed from USD2.
    - The attempt to remove from USD1 fails with DDDI_NOT_FOUND.
    - Message DFHUS0002 with code x'030C' is issued and CICS
    terminates.
    Additional Symptom(s) Search Keyword(s):
    KIXREVSWM  kixdcfzos111 030C MSGDFHUS0002
    MSGDFHUS0001 (code X'0316') 0316 DFHUS0002 x'0316'
    An additional symptom that is resolved by this APAR includes:
    DFHSN0002 A severe error (code X'2088') has occurred in program
    DFHSNTU.  Looking at the dump, it appears that the SNEX has
    been overlaid.  This is actually a symptom of the second problem
    described above.
    .
    In the second problem described by PM18089, you end up with a
    USRDELAY UTQE (user timeout queue entry) addressing a USUDB
    block which has been freemained. The trigger for this is which
    event notification processing for a RACF USERID when this
    USERID is either revoked or has its group status altered
    (by removing the USERID from a RACF group for example).
    If this USERID is signed on as a non-terminal user and this its
    non-terminal USERID is inactive at the time of the event
    notification then you will (eventually) end up with a UTQE
    timeout element addressing a freemained USUDB block.
    If this USUDB blocks is subsequently getmained when a terminal
    signon occurs, you now have a potential problem.
    At some point, the UTQE for the earlier non-terminal USERID
    will timeout. When this happens, the directory entries for the
    USUDB and the USUDB itself get deleted. The terminal knows
    nothing about this because timeout processing for a UTQE is
    designed to timeout non-terminal users.
    Eventually, when the terminal USER signs off explicitly or
    when a terminal timeout occurs, the DFHSN0002 severe error
    code 2088 will be received.
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED: All CICS Users                               *
    ****************************************************************
    * PROBLEM DESCRIPTION: When running CICS on z/OS v1.11 or      *
    *                      above it is possible to receive         *
    *                      message DFHUS0002 code x'030C' and      *
    *                      CICS terminates, or message DFHUS0002   *
    *                      code x'0316' and a system dump is       *
    *                      taken.                                  *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    When running CICS on z/OS 1.11 or higher RACF will notify CICS
    via ENF of events relating to userids such as revocation or
    being connected or removed from groups.
    
    There are two problems in DFHUSAD's processing of the
    notification.  The effects depend on whether the userid was in
    use at the time of receiving the notification.
    
    For the first problem a user is running a non-terminal task
    (such as a request using CICS Web Support).  A notification is
    received for that userid and DFHUSAD turns on
    USUD_NOTIFY_RECEIVED.  Before this current task can complete
    another task starts up for the same userid from the same source
    (another CICS Web Support request in this case).  The userid is
    found in the USD1 directory and as USUD_NOTIFY_RECEIVED is
    turned on the userid is removed from the USD1 directory and
    USUD_DELETED_FROM_DIRKEY is turned on.  The new signon
    continues and adds the user into the USD1 directory (identical
    to what was just removed except the USUDB reference is
    different) and into the USD2 directory.  When the first task
    completes it removes its USD2 entry.  It doesn't check
    USUDB_DELETED_FROM_DIRKEY so goes and removes the USD1 entry.
    This is actually the entry for the second task.  That second
    task now has only a USD2 entry.  It does not have a USD1 entry.
    When that second task completes, the userid is placed on the
    timeout queue.  When USRDELAY time expires the user is deleted.
    The USD2 entry is removed.  Then the USD1 entry is removed.
    This doesn't exist so DFHUSAD issues message DFHUS0002 with
    code x'030C' and terminates CICS because its directories are no
    longer in a consistent state.
    
    For the second problem the userid is on the timeout queue when
    a notification arrives.  A new non-terminal task for that userid
    arrives.  USUD_NOTIFY_RECEIVED is on and the userid is on the
    timeout queue so the user is removed from the US domain
    directories.  However, the userid is not removed from the
    timeout queue.  The new signon happens to get allocated the
    same USUDB block as was just freed.  This means it has the same
    USD2 entry.  The signon was identical to the previous one for
    this userid (another CICS Web Support request) so the USD1
    entry is also identical.  At the end of the task the userid is
    put on the timeout queue so is now on that queue twice.  When
    the first entry expires the USD1 and USD2 entries are removed
    and the USUDB freed.  When the second entry expires the user
    cannot be located in the USD2 directory so DFHUSAD issues
    message DFHUS0002 with code x'0316'.
    
    Additional keywords:
    MSGDFHUS0002  US0002  DDDI_NOT_FOUND
    

Problem conclusion

  • DFHUSAD has been changed so that USUD_DELETED_FROM_DIRKEY is
    checked before attempting to remove a USD1 entry.  It has also
    been changed to remove the user from the timeout queue when the
    user is removed from the US domain directories after a
    notification has been received.
    

Temporary fix

  •             *********
                * HIPER *
                *********
    FIX AVAILABLE BY PTF ONLY
    

Comments

APAR Information

  • APAR number

    PM18089

  • Reported component name

    CICS TS Z/OS V4

  • Reported component ID

    5655S9700

  • Reported release

    600

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    YesHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2010-07-08

  • Closed date

    2010-09-17

  • Last modified date

    2011-07-14

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

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

    UK60598

Modules/Macros

  •    DESUSAD  DESUSCM  DFHUSAD
    

Fix information

  • Fixed component name

    CICS TS Z/OS V4

  • Fixed component ID

    5655S9700

Applicable component levels

  • R600 PSY UK60598

       UP10/09/23 P F009

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":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSGMGV","label":"CICS Transaction Server"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"4.1","Edition":"","Line of Business":{"code":"LOB35","label":"Mainframe SW"}},{"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":"4.1","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
14 July 2011