 |
» |
|
|
 |
 |
 |
|
|
 |
|
Patch Name: PHKL_28122
Patch Description: s700_800 11.11 signals,threads enhancement,Psets Enablement
Creation Date: 02/12/19
Post Date: 03/02/03
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:
Yes
PHKL_28122: PANIC HANG
PHKL_25729: HANG
PHKL_24256: OTHER
Hung, Unkillable Process
PHKL_26241: ABORT
Category Tags:
defect_repair enhancement general_release critical panic
halts_system manual_dependencies
Path Name: /hp-ux_patches/s700_800/11.X/PHKL_28122
Symptoms:
PHKL_28122:
( SR:8606250555 CR:JAGae16930 )
During HP internal review, an inconsistent synchronization
of a signals' field was found. The problem could lead to a
system panic or hang. However, the problem was quite rare.
To date, this problem has not been reported by any customer
nor HP internal testing facility.
PHKL_25729:
( SR:8606213548 CR:JAGad82740 )
If an application uses thread cancellation for threads
synchronization, an intermittent hang may occur. This
happens when the thread fails to be cancelled, even when
cancellation is enabled.
( SR:8606216254 CR:JAGad85424 )
High comsumption of CPU resources can result in an apparent
system hang. This occurs with applications that use a large
number of threads per process.
PHKL_24567:
( SR:8606200799 CR:JAGad69975 )
This patch is a member of a set of patches needed to enable
the HP-UX Processor Sets product (PROCSETS). When PROCSETS
product is installed, it will install the full set of
required patches for that product, including this patch.
If the HP-UX Processor Sets product is not installed, this
change will have no impact on your system.
PHKL_24256:
( 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.
PHKL_23280:
( SR:8606162688 CR:JAGad32004 )
A multithreaded process may not always perform the desired
signal handler action if the system V signal(2) interface
is used or if the SA_RESETHAND flag is set with the other
signalling interfaces. This could occur when the process
must handle more than one instance of the same signal in
parallel. Similar problems with signal handling could
occur if the user calls sigaction() while the signal is
being processed. The most likely results of handling the
action incorrectly would be for the process to be
terminated or for a user specified action to be performed
more than once before the signal action is reset to
SIG_DFL.
PHKL_26241:
( SR:8606233570 CR:JAGae02793 )
The signal function sigtimedwait() incorrectly returns
EINVAL when the value of the timespec structure field tv_sec
is 0 and field tv_nsec lies in the range 990,000,001 to
999,999,999, inclusive. This may cause an application to
abort.
Defect Description:
PHKL_28122:
( SR:8606250555 CR:JAGae16930 )
A kernel data structure used by signals is updated using
incorrect synchronization.
Resolution:
Change synchronization to provide correct protection.
PHKL_25729:
( SR:8606213548 CR:JAGad82740 )
SIGCANCEL is used by the pthreads library to terminate
interruptible system calls while inside a sleep. The
SIGCANCEL signal can be lost if it is received while the
thread is handling a trap. This results in a thread hang.
Resolution:
The solution to losing cancellations is to check if the
process is in the trap path when searching for pending
signals and a SIGCANCEL is found. If so, the SIGCANCEL is
deffered and handled in the sleep path. This ensures that
the signal will not be lost and thread cancellation will
proceed.
( SR:8606216254 CR:JAGad85424 )
All non-running threads are searched to see if they can
handle a process directed signal. However, if the signal is
blocked by all the threads of a process, the signal cannot
be delivered to a thread and must be left pending at the
process level.
This causes repeated attempts to deliver the signal since
it is possible that a thread will eventually accept the
signal. The POSIX standards require the signal to be
delivered.
Resolution:
The solution is to reduce the number of times the entire
list of threads is searched by keeping a hint that a
previous search has found all threads having that signal
masked, and not repeating the search. This avoids
unnecessary and time consuming searches for a thread to
handle a signal when a candidate is not available.
PHKL_24567:
( SR:8606200799 CR:JAGad69975 )
This patch contains minor enhancements required to support
the HP-UX Processor Sets product.
Resolution:
Enhancements added to access per processor set run queue
of posix realtime scheduler when Processor Sets product
is enabled.
PHKL_24256:
( 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.
PHKL_23280:
( SR:8606162688 CR:JAGad32004 )
The possibility of the wrong signal action being executed
results from a race condition that occurs between issig()
and psig(). This race condition is caused by checking the
signal's action in issig(), using that value to determine
if the signal needs to be processed by psig(), and then
releasing the thread and scheduler locks before issig()
returns. Upon returning from issig(), psig() is called and
checks the signal's action again. This leaves a window of
time that allows for the signal's action to be changed
between when issig() determines the signal should be
handled by psig() and when psig() checks what action should
be performed. The result is that the action could be
SIG_DFL, but psig() won't know how to perform the default
action for that signal.
Resolution:
psig() was modified so that it would be able to handle SIGIO
in addition to the six signals that have a default action of
ignore.
PHKL_26241:
( SR:8606233570 CR:JAGae02793 )
tv_nsec values in the range 990,000,001 to 999,999,999 cause
an overflow into the tv_sec field when internally rounded up
to whole scheduler ticks (10,000,000 nsec). This causes
code in sigtimedwait() to produce an unexpected negative
value for tv_sec on a subsequent subtraction and return
EINVAL.
Resolution:
Change conditional code to handle internal tv_sec if less
than zero.
Enhancement:
No (superseded patches contained enhancements)
PHKL_28122:
Enhancements were delivered in a patch this one has
superseded. Please review the Defect Description
text for more information.
SR:
8606103740 8606159451 8606162688 8606200799 8606213548
8606216254 8606233570 8606250555
Patch Files:
OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP:
/usr/conf/lib/libpm.a(kern_sig.o)
/usr/conf/lib/libpm.a(pm_signal.o)
OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP:
/usr/conf/lib/libpm.a(kern_sig.o)
/usr/conf/lib/libpm.a(pm_signal.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(kern_sig.o):
kern_sig.c $Date: 2002/10/24 15:35:13 $Revision: r11
.11/2 PATCH_11.11 (PHKL_28122)
/usr/conf/lib/libpm.a(pm_signal.o):
pm_signal.c $Date: 2002/10/24 15:36:06 $Revision: r1
1.11/5 PATCH_11.11 (PHKL_28122)
OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP:
/usr/conf/lib/libpm.a(kern_sig.o):
kern_sig.c $Date: 2002/10/24 15:35:13 $Revision: r11
.11/2 PATCH_11.11 (PHKL_28122)
/usr/conf/lib/libpm.a(pm_signal.o):
pm_signal.c $Date: 2002/10/24 15:36:06 $Revision: r1
1.11/5 PATCH_11.11 (PHKL_28122)
cksum(1) Output:
OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP:
2532070081 17712 /usr/conf/lib/libpm.a(kern_sig.o)
3451393676 28008 /usr/conf/lib/libpm.a(pm_signal.o)
OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP:
2018516825 48072 /usr/conf/lib/libpm.a(kern_sig.o)
920977624 61832 /usr/conf/lib/libpm.a(pm_signal.o)
Patch Conflicts: None
Patch Dependencies:
s700: 11.11: PHKL_25728
s800: 11.11: PHKL_25728
Hardware Dependencies: None
Other Dependencies:
PHKL_24256: 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_26241 PHKL_25729 PHKL_24567 PHKL_24256 PHKL_23280
Equivalent Patches: None
Patch Package Size: 190 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_28122
5. Run swinstall to install the patch:
swinstall -x autoreboot=true -x patch_match_target=true \
-s /tmp/PHKL_28122.depot
By default swinstall will archive the original software in
/var/adm/sw/save/PHKL_28122. 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_28122.text file is
available in the product readme:
swlist -l product -a readme -d @ /tmp/PHKL_28122.depot
To put this patch on a magnetic tape and install from the
tape drive, use the command:
dd if=/tmp/PHKL_28122.depot of=/dev/rmt/0m bs=2k
Special Installation Instructions: None
|