IBM Support

IT37723: Mishandling of return codes from OS calls might result in Q filecorruption after file descriptor limit is hit

Subscribe to this APAR

By subscribing, you receive periodic emails alerting you to the status of the APAR, along with a link to the fix after it becomes available. You can track this item individually or track all items by product.

Notify me when this APAR changes.

Notify me when an APAR for this component changes.

 

APAR status

  • Closed as program error.

Error description

  • If the OS limit on file descriptors (RLIMIT_NOFILE) is hit, then
    OS calls such as open() and pipe() fail with errno=EMFILE.  The
    remedy is for the administrator to increase the limits (eg. by
    setting the ulimit 'nofile' setting).
    
    While reviewing the MQ code for possible defects, it was found
    that, in a few places, there was inadequate checking of the
    return codes from OS calls such as open().  In a scenario in
    which the file descriptor limit has been hit, the MQ code could
    also close a file descriptor used for communication between a
    parent process and a child process.
    
    As a result of these things, there are undefined behaviours in a
    queue manager process after it has suffered such a condition,
    including the writing of bad data into a Queue file.  If this
    has happened, then failure data capture (FDC) records are
    written saying "object damaged".
    

Local fix

  • It is strongly recommended that OS file descriptor limits are
    set appropriately based on the expected workload of the queue
    manager and appropriate load testing performed.
    

Problem summary

  • ****************************************************************
    USERS AFFECTED:
    All users of MQ on Linux and UNIX platforms.
    
    
    Platforms affected:
    AIX, Linux on Power, Linux on x86-64, Linux on zSeries
    
    ****************************************************************
    PROBLEM DESCRIPTION:
    The IBM MQ code had inadequate checks on the return codes from
    OS calls such as open().  Also the code could close a file
    descriptor that was later needed. Improper handling of file
    handles under this scenario could result in data being written
    to a file handle that had been reassigned to another file - in
    this regard, there is a possibility that arbitrary data could be
    written into a queue file, invalidating that queue file.
    

Problem conclusion

  • The IBM MQ code has been corrected.
    
    ---------------------------------------------------------------
    The fix is targeted for delivery in the following PTFs:
    
    Version    Maintenance Level
    v9.0 LTS   9.0.0.13
    v9.1 LTS   9.1.0.11
    v9.2 LTS   9.2.0.5
    v9.x CD    9.2.5
    
    The latest available maintenance can be obtained from
    'WebSphere MQ Recommended Fixes'
    http://www-1.ibm.com/support/docview.wss?rs=171&uid=swg27006037
    
    If the maintenance level is not yet available information on
    its planned availability can be found in 'WebSphere MQ
    Planned Maintenance Release Dates'
    http://www-1.ibm.com/support/docview.wss?rs=171&uid=swg27006309
    ---------------------------------------------------------------
    

Temporary fix

Comments

APAR Information

  • APAR number

    IT37723

  • Reported component name

    MQ BASE V9.2

  • Reported component ID

    5724H7281

  • Reported release

    920

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    YesHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2021-07-21

  • Closed date

    2021-11-02

  • Last modified date

    2021-11-02

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

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

Fix information

  • Fixed component name

    MQ BASE V9.2

  • Fixed component ID

    5724H7281

Applicable component levels

[{"Line of Business":{"code":"LOB45","label":"Automation"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSYHRD","label":"IBM MQ"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"920"}]

Document Information

Modified date:
03 November 2021