Patch Name: PHKL_25993 Patch Description: s700_800 11.11 thread nostop for NFS, rlimit, Ufalloc fix Creation Date: 02/06/27 Post Date: 02/07/23 Hardware Platforms - OS Releases: s700: 11.11 s800: 11.11 Products: N/A Filesets: OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP Automatic Reboot?: Yes Status: General Release Critical: No (superseded patches were critical) PHKL_24255: OTHER Hung, Unkillable Process Category Tags: defect_repair enhancement general_release critical manual_dependencies Path Name: /hp-ux_patches/s700_800/11.X/PHKL_25993 Symptoms: PHKL_25993: ( SR:8606217733 CR:JAGad86885 ) Duplicate ( SR:8606217874 CR:JAGad87024 ) Duplicate ( SR:8606212631 CR:JAGad81817 ) Enhancement: This product update is a member of a set needed to enable Fast File Descriptor Allocation. The full list of product updates required for this feature are: PHKL_25993, PHKL_25994, PHKL_25995, PHKL_25996. If any member of this set of product updates is not installed, this product update will have no impact on your system. Performance decreases when a large number of file descriptors are open and as more file descriptors are needed, there is an increase in the time spent in the open(2) system call. PHKL_25652: ( SR:8606206889 CR:JAGad76062 ) 32-bit programs using malloc(3C), ulimit(2), brk(2), or sbrk(2) are limited to a 2.75 GB data space, even when the executable is compiled as EXEC_MAGIC with both quadrant 3 and 4 flagged for private use. PHKL_24255: ( SR:8606159451 CR:JAGad28779 ) Duplicate ( SR:8606103740 CR:JAGab70789 ) A multi-threaded process being executed over NFS can become hung and unkillable while performing either a fork, core, setrlimit, SIGSTOP, or debugger operations. This can happen with mutiple threads in different processes competing for the same resource when one thread is stopped. Defect Description: PHKL_25993: ( SR:8606217733 CR:JAGad86885 ) Duplicate ( SR:8606217874 CR:JAGad87024 ) Duplicate ( SR:8606212631 CR:JAGad81817 ) As a user program opens a large number of file descriptors, more time is spent in the file allocation routines because of the current linear algorithm which results in a performance decrease. Resolution: This product update adds necessary infrastructure (initializing kernel internal data structures and pointers) to enable the Fast File Descriptor Allocation feature. PHKL_25652: ( SR:8606206889 CR:JAGad76062 ) The constant RLIM_INFINITY, as specified by the setrlimit(2) call, is meant to indicate that there will be no enforcement in the limits of the specified resource. However, the value of RLIM_INFINITY is implemented to be a number which is now within the valid range of values for some resource limits (it used to be larger than any valid value at one time). The code incorrectly compares against this value, using it as an upper limit, instead of treating it as a special value. RLIMIT_DATA and RLIMIT_STACK resource limits for 32-bit executables were incorrectly limited to the 32-bit value of RLIM_INFINITY (2GB), even when their valid ranges exceed 2GB. The maximum value for RLIMIT_DATA and RLIMIT_STACK should be set by the tunables maxdsiz and maxssize, respectively, instead of being bounded by the value of RLIM_INFINITY. Resolution: The implementation of setrlimit(2) was changed to no longer use RLIM_INFINITY as a maximum value for RLIMIT_DATA and RLIMIT_STACK. Instead, the maximum values supported by RLIMIT_DATA and RLIMIT_STACK have been changed to any values less than maxdsiz or maxssiz respectively. PHKL_24255: ( SR:8606159451 CR:JAGad28779 ) Duplicate ( SR:8606103740 CR:JAGab70789 ) A thread acquires a lock and then sleeps interruptibly. The interruptible sleep permits the thread to be stopped. Any other thread attempting to acquire this lock will sleep uninterruptibly until the lock is available. This uninterruptible thread is also unkillable. This introduces a deadlock potential in multi-threaded processes: when a thread holding the lock, a thread desiring the lock, and a third thread doing one of fork, setrlimit, core, SIGSTOP, or debugger operations, all occur at the same time in the same process, the deadlock is reached. The only way to resolve the deadlock is to reboot the system. A similar situation can occur when threads in different processes are competing for the same NFS resource and the thread that owns that resource is stopped via a signal, a debugger, or a ctrl-Z. This patch is part of a set of five patches (PHKL_24253, PHKL_24254,PHKL_24255,PHKL_24256,PHKL_24257) that enable P_NOSTOP, a new feature that prevents a process from being unkillable. Each patch is independently installable. Without all five installed, P_NOSTOP will be unavailable. In order to prevent the process executed over NFS from becoming unkillable, NFS must use the P_NOSTOP feature. Usage of this feature was added to PHNE_23502. Resolution: If a thread acquires a lock and then sleeps interruptibly, it is not permitted to be stopped if P_NOSTOP is set. This prevents this thread from becoming unkillable and prevents the deadlock. SR: 8606103740 8606159451 8606206889 8606212631 8606217733 8606217874 Patch Files: OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: /usr/conf/lib/libpm.a(pm_resource.o) OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: /usr/conf/lib/libpm.a(pm_resource.o) what(1) Output: OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: /usr/conf/lib/libpm.a(pm_resource.o): pm_resource.c $Date: 2002/06/25 15:22:16 $Revision: r11.11/3 PATCH_11.11 (PHKL_25993) OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: /usr/conf/lib/libpm.a(pm_resource.o): pm_resource.c $Date: 2002/06/25 15:22:16 $Revision: r11.11/3 PATCH_11.11 (PHKL_25993) cksum(1) Output: OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: 1820938613 11704 /usr/conf/lib/libpm.a(pm_resource.o) OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: 2703305770 25952 /usr/conf/lib/libpm.a(pm_resource.o) Patch Conflicts: None Patch Dependencies: None Hardware Dependencies: None Other Dependencies: PHKL_25993: To enable the Fast File Descriptor Allocation enhancement, the following product updates must be installed: PHKL_25993, PHKL_25994, PHKL_25995, PHKL_25996. These product updates may be installed in any order. If any of these product updates are not installed, this product update will have no impact on your system. PHKL_24255: If NFS is installed on the system, all five patches (PHNE_23502, PHKL_24253, PHKL_24254,PHKL_24255, PHKL_24256, PHKL_24257) are required to resolve the process hang/deadlock due to unkillable processes executed over NFS. However, if NFS is not in use, none of these patches are required. Supersedes: PHKL_25652 PHKL_24255 Equivalent Patches: None 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_25993 5. Run swinstall to install the patch: swinstall -x autoreboot=true -x patch_match_target=true \ -s /tmp/PHKL_25993.depot By default swinstall will archive the original software in /var/adm/sw/save/PHKL_25993. If you do not wish to retain a copy of the original software, include the patch_save_files option in the swinstall command above: -x patch_save_files=false WARNING: If patch_save_files is false when a patch is installed, the patch cannot be deinstalled. Please be careful when using this feature. For future reference, the contents of the PHKL_25993.text file is available in the product readme: swlist -l product -a readme -d @ /tmp/PHKL_25993.depot To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHKL_25993.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None