 |
» |
|
|
 |
 |
 |
|
|
 |
|
Patch Name: PHCO_26000
Patch Description: s700_800 11.00 Pthread library cumulative patch
Creation Date: 02/01/11
Post Date: 02/01/14
Hardware Platforms - OS Releases:
s700: 11.00
s800: 11.00
Products: N/A
Filesets:
OS-Core.C-MIN-32ALIB,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP
OS-Core.C-MIN-64ALIB,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP
OS-Core.CORE-64SLIB,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP
OS-Core.CORE-SHLIBS,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP
Automatic Reboot?: No
Status: General Superseded
Critical:
No (superseded patches were critical)
PHKL_17935: ABORT
This defect could result in an application core
dump.
PHKL_17709: ABORT
This defect could result in an application hang.
Category Tags:
defect_repair enhancement general_release critical
halts_system
Path Name: /hp-ux_patches/s700_800/11.X/PHCO_26000
Symptoms:
PHCO_26000:
( SR:8606186056 CR:JAGad55261 )
Software providers may observe performance deficiencies in
applications which heavily use shared mutexes. Performance
of a PTHREAD_PROCESS_SHARED mutex unlock operation is slower
than that of a PTHREAD_PROCESS_PRIVATE mutex, even in the
non-contended (i.e., no waiters) case.
PHCO_23792:
libpthread didn't support initialized TLS variables.
PHCO_19666:
Libc was unable to use thread callbacks, which are needed
for multithreaded performance enhancements.
JAGab19980
PHKL_17935:
SR: 1653296962 CR: JAGaa94129
An application that calls pthread_create() can terminate
with the following error when running on a system with heavy
memory usage:
Pthread internal error: message: __alloc_stack()
PHKL_17709:
When calling pthread_[cond,mutex,rwlock]_init(), subsequent
use of these objects can cause the process or thread to hang
if the error is not properly checked, or structures
associated with these routines are not properly initialized.
PHKL_17294:
If you have installed Patch PHKL_17390 and you use java and
the pthread asynchronous cancellation feature you may
experience incorrect program behavior -- possible program
aborts, hangs, etc.
If you do not use the pthreads asynchronous cancellation
feature, this patch is not required.
PHKL_16239:
SCHED_TIMESHARE thread priorities degrade over time and with
cpu usage. SCHED_NOAGE provides a scheduling policy where
the priority does not degrade.
In order to utilize the SCHED_NOAGE feature, patch
PHKL_16236 must be installed along with PHKL_16239. The
order of installation is not important. If this feature
will not be used, PHKL_16236 is not necessary.
PHKL_16368:
System peformance degrades when thread spinlock contention
occurs.
libpthread enhancement to improve thread spinlock
performance and overall system performance by lowering the
amount of bus traffic during spinlock contention.
Defect Description:
PHCO_26000:
( SR:8606186056 CR:JAGad55261 )
In the PTHREAD_PROCESS_SHARED mutex case, the unlock
operation always makes a system call to synchronize with
threads in other processes which may be waiting for the
mutex. This makes the code path significantly longer.
Resolution:
Change pthread_mutex_unlock(), in the case of a shared
mutex, to call a new light weight system call rather than
the existing system call. If that new system call is not
available, then use the regular system call instead.
(Patch PHKL_25998, also required for this enhancement,
adapts the existing system call which handles waiters of
shared mutexes to coordinate with the light weight unlock
system call. Patch PHKL_25999, also required for this
enhancement, provides the new light weight system call
for shared mutex unlock.)
PHCO_23792:
Initialized TLS variable support.
PHCO_19666:
Multithreaded performance enhancement
JAGab19980
PHKL_17935:
SR: 1653296962 CR: JAGaa94129
The pthread_create() path uses mmap() to allocate a stack.
pthread_create() checks for a NULL return. However, mmap()
returns MAP_FAILED if it cannot perform the allocation.
Typically what happens is that the subsequent mprotect()
will fail to setup the guard page, then munmap() fails when
trying to clean up on the error return path, generating an
"INTERNAL ERROR" message and a core dump from the library.
Also, since the mmap() failure check passes even if it fails
(we're not looking for the correct return value),
pthread_create() doesn't return an error. Instead, it
terminates with "INTERNAL ERROR."
Resolution:
pthread_create() now checks for MAP_FAILED and returns the
error instead of failing with "INTERNAL ERROR.".
PHKL_17709:
Structures associated with
pthread_[cond,mutex,rwlock]_init() are not being initialized
correctly. This causes a call to these routines to return
EBUSY.
Resolution:
We no longer check for "cookie" values to validate these
objects. We unconditionally initialize them.
PHKL_17294:
A kernel interface change required that we save a register
in a new location when the application enters the kernel via
the trap path. The kernel change was made in patch
PHKL_17390.
Resolution: The pthreads library must now look in the new
location for the register value in this case.
PHKL_16239:
The SCHED_NOAGE scheduling policy has approximately the same
priority range as SCHED_TIMESHARE. However, the priority
does not degrade with time or cpu usage. It provides an
alternative to real time processes which always run first
and have the possibility of taking over the system.
PHKL_16368:
The thread library spinlock did not take advantage of the
cached lock value. In addition, it performed an unnecessary
fetch each time through the 'spin' loop while waiting for
the lock to be free. These conditions caused a large amount
of unnecessary bus traffic.
SR:
1653294868 1653296962 4701401240 5003360446 5003451591
8606184540 8606186056
Patch Files:
OS-Core.C-MIN-32ALIB,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP:
/usr/lib/libpthread.a
/usr/lib/libpthread_tr.a
OS-Core.C-MIN-64ALIB,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP:
/usr/lib/pa20_64/libpthread.a
/usr/lib/pa20_64/libpthread_tr.a
OS-Core.CORE-64SLIB,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP:
/usr/lib/pa20_64/libpthread.1
/usr/lib/pa20_64/libpthread_tr.1
OS-Core.CORE-SHLIBS,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP:
/usr/lib/libpthread.1
/usr/lib/libpthread_tr.1
what(1) Output:
OS-Core.C-MIN-32ALIB,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP:
/usr/lib/libpthread.a:
mutex.c $Date: 2002/01/02 14:04:08 $Revision: r11ros
/4 PATCH_11.00 (PHCO_26000)
libpthread.c $Date: 2002/01/10 10:24:01 $Revision: r
11ros/8 PATCH_11.00 (PHCO_26000)
Pthread Interfaces
libpthread HP-UX (Release B.11.00): Thu Jul 5 15:26
:11 PDT 2001
/usr/lib/libpthread_tr.a:
mutex.c $Date: 2002/01/02 14:04:08 $Revision: r11ros
/4 PATCH_11.00 (PHCO_26000)
libpthread.c $Date: 2002/01/10 10:24:01 $Revision: r
11ros/8 PATCH_11.00 (PHCO_26000)
Pthread Interfaces
libpthread HP-UX (Release B.11.00): Thu Jul 5 15:26
:46 PDT 2001
OS-Core.C-MIN-64ALIB,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP:
/usr/lib/pa20_64/libpthread.a:
mutex.c $Date: 2002/01/02 14:04:08 $Revision: r11ros
/4 PATCH_11.00 (PHCO_26000)
libpthread.c $Date: 2002/01/10 10:24:01 $Revision: r
11ros/8 PATCH_11.00 (PHCO_26000)
Pthread Interfaces
libpthread HP-UX (Release B.11.00): Thu Jun 7 11:32
:26 PDT 2001
/usr/lib/pa20_64/libpthread_tr.a:
mutex.c $Date: 2002/01/02 14:04:08 $Revision: r11ros
/4 PATCH_11.00 (PHCO_26000)
libpthread.c $Date: 2002/01/10 10:24:01 $Revision: r
11ros/8 PATCH_11.00 (PHCO_26000)
Pthread Interfaces
libpthread HP-UX (Release B.11.00): Thu Jun 7 11:33
:01 PDT 2001
OS-Core.CORE-64SLIB,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP:
/usr/lib/pa20_64/libpthread.1:
Pthread Interfaces
libpthread HP-UX (Release B.11.00): Thu Jun 7 11:32
:39 PDT 2001
mutex.c $Date: 2002/01/02 14:04:08 $Revision: r11ros
/4 PATCH_11.00 (PHCO_26000)
libpthread.c $Date: 2002/01/10 10:24:01 $Revision: r
11ros/8 PATCH_11.00 (PHCO_26000)
/usr/lib/pa20_64/libpthread_tr.1:
Pthread Interfaces
libpthread HP-UX (Release B.11.00): Thu Jun 7 11:33
:13 PDT 2001
mutex.c $Date: 2002/01/02 14:04:08 $Revision: r11ros
/4 PATCH_11.00 (PHCO_26000)
libpthread.c $Date: 2002/01/10 10:24:01 $Revision: r
11ros/8 PATCH_11.00 (PHCO_26000)
OS-Core.CORE-SHLIBS,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP:
/usr/lib/libpthread.1:
mutex.c $Date: 2002/01/02 14:04:08 $Revision: r11ros
/4 PATCH_11.00 (PHCO_26000)
libpthread.c $Date: 2002/01/10 10:24:01 $Revision: r
11ros/8 PATCH_11.00 (PHCO_26000)
Pthread Interfaces
libpthread HP-UX (Release B.11.00): Thu Jul 5 15:26
:27 PDT 2001
/usr/lib/libpthread_tr.1:
mutex.c $Date: 2002/01/02 14:04:08 $Revision: r11ros
/4 PATCH_11.00 (PHCO_26000)
libpthread.c $Date: 2002/01/10 10:24:01 $Revision: r
11ros/8 PATCH_11.00 (PHCO_26000)
Pthread Interfaces
libpthread HP-UX (Release B.11.00): Thu Jul 5 15:26
:57 PDT 2001
cksum(1) Output:
OS-Core.C-MIN-32ALIB,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP:
1769247397 224990 /usr/lib/libpthread.a
2362607968 255438 /usr/lib/libpthread_tr.a
OS-Core.C-MIN-64ALIB,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP:
1131967035 371326 /usr/lib/pa20_64/libpthread.a
712811377 425964 /usr/lib/pa20_64/libpthread_tr.a
OS-Core.CORE-64SLIB,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP:
248907963 131264 /usr/lib/pa20_64/libpthread.1
4191686307 160568 /usr/lib/pa20_64/libpthread_tr.1
OS-Core.CORE-SHLIBS,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP:
1528153877 139264 /usr/lib/libpthread.1
1110403026 167936 /usr/lib/libpthread_tr.1
Patch Conflicts: None
Patch Dependencies:
s700: 11.00: PHKL_17390
s800: 11.00: PHKL_17390
Hardware Dependencies: None
Other Dependencies:
PHCO_26000: To enable the pthread shared mutex performance
enhancement, three patches (PHKL_25998, PHKL_25999, and
PHCO_26000) are required. To enable the TLS feature, the
following patches should also be installed: PHCO_24148 libc
cumulative patch PHSS_23440 linker cumulative patch
PHSS_23785 linker startup patch PHSS_23953 Fortran90 B.11.01
patch
Supersedes:
PHKL_17935 PHKL_17709 PHKL_17294 PHKL_16368 PHKL_16239 PHCO_23792
PHCO_19666
Equivalent Patches: None
Patch Package Size: 1880 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 PHCO_26000
5. Run swinstall to install the patch:
swinstall -x autoreboot=true -x patch_match_target=true \
-s /tmp/PHCO_26000.depot
By default swinstall will archive the original software in
/var/adm/sw/save/PHCO_26000. 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 PHCO_26000.text file is
available in the product readme:
swlist -l product -a readme -d @ /tmp/PHCO_26000.depot
To put this patch on a magnetic tape and install from the
tape drive, use the command:
dd if=/tmp/PHCO_26000.depot of=/dev/rmt/0m bs=2k
Special Installation Instructions: None
|