 |
» |
|
|
 |
 |
 |
|
|
 |
|
Patch Name: PHKL_25652
Patch Description: s700_800 11.11 thread nostop for NFS, rlimit max value fix
Creation Date: 02/04/08
Post Date: 02/04/11
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 Superseded
Critical:
No (superseded patches were critical)
PHKL_24255: OTHER
Hung, Unkillable Process
Category Tags:
defect_repair general_release critical manual_dependencies
Path Name: /hp-ux_patches/s700_800/11.X/PHKL_25652
Symptoms:
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_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
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: 2001/11/07 18:20:15 $Revision:
r11.11/2 PATCH_11.11 (PHKL_25652)
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: 2001/11/07 18:20:15 $Revision:
r11.11/2 PATCH_11.11 (PHKL_25652)
cksum(1) Output:
OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP:
3400799009 11524 /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:
1347380807 26472 /usr/conf/lib/libpm.a(pm_resource.o)
Patch Conflicts: None
Patch Dependencies: None
Hardware Dependencies: None
Other Dependencies:
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_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_25652
5. Run swinstall to install the patch:
swinstall -x autoreboot=true -x patch_match_target=true \
-s /tmp/PHKL_25652.depot
By default swinstall will archive the original software in
/var/adm/sw/save/PHKL_25652. 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_25652.text file is
available in the product readme:
swlist -l product -a readme -d @ /tmp/PHKL_25652.depot
To put this patch on a magnetic tape and install from the
tape drive, use the command:
dd if=/tmp/PHKL_25652.depot of=/dev/rmt/0m bs=2k
Special Installation Instructions: None
|