Patch Name:  PHKL_10458

Patch Description: s700 10.20 SystemV semaphores, semop(2) cumulative patch

Creation Date: 97/03/24

Post Date:  97/03/27

Hardware Platforms - OS Releases:
        s700: 10.20

Products: N/A

Filesets:
        OS-Core.CORE-KRN

Automatic Reboot?: Yes

Status: General Superseded

Critical:
        Yes
        PHKL_10458: HANG
        PHKL_9748: HANG

Path Name:  /hp-ux_patches/s700/10.X/PHKL_10458

Symptoms:
        PHKL_10458:
        Applications could hang when using semop() with non
        binary semaphores.

        PHKL_9748:
        Applications using SystemV semaphores could hang or
        experience poor performance.

Defect Description:
        PHKL_10458:
        The semop() system call would not try to wake up more
        "ncnt" sleepers after the completion of a decrement
        operation resulting in a positive semaphore value.
        The following scenario describes the defect:
          The parent sets semval to 0 and forks 2 children: each
          child tries a decrement operation and goes to sleep
          waiting for semval > 0. Then the parent increments
          semval to 2 thus causing the wakeup of the 1st child,
          but after completing its decrement operation, the 1st
          child would not wakeup the 2nd child!
        This defect does not impact applications using binary
        semaphores.

        PHKL_9748:
        A semop() call could result in an infinite sleep/wakeup loop
        causing  the system to suffer from poor  performance.  Also,
        when  interrupted  by a signal  semop() could loose a wakeup
        and  this  resulted  in  application  hangs.  The  semaphore
        sleep/wakeup  strategy was redesigned to minimize the number
        of wakeups and to handle signals properly.

SR:
        1653195545 4701344648 5003339747

Patch Files:
        /usr/conf/lib/libhp-ux.a(sysV_sem.o)

what(1) Output:
        /usr/conf/lib/libhp-ux.a(sysV_sem.o):
                sysV_sem.c  $Date: 97/03/19 13:34:12 $ $Revision: 1.
                        32.98.6 $ PATCH_10.20 (PHKL_10458)

cksum(1) Output:
        2127121229 15208 /usr/conf/lib/libhp-ux.a(sysV_sem.o)

Patch Conflicts: None

Patch Dependencies:  None

Hardware Dependencies:  None

Other Dependencies:  None

Supersedes:
        PHKL_9748

Equivalent Patches:
        PHKL_10454:
        s700: 10.01

        PHKL_10455:
        s800: 10.01

        PHKL_10456:
        s700: 10.10

        PHKL_10457:
        s800: 10.10

        PHKL_10459:
        s800: 10.20

Patch Package Size:  70 Kbytes

Installation Instructions:
        Please review all instructions and the Hewlett-Packard
        SupportLine User Guide or your Hewlett-Packard support terms
        and conditions for precautions, scope of license,
        restrictions, and, limitation of liability and warranties,
        before installing this patch.
        ------------------------------------------------------------
        1. Back up your system before installing a patch.

        2. Login as root.

        3. Copy the patch to the /tmp directory.

        4. Move to the /tmp directory and unshar the patch:

                cd /tmp
                sh PHKL_10458

        5a. For a standalone system, run swinstall to install the
            patch:

                swinstall -x autoreboot=true -x match_target=true \
                        -s /tmp/PHKL_10458.depot

        5b. For a homogeneous NFS Diskless cluster run swcluster on the
            server to install the patch on the server and the clients:

                swcluster -i -b

            This will invoke swcluster in the interactive mode and
            force all clients to be shut down.

            WARNING: All cluster clients must be shut down prior to the
                     patch installation.  Installing the patch while the
                     clients are booted is unsupported and can lead to
                     serious problems.

            The swcluster command will invoke an swinstall session in which
            you must specify:

                alternate root path  -  default is /export/shared_root/OS_700
                source depot path    -  /tmp/PHKL_10458.depot

            To complete the installation, select the patch by choosing
            "Actions -> Match What Target Has" and then "Actions -> Install"
            from the Menubar.

        5c. For a heterogeneous NFS Diskless cluster:

                - run swinstall on the server as in step 5a to install
                  the patch on the cluster server.

                - run swcluster on the server as in step 5b to install
                  the patch on the cluster clients.

        By default swinstall will archive the original software in
        /var/adm/sw/patch/PHKL_10458.  If you do not wish to retain a
        copy of the original software, you can create an empty file
        named /var/adm/sw/patch/PATCH_NOSAVE.

        Warning: If this file exists when a patch is installed, the
                 patch cannot be deinstalled.  Please be careful
                 when using this feature.

        It is recommended that you move the PHKL_10458.text file to
        /var/adm/sw/patch for future reference.

        To put this patch on a magnetic tape and install from the
        tape drive, use the command:

                dd if=/tmp/PHKL_10458.depot of=/dev/rmt/0m bs=2k

Special Installation Instructions:  None