IBM Support

PK60993: CEMT SET TCPIPSERVICE(NAME) CLOSED MAY HANG IN BEING CLOSED STATUS.

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • You issue a CEMT SET TCPIPSERVICE(name) CLOSED command and
    sometimes it hangs in BEING CLOSED status and the TCPIPSERVICE
    never closes.
    
    A DFHTRAP was written and the following problem was found.
    The trace shows this socket being created and being closed by
    the client but it never gets deleted by CICS.  Task-01070 is
    the CWXN task attached when this new socket is created.
    Task-01071 is the web-alias task which CWXN attaches.  After
    Task-01071 sends its response to the client, it issues an
    ASYNC receive to accept the next request from the client.
    Almost immediately after this, the socket listener task gets
    notified that the client has closed the connection (this can
    only happen after an ASYNC RECEIVE has been issued).  DFHWBSO
    is called for SOCKET_CLOSED for the socket.  In parallel with
    this, TASK-01071 starts to go through DFHSOCK PERFORM_COMMIT
    logic.  Code in DFHSOCK PERFORM_COMMIT checks the state of
    this socket.  At this point notify_count is non-zero
    (incremented by CSOL - TASK-00004 as part of notify
    processing).  TASK-01071 therefore deems the socket to be in-
    use.  This causes DFHSOCK PERFORM_COMMIT to eventually bypass
    its own socket close logic which exists for deleting inactive
    sockets.  Before TASK-01071 can relinquish its reserve on the
    socket, TASK-00004 issues its own relinquish. Relinquish
    logic returns a doclose flag which is only set if there are
    no other reserves on the socket.  Relinquish returns doclose=
    no to TASK-00004 (as TASK-00071 still has a reserve).  So
    TASK-00004 decides that the socket is still active and skips
    close processing for the socket.  It expects the task which
    currently holds a reserve on the socket (TASK-01071) to
    eventually close and delete it the socket.  This will not
    happen as explained earlier.  So both CSOL and the web-alias
    task go through logic which will delete the socket if it is
    deemed to be inactive but both tasks note the presence of the
    other and assume that the other task will do the close.  CICS
    needs to ensure that one of these 2 tasks closes and deletes
    the socket when this timing clash occurs.
    
    Additional Symptom(s) Search Keyword(s):
    KIXREVSCB
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED: All.                                         *
    ****************************************************************
    * PROBLEM DESCRIPTION: CEMT SET TCPIPSERVICE() CLOSED hangs    *
    *                      in BEING CLOSED.                        *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    CSOL is performing a notify for the close of a socket which has
    been requested by the client. At the same time the alias task
    is terminating and issues sock_perform_commit. Both CSOL and the
    alias transaction will close and delete the socket if there are
    no other active users, but due to a specific timing scenario,
    neither of them do and the socket is left open with no-one left
    to close it. The TCPIPSERVICE then cannot be closed.
    The problem will occur if the alias transaction checks the
    notify_count flag in sock_perform_commit before CSOL has
    decremented it. It will then set the curr_in_use flag on to
    indicate that a notify task is still using the socket.
    If CSOL then gets control and relinquishes the socket, CSOL will
    detect that the alias task still has a reserve on the socket
    and so will not close and delete the socket.
    When the alias task then performs a relinquish of the socket, it
    should carry on to delete the socket, as CSOL has already
    relinquished the socket. But because the curr_in_use flag is set
    it thinks that the socket is still in use by a notify task and
    does not close / delete the socket either.
    

Problem conclusion

  • DFHSOCK has been modified in perform_commit processing to
    check for the presence of a notify task using the socket, which
    could prevent closure of the socket, only after the relinquish
    socket call has been made by the terminating task.
    

Temporary fix

  • FIX AVAILABLE BY PTF ONLY
    

Comments

APAR Information

  • APAR number

    PK60993

  • Reported component name

    CICSTS V3 Z/OS

  • Reported component ID

    5655M1500

  • Reported release

    400

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    YesSpecatt / Pervasive

  • Submitted date

    2008-02-13

  • Closed date

    2008-06-25

  • Last modified date

    2008-07-01

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

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

    UK37671 UK37672

Modules/Macros

  •    DESSOCK  DFHSOCK
    

Fix information

  • Fixed component name

    CICSTS V3 Z/OS

  • Fixed component ID

    5655M1500

Applicable component levels

  • R400 PSY UK37671

       UP08/07/01 P F806

  • R500 PSY UK37672

       UP08/07/01 P F806

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":"3.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":"3.1","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
01 July 2008