 |
≫ |
|
|
 |
パッチ名: PHCO_36323
パッチ摘要: s700_800 11.23 pthreadライブラリ累積パッチ
作成日: 07/06/27
公開日: 07/08/13
ハードウェアプラットフォームおよびOSリリース:
s700: 11.23
s800: 11.23
現象:
PHCO_36323:
1.(SR:8606488689 CR:JAGag41337)
待機するスレッドがスピンできれば、非常に短い待機時間の条件変数を使用す
るマルチスレッドアプリケーションのパフォーマンスを向上させることができ
ます。
2.(SR:8606478754 CR:JAGag33007)
PHCO_33675やその置換パッチをインストールすると、mutexを使用する一部の
マルチスレッドアプリケーションでスケーラビリティの問題が起きます。
問題点の説明:
PHCO_36323:
1.(SR:8606488689 CR:JAGag41337)
条件変数の待機時間が非常に短い場合、条件変数を使用する一部のマルチスレ
ッドアプリケーションの処理時間が待機時間に比例して増減しないことがあり
ました。この原因は、条件待ちで休眠したスレッドの起動にかかる時間が総待
機時間を上回る可能性があるためです。
解決方法:
新たな環境変数PTHREAD_COND_PERFを導入しました。この環境変数を1に設定す
ると、pthread_cond_wait()/pthread_cond_timedwait()を呼び出すアプリケー
ションスレッドをある時間スピンさせることができます。これによって、非常
に短い待機時間の条件変数を使用するアプリケーションのパフォーマンスが向
上します。また、必要なら、新たな別の環境変数PTHREAD_COND_SPIN_YIELDを
以下のように設定することによって、spin属性を適切に調整することもできま
す。
PTHREAD_COND_SPIN_YIELD=<A>:<B>
ここで、
<A>: スピナーが条件に対してスピンを繰り返す回数。
<B>: スピン中のyield frequency(プロセッサを解放する頻度)。つまり、
スピナーはここで指定したスピン回数ごとに1回、sched_yield()を
実行します。
両属性とも正の整数で、かつ、同時に指定する必要があります。
2.(SR:8606478754 CR:JAGag33007 )
PHCO_33675やその置換パッチをインストールすると、mutexを使用する一部の
マルチスレッドアプリケーションのパフォーマンスが低下することがありまし
た。PHCO_33675では、mutexのデフォルトのスピン値とyield frequencyが変更
されました。その結果、旧スピン値では問題のなかった一部のアプリケーショ
ンのパフォーマンスが低下することがありました。
解決方法:
新たな環境変数PTHREAD_MUTEX_SPINVALを導入しました。パフォーマンスが低
下するアプリケーションは、この環境変数の設定値を"old"にすることによっ
て、mutexの旧スピン値を設定できます。また、PTHREAD_MUTEX_SPINVALを以下
のように設定することによって、mutexでのスピンを適切に調整することもで
きます。
PTHREAD_MUTEX_SPINVAL=<A>:<B>:<C>
ここで、
<A>: mutexロックの解放をブロックするスレッドが存在しない場合に、
スピナーがロックに対してスピンを繰り返す回数。
<B>: mutexロックの解放をブロックするスレッドが存在する場合に、スピ
ナーがロックに対してスピンを繰り返す回数。
<C>: スピン中のyield frequency(プロセッサを解放する頻度)。つまり、
スピナーはここで指定したスピン回数ごとに1回、sched_yield()を
実行します。
これらの属性はいずれも正の整数で、かつ、同時に指定する必要がありま
す。
-----------------------------------------------------------------------------
Patch Name: PHCO_36323
Patch Description: s700_800 11.23 pthread library cumulative patch
Creation Date: 07/06/27
Post Date: 07/08/13
Hardware Platforms - OS Releases:
s700: 11.23
s800: 11.23
Products: N/A
Filesets:
ProgSupport.PAUX-ENG-A-MAN,fr=B.11.23,fa=HP-UX_B.11.23_IA/PA,v=HP
OS-Core.CORE2-64SLIB,fr=B.11.23,fa=HP-UX_B.11.23_IA,v=HP
OS-Core.CORE2-SHLIBS,fr=B.11.23,fa=HP-UX_B.11.23_IA,v=HP
ProgSupport.C2-INC,fr=B.11.23,fa=HP-UX_B.11.23_IA,v=HP
OS-Core.C-MIN-32ALIB,fr=B.11.23,fa=HP-UX_B.11.23_PA,v=HP
OS-Core.C-MIN-64ALIB,fr=B.11.23,fa=HP-UX_B.11.23_PA,v=HP
OS-Core.CORE2-64SLIB,fr=B.11.23,fa=HP-UX_B.11.23_PA,v=HP
OS-Core.CORE2-SHLIBS,fr=B.11.23,fa=HP-UX_B.11.23_PA,v=HP
ProgSupport.C2-INC,fr=B.11.23,fa=HP-UX_B.11.23_PA,v=HP
Automatic Reboot?: No
Status: General Release
Critical:
No (superseded patches were critical)
PHCO_34944: HANG ABORT
HANG
JAGaf91535: MxN application creating threads with
the scheduling policy RTSCHED, sometimes hangs.
JAGag21565: pthread application (/usr/sbin/named)
hangs intermittently.
ABORT
JAGag07930: pthreads application dumps core when the
number of active threads reaches max_thread_proc.
PHCO_34718: ABORT
Application may abort when multiple threads
terminate simultaneously.
PHCO_33676: ABORT CORRUPTION
This patch repairs certain situations in which
applications dump core or data is corrupted.
PHCO_33675: OTHER
Fixes some performance issues with libpthread mutex
under high contention scenarios.
PHCO_32489: HANG MEMORY_LEAK
JAGaf47782 (SR 8606387629) : Race condition between
pthread_exit() and pthread_detach() leads to memory
leak.
JAGaf66244 (SR 8606406336) : Multi threaded
application built on PA-RISC platform hangs when
run on IPF platform through Aries.
PHCO_31553: HANG OTHER
Because of the incorrect binding, applications may run
slower than they should.
PHCO_30543: HANG
Category Tags:
defect_repair enhancement general_release critical
halts_system corruption memory_leak manual_dependencies
Path Name: /hp-ux_patches/s700_800/11.X/PHCO_36323
Symptoms:
PHCO_36323:
( SR:8606488689 CR:JAGag41337 )
Multithreaded applications that use condition variables
with very short wait time can perform better if the
waiting threads are allowed to spin.
( SR:8606478754 CR:JAGag33007 )
Some multithreaded applications that use mutexes face
scalability issues with PHCO_33675 and its superseding
patches.
PHCO_35997:
( SR:8606465273 CR:JAGag20888 )
Itanium applications creating unbound threads that modify
the psr.ac bit to perform unaligned access may misbehave.
( SR:8606477325 CR:JAGag31743 )
Reduce the overhead caused to single threaded applications,
when linked with libpthread.
( SR:8606468210 CR:JAGag23544 )
libpthread consumes CPU when there is no lock contention.
( SR:8606429720 CR:JAGaf89186 )
In the MxN mode, unbound threads receive certain external
signals despite being explicitly blocked by the threads.
PHCO_34944:
( SR:8606412674 CR:JAGaf72536 )
MxN applications sometimes dump core when the pthread
concurrency level is reduced.
( SR:8606416991 CR:JAGaf76824 )
pthread_detach() returns ESRCH intermittently.
( SR:8606429702 CR:JAGaf89168 )
Signal masks are not inherited by child threads as expected
in MxN mode.
( SR:8606430469 CR:JAGaf89928 )
The manpages of pthread_mutex_init(3T),
pthread_cond_init(3T) and pthread_rwlock_init(3T)
talk incorrectly about the APIs returning EBUSY.
( SR:8606432093 CR:JAGaf91535 )
MxN application creating threads with the scheduling policy
RTSCHED, sometimes hangs.
( SR:8606450932 CR:JAGag07930 )
pthreads application dumps core when the number of active
threads reaches max_thread_proc.
( SR:8606458492 CR:JAGag14709 )
pthread(3T)) manpage needs updation on link order with libc.
( SR:8606466029 CR:JAGag21565 )
pthread application (/usr/sbin/named) hangs intermittently.
PHCO_34718:
( SR:8606437582 CR:JAGaf95754 )
Application may abort when multiple threads
terminate simultaneously.
( SR:8606444475 CR:JAGag02031 )
Applications holding shared mutex for a longer duration may
see a performance degradation.
PHCO_33676:
( SR:8606403068 CR:JAGaf63003 )
Some multithreaded applications that require more stack
size than the currently supported stack size (i.e. 64KB on
PA-RISC and 256KB on IPF platforms) dump core.
( SR:8606405620 CR:JAGaf65541 )
Some multithreaded applications that require more than 256
keys for thread specific data dump core.
( SR:8606418222 CR:JAGaf78055 )
Some multithreaded applications using dlopen(3c) and
dlclose(3c) dump core under certain circumstances.
PHCO_33675:
( SR:8606403520 CR:JAGaf63453 )
Libpthread performance degrades significantly under high
contention scenarios of mutexes.
PHCO_32489:
( SR:8606387629 CR:JAGaf47782 )
Race condition between pthread_exit() and pthread_detach()
of a thread leads to memory leak.
( SR:8606392186 CR:JAGaf52318 )
Standards conformance of pthread_suspend() and
pthread_continue() are mentioned incorrectly in the man
page.
( SR:8606390985 CR:JAGaf51130 ) Duplicate
( SR:8606403528 CR:JAGaf63461 )
System call traces show that the number of wake ups issued
for threads in the sleep queue, waiting for a spin lock is
too large compared to the actual number of sleeps.
( SR:8606406336 CR:JAGaf66244 )
Multi threaded application built on PA-RISC platform hangs
when run on IPF platform through Aries.
( SR:8606411050 CR:JAGaf70932 )
Application using sys/pthread.h gives the following
warning during compilation:
"zero used for undefined preprocessing identifier"
PHCO_31553:
( SR:8606351175 CR:JAGaf11987 )
pthread_cancel hangs in case the thread it is trying to
cancel is sleeping inside the library.
( SR:8606352206 CR:JAGaf13011 )
JAVA profiling does not work with unbound threads.
( SR:8606351178 CR:JAGaf11990 )
pthread_mutex_lock() may return incorrect ETIMEDOUT
if it is called just after pthread_cond_timedwait()
and pthread_cond_signal() happens simultaneously with
timer expiration of pthread_cond_timedwait().
If pthread_cond_timedwait() is called in one thread and
pthread_cond_signal() in the other repeatedly, the
application may hang.
( SR:8606357909 CR:JAGaf18608 )
In a multithreaded application kernel threads are bound
to the CPU even when no binding is specified.
( SR:8606358478 CR:JAGaf19177 )
In a multi threaded application, some threads may not come
out of time based sleep.
( SR:8606365130 CR:JAGaf25765 )
In a multi threaded application, a thread (doing the
time based sleep) might not be woken up.
( SR:8606366778 CR:JAGaf27342 )
A thread could get suspended while holding some internal
locks and may lead to deadlock.
( SR:8606363198 CR:JAGaf23861 )
An application that fit in the 32-bit address space
on PA may not fit in the 32-bit address space on IA.
( SR:8606368385 CR:JAGaf28947 )
When a 11i v1 multi-threaded application is compiled
on 11i v2, the default scheduling contention scope of
threads will be different from that on 11i v1.
PHCO_30543:
( SR:8606342667 CR:JAGaf03561 ) Duplicate
( SR:8606343625 CR:JAGaf04477 )
If pthread_cond_timedwait() is called in one thread and
pthread_cond_signal() in the other repeatedly, the
application may hang.
pthread_mutex_lock() may return incorrect ETIMEDOUT
if it is called just after pthread_cond_timedwait()
and pthread_cond_signal() happens simultaneously with
timer expiration of pthread_cond_timedwait().
PHCO_30476:
( SR:8606313694 CR:JAGae76486 )
JAVA profiling does not work with unbound threads.
Defect Description:
PHCO_36323:
( SR:8606488689 CR:JAGag41337 )
Some multithreaded applications that use condition variables
may not scale where the wait time on the condition variable
is very low. This happens because threads go to sleep
waiting on a condition and the time taken to wakeup these
threads can be higher than the total wait time.
Resolution:
Application threads calling pthread_cond_wait() or
pthread_cond_timedwait() can be made to spin for some time
by setting the environmental variable PTHREAD_COND_PERF=1.
This will boost performance of applications that have very
short wait time on a condition variable. If required, the
spin attributes can be fine tuned by setting another
environment variable PTHREAD_COND_SPIN_YIELD as follows -
PTHREAD_COND_SPIN_YIELD=<A>:<B>, where -
<A> is the number of iterations a spinner should spin
for the condition.
<B> is the yield frequency while spinning i.e, the
spinner will do a sched_yield() after every <B>
iterations.
Both attributes should be positive integers and
need to be specified together.
( SR:8606478754 CR:JAGag33007 )
Some multithreaded applications that use mutexes may see a
performance degrade with PHCO_33675 and its superseding
patches. The default spin values and yield frequency for
mutexes was changed in PHCO_33675. This may cause a
performance degrade for some applications which performed
well with the old spin values.
Resolution:
Applications that see a performance degrade can set the
environment tune PTHREAD_MUTEX_SPINVAL=old to set the old
spin values for the mutex. PTHREAD_MUTEX_SPINVAL can also
be set (as follows) to fine tune the spinning in mutexes.
PTHREAD_MUTEX_SPINVAL=<A>:<B>:<C> where,
<A> is the number of iterations a spinner should spin
for the lock if there is no other thread blocking
for the mutex lock to be released.
<B> is the number of iterations a spinner should spin
for the lock if there are other threads blocking
for the mutex lock to be released.
<C> is the yield frequency while spinning i.e, the
spinner will do a sched_yield() after every <C>
iterations.
All three attributes should be positive integers
and need to be specified together.
PHCO_35997:
( SR:8606465273 CR:JAGag20888 )
Userspace context switch does not save and restore the
psr.ac bit. Hence, applications using unbound threads that
set this bit for unaligned memory access may misbehave.
Resolution:
During a context switch, the user-modifiable bits of PSR
(psr.um) are saved and restored.
( SR:8606477325 CR:JAGag31743 )
Single threaded applications linked with libpthread show
performance degradation because of thread-safe libraries
having to acquire and release mutex locks. The requirement
is to reduce the overhead of calling pthread_mutex_lock(3T)
and pthread_mutex_unlock(3T) in a single threaded
application.
Resolution:
Now pthread_mutex_lock(3T) and pthread_mutex_unlock(3T) will
follow a light-weight path if the application is single
threaded, thus improving performance.
( SR:8606468210 CR:JAGag23544 )
pthread_mutex_unlock(3T) consumes more CPU even if there is
no contention on the lock.
Resolution:
Now pthread_mutex_unlock(3T) works faster when there is no
lock contention.
( SR:8606429720 CR:JAGaf89186 )
There are certain windows in time where an unbound thread
can receive an external signal, despite it being explicitly
blocked by the user thread.
Resolution:
Suitable changes have been made in libpthread, to facilitate
the kernel to address this issue.
PHCO_34944:
( SR:8606412674 CR:JAGaf72536 )
MxN applications like /usr/sbin/utmpd sometimes dump core
when the pthread concurrency level is reduced. The
concurrency level can be reduced either by the program
through pthread_setconcurrency() or when the number of CPUs
on which the program can run is changed through pset or
vpars related operations. The problem is due to a race
condition under which the thread library fails to do proper
load balancing.
Resolution:
The problem with the load balancer is corrected.
( SR:8606416991 CR:JAGaf76824 )
pthread_detach() sometimes returns ESRCH on a thread that
was created as a joinable thread and is not reaped using
pthread_join(). The problem occurs when multiple threads
including the target thread to be detached exit, while
pthread_detach() is in progress.
Resolution:
This problem is fixed. pthread_detach() on a joinable
thread now returns EBUSY only if the thread is already
reaped using pthread_join().
( SR:8606429702 CR:JAGaf89168 )
Signal masks of certain signals like SIGSEGV are not
inherited by the child threads from the parent thread as
expected in MxN applications. The problem is due to
libpthread not copying the signal mask to the child thread
correctly.
Resolution:
libpthread is now made to copy the signal mask of the parent
thread to the child thread correctly, ensuring that the
child thread always inherits the parent thread's signal
mask.
( SR:8606430469 CR:JAGaf89928 )
The return value section of the manpage of
pthread_mutex_init(3T), pthread_cond_init(3T) and
pthread_rwlock_init(3T) state that they return EBUSY if the
associated synchronization object is already initialized.
However, getting EBUSY cannot be expected all the time
since the behavior of reinitializing the object is
undefined.
Resolution:
The man pages of pthread_mutex_init(3T),
pthread_cond_init(3T) and pthread_rwlock_init(3T) have been
modified appropriately.
( SR:8606432093 CR:JAGaf91535 )
The application hangs due to libpthread attempting to
preempt the incorrect thread when a thread with scheduling
policy RTSCHED, returns from the kernel after completing a
blocking call.
Resolution:
The code is corrected to ensure that libpthread preempts the
correct thread when a thread with scheduling policy RTSCHED,
returns from the kernel after completing a blocking call.
( SR:8606450932 CR:JAGag07930 )
The problem occurs due to libpthread not handling the cache
for threads properly when the application attempts to create
threads beyond the process limit. This problem occurs in the
case of creating threads with non default stack size alone.
Resolution:
The cache for threads are now handled properly, when the
number of threads created equals the process limit.
( SR:8606458492 CR:JAGag14709 )
While compiling a multi-threaded application, libpthread
should be linked before libc or else the behavior of the
application at run time is undefined. The libpthread manpage
does not talk about this link order dependency.
Resolution:
pthread(3T) manpage is updated to provide information on the
link order dependency with libc. The manpage provides a link
to another manpage pthread_stubs(5), which talks about the
dependency.
( SR:8606466029 CR:JAGag21565 )
PHCO_33675 introduced a behavior where
pthread_mutex_destroy() is allowed to complete execution
before another thread doing pthread_mutex_unlock() returns.
This results in the thread doing pthread_mutex_unlock() to
hang at times.
Resolution:
It is now ensured that pthread_mutex_destroy() does not
complete destroying the mutex till all other threads
attempting a pthread_mutex_unlock() on the same mutex
return.
PHCO_34718:
( SR:8606437582 CR:JAGaf95754 )
PHCO_33675 introduced behavior on Itanium-based systems
that may cause applications to abort. When multiple threads
with a large stack size (256K or larger) are terminated at
the same time, data protected by a spinlock may be accessed
before the spinlock is acquired. As a result, the global
data may then be accessed by multiple threads
simultaneously causing unexpected behavior, such as the
application aborting.
Resolution:
The code is fixed to ensure that spinlock
protects the data properly.
( SR:8606444475 CR:JAGag02031 )
With PHCO_33675, applications on a loaded system holding
shared mutexes for a longer duration can see a performance
degradation. Problem is due to high spinning by threads
contending for shared mutex.
Resolution:
Now the applications that are impacted can get the behavior
prior to PHCO_33675 by setting the environment variable
PTHREAD_SHARED_MUTEX_OLDSPIN to 1.
PHCO_33676:
( SR:8606403068 CR:JAGaf63003 )
The default stack size provided by HP-UX libpthread is
fixed and it is not enough for certain multithreaded
applications. This causes such applications to dump core.
Resolution:
A new environment variable PTHREAD_DEFAULT_STACK_SIZE is
provided to set the default stack size to a desired value.
This saves applications from dumping core due to
insufficient default stack size.
( SR:8606405620 CR:JAGaf65541 )
HP-UX libpthread supports 256 keys for thread specific
data. This is not sufficient for some multithreaded
applications. This causes the application to function
incorrectly.
Resolution:
A new environment variable PTHREAD_USER_KEYS_MAX is
provided to set the maximum number of keys needed.
( SR:8606418222 CR:JAGaf78055 )
Some multithreaded applications dump core when they call
dlopen(3C) and dlclose(3C) in succession followed by a call
to dlopen(3C) on the same library again. The problem occurs
when a dlopen(3C) call is made on a shared library which
uses thread local storage (TLS). A missing pointer
validation in the TLS code causes the application to dump
core.
Resolution:
Code has been modified to take care of this.
PHCO_33675:
( SR:8606403520 CR:JAGaf63453 )
Many areas in the libpthread mutex code such as lock/unlock
mechanisms, memory ordering, number of spinners, lock hold
time, etc. are not optimized for performance. This causes
performance degradation under high contention scenarios
and leaves libpthread mutexes highly unscalable.
Resolution:
Code has been modified to take care of the mutex performance
issues under high contention scenarios. The fix also takes
care of some performance issues specific to IPF platforms.
PHCO_32489:
( SR:8606387629 CR:JAGaf47782 )
When a joinable thread is exiting and a pthread_detach() is
being called on that thread simultaneously, a race
condition occurs in the code path which lead to not
freeing of resources held by the exiting thread.
Resolution:
Code has been modified to avoid the race condition and
hence the resources held by the exiting thread are freed.
( SR:8606392186 CR:JAGaf52318 )
Standards conformance of pthread_suspend() and
pthread_continue() are mentioned as "X/Open" even though
they are not standard APIs.
Resolution:
Standards conformance of pthread_suspend() and
pthread_continue() are set to "None" in the man page.
( SR:8606390985 CR:JAGaf51130 ) Duplicate
( SR:8606403528 CR:JAGaf63461 )
Increment and decrement of the counter of waiting threads
for a spin lock in a parallel computing environment is done
without any protection to its order of access. This may
lead to computing wrong number of waiting threads and thus
issuing incorrect number of wake ups.
Resolution:
Instead of maintaining counter for waiting threads, a flag
is used to indicate if there are any waiting threads.
The wake ups are now issued based on this flag, which is
protected for its order of access. This reduces the chance
of issuing incorrect wake ups.
( SR:8606406336 CR:JAGaf66244 )
Multi threaded application built on PA-RISC platform hangs
when run on IPF platform through Aries, because
pthread_mutex_lock() intermittently gets blocked on a mutex
that is not locked. This is due to the difference in
ordering of instruction execution in PA-RISC and IPF
platforms whereby the mutex lock is manipulated wrongly.
Resolution:
The order of access to mutex lock is made stronger so that
it is not manipulated wrongly and hence
pthread_mutex_lock() does not get blocked on unlocked mutex.
( SR:8606411050 CR:JAGaf70932 )
There is an incorrect usage of #elif preprocessor in
sys/pthread.h which causes warning during compilation.
Resolution:
The usage of #elif preprocessor in sys/pthread.h is now
corrected and there are no more warnings during compilation.
PHCO_31553:
( SR:8606351175 CR:JAGaf11987 )
Main thread M, tries to cancel a thread T1, which is doing
the pthread_join() on another thread T2. The thread T2 is
doing the condition wait which will never be woken up.
As a result, T1 will never return from 'pthread_join()'.
But, as in_api count is greater than 0 the pthread_suspend()
from 'pthread_cancel()' ends up in an indefinite sleep
waiting for T1 to get self-suspended.
Resolution:
Made join sleep interruptible.
( SR:8606352206 CR:JAGaf13011 )
Thread profiling data provided for unbound threads by
Pthread library is insufficient when compared to the data
provided for bound threads.
Resolution:
All the necessary information for JAVA application
profiling are being provided by Pthread library.
( SR:8606351178 CR:JAGaf11990 )
If the timer is expired for pthread_cond_timedwait() and
another thread calls pthread_cond_signal() at the same
time, pthread library is not handling the scenario
correctly. The internal mechanism (that handles user
space sleep timeouts) is waking up the sleeping thread at
the wrong time. Because of this:
If a thread calls pthread_cond_timedwait() followed by
pthread_mutex_lock()(on the mutex that is already
locked), the thread is wokenup when it is sleeping in
pthread_mutex_lock(). Hence, pthread_mutex_lock()
returns ETIMEDOUT.
If pthread_cond_timedwait() and pthread_cond_signal()
are called repeatedly in separate threads, the internal
mechanism will wakeup the thread which is in a different
pthread_cond_timedwait() call than the intended. Also,
it does not cleanup the associated data structures.
Subsequently, the internal data structures are
corrupted causing the application hang.
Resolution:
pthread library code is modified so that only one of the
the callout server thread and pthread_cond_signal() will
process the internal data structures associated with the
time based sleep in user space and wakeup the sleeping
thread appropriately.
( SR:8606357909 CR:JAGaf18608 )
There should not be any default binding for the scheduler
activation (SA). Any SA created or converted to SA (by
concurrency manager) should have the binding type
PTHREAD_BIND_NONE_NP instead of PTHREAD_BIND_ADVISORY_NP.
In case of PTHREAD_BIND_NONE_NP, binding spu should be
MPC_SPUFLOAT not 0.
Resolution:
There should not be any default binding for the SA, if none
specified by the application.
( SR:8606358478 CR:JAGaf19177 )
In a multi threaded application using mxn model, if a
process scope thread is doing time based sleep, internal
data structures would be maintained to wakeup the thread
when the timer expires. The internal mechanism that does
this processing is missing some data structures and
subsequently, corresponding thread may not be woken up.
Resolution:
While inserting a new data structure for the time based
sleep, wakeup the internal mechanism to know about the
new event and the corresponding thread is woken up
appropriately when the timer expires.
( SR:8606365130 CR:JAGaf25765 )
When a thread goes to time based sleep (for example using
pthread_cond_timedwait()), it needs to wakeup
the internal mechanism and inform about the event. This
is not happening in some corner cases.
Resolution:
The pthread code is modified so that a thread (doing
the time based sleep) is woken up when the timer
expires.
( SR:8606366778 CR:JAGaf27342 )
When a thread gets suspended, it could be holding internal
pthread resources. In one scenario, the suspender thread
could be trying to get the same resource that the suspended
thread could be holding, causing a deadlock.
Resolution:
Fixed pthread_suspend() in pthread library to not suspend a
thread while the thread is holding any spinlocks.
( SR:8606363198 CR:JAGaf23861 )
The pthread implementation arbitrarily divides
the virtual memory allocated for the stack into statically
sized regions for the RSE backing store and memory stack.
This in turn causes applications which consume more of
one portion than the other to experience premature
stack overflow.
Applications porting to IPF are currently forced to
allocate more stack space in order to compensate
for the artificial division of the space.
Resolution:
Provided new pthread interfaces for tuning the stack
requirements on IA platforms.
pthread_attr_setrsestacksize_np(),
pthread_attr_getrsestacksize_np(),
pthread_default_rsestacksize_np().
( SR:8606368385 CR:JAGaf28947 )
When a 11i v1 multi-threaded application is compiled
on 11i v2, the default scope of threads will be process
scope, whereas system scope is expected. It was a
defect introduced in 11i v2. The source compatibility
for 11i v1 multi-threaded applications is broken
because of this defect.
Resolution:
libpthread code is modified so that when 11i v1
application is compiled on 11i v2 Update 2 and forward,
the application will get system scope threads by
default. However, process scope threads can be created
by passing scope attribute parameter set with
PTHREAD_SCOPE_PROCESS to pthread_create().
PHCO_30543:
( SR:8606342667 CR:JAGaf03561 ) Duplicate
( SR:8606343625 CR:JAGaf04477 )
Pthread library is not appropriately handling the scenario
where the timer is expired for pthread_cond_timedwait()
and another thread calls pthread_cond_signal() at the same
time. The internal mechanism (that handles user space
sleep timeouts) is waking up the sleeping thread at the
wrong time. Because of this:
If pthread_cond_timedwait() and pthread_cond_signal()
are called repeatedly in separate threads, the internal
mechanism will wakeup the thread which is in a different
pthread_cond_timedwait() call than the intended. Also,
it does not cleanup the associated data structures.
Subsequently, the internal data structures are
corrupted causing the application hang.
If a thread calls pthread_cond_timedwait() followed by
pthread_mutex_lock()(on the mutex that is already
locked), the thread is wokenup when it is sleeping in
pthread_mutex_lock(). Hence, pthread_mutex_lock()
returns ETIMEDOUT.
Resolution:
pthread library code is modified so that only one of the
internal mechanism (that handles user space sleep
timeouts) or pthread_cond_signal() will process the
internal data structures associated with the time based
sleep in user space and wakeup the sleeping thread
appropriately.
PHCO_30476:
( SR:8606313694 CR:JAGae76486 )
Thread profiling data provided for unbound threads by
Pthread library is insufficient when compared to the data
provided for bound threads.
Resolution:
All the necessary information for JAVA application profiling
are being provided by Pthread library.
Enhancement:
Yes
PHCO_36323:
JAGag41337 :
A new environment variable, PTHREAD_COND_PERF is
provided to introduce spinning in condition
variables. Additionally, PTHREAD_COND_SPIN_YIELD
is provided to fine tune condition variable spin
attributes.
JAGag33007 :
A new environment variable, PTHREAD_MUTEX_SPINVAL
is provided to fine tune mutex spin attributes.
PHCO_33676:
JAGaf63003 : A new environment variable
PTHREAD_DEFAULT_STACK_SIZE is provided to set the
default stack size to a desired value.
JAGaf65541 : A new environment variable
PTHREAD_USER_KEYS_MAX is provided to allow
applications to set the maximum number of keys
needed.
SR:
8606488689 8606478754 8606465273 8606477325 8606468210
8606429720 8606412674 8606416991 8606429702 8606430469
8606432093 8606450932 8606458492 8606466029 8606437582
8606444475 8606403068 8606405620 8606418222 8606403520
8606387629 8606392186 8606403528 8606406336 8606411050
8606390985 8606313694 8606342667 8606343625 8606351175
8606351178 8606352206 8606357909 8606358478 8606363198
8606365130 8606366778 8606368385
Patch Files:
ProgSupport.PAUX-ENG-A-MAN,fr=B.11.23,
fa=HP-UX_B.11.23_IA/PA,v=HP:
/usr/share/man/man3.Z/pthread.3t
/usr/share/man/man3.Z/pthread_attr_getdetachstate.3t
/usr/share/man/man3.Z/pthread_attr_init.3t
/usr/share/man/man3.Z/pthread_cond_init.3t
/usr/share/man/man3.Z/pthread_create.3t
/usr/share/man/man3.Z/pthread_default_rsestacksize_np.3t
/usr/share/man/man3.Z/pthread_default_stacksize_np.3t
/usr/share/man/man3.Z/pthread_key_create.3t
/usr/share/man/man3.Z/pthread_mutex_init.3t
/usr/share/man/man3.Z/pthread_mutexattr_getspin_np.3t
/usr/share/man/man3.Z/pthread_resume_np.3t
/usr/share/man/man3.Z/pthread_rwlock_init.3t
/usr/share/man/man3.Z/pthread_attr_destroy.3t
/usr/share/man/man3.Z/pthread_attr_getguardsize.3t
/usr/share/man/man3.Z/pthread_attr_getinheritsched.3t
/usr/share/man/man3.Z/pthread_attr_getprocessor_np.3t
/usr/share/man/man3.Z/pthread_attr_getrsestacksize_np.3t
/usr/share/man/man3.Z/pthread_attr_getschedparam.3t
/usr/share/man/man3.Z/pthread_attr_getschedpolicy.3t
/usr/share/man/man3.Z/pthread_attr_getscope.3t
/usr/share/man/man3.Z/pthread_attr_getstackaddr.3t
/usr/share/man/man3.Z/pthread_attr_getstacksize.3t
/usr/share/man/man3.Z/pthread_attr_setdetachstate.3t
/usr/share/man/man3.Z/pthread_attr_setguardsize.3t
/usr/share/man/man3.Z/pthread_attr_setinheritsched.3t
/usr/share/man/man3.Z/pthread_attr_setprocessor_np.3t
/usr/share/man/man3.Z/pthread_attr_setrsestacksize_np.3t
/usr/share/man/man3.Z/pthread_attr_setschedparam.3t
/usr/share/man/man3.Z/pthread_attr_setschedpolicy.3t
/usr/share/man/man3.Z/pthread_attr_setscope.3t
/usr/share/man/man3.Z/pthread_attr_setstackaddr.3t
/usr/share/man/man3.Z/pthread_attr_setstacksize.3t
/usr/share/man/man3.Z/pthread_continue.3t
/usr/share/man/man3.Z/pthread_suspend.3t
/usr/share/man/man5.Z/pthread_scope_options.5
OS-Core.CORE2-64SLIB,fr=B.11.23,fa=HP-UX_B.11.23_IA,v=HP:
/usr/lib/pa20_64/liblwp.1
/usr/newconfig/usr/lib/hpux64/libpthread.so.1
/usr/lib/hpux64/libpthread_tr.so.1
/usr/newconfig/usr/lib/pa20_64/libpthread.1
/usr/lib/pa20_64/libpthread_tr.1
OS-Core.CORE2-SHLIBS,fr=B.11.23,fa=HP-UX_B.11.23_IA,v=HP:
/usr/lib/liblwp.1
/usr/lib/hpux32/libmxndbg.so.1
/usr/lib/hpux64/libmxndbg.so.1
/usr/lib/libmxndbg.1
/usr/lib/libmxndbg64.1
/usr/newconfig/usr/lib/hpux32/libpthread.so.1
/usr/lib/hpux32/libpthread_tr.so.1
/usr/newconfig/usr/lib/libpthread.1
/usr/lib/libpthread_tr.1
ProgSupport.C2-INC,fr=B.11.23,fa=HP-UX_B.11.23_IA,v=HP:
/usr/include/sys/pthread.h
OS-Core.C-MIN-32ALIB,fr=B.11.23,fa=HP-UX_B.11.23_PA,v=HP:
/usr/lib/liblwp.a
/usr/lib/libpthread.a
/usr/lib/libpthread_tr.a
OS-Core.C-MIN-64ALIB,fr=B.11.23,fa=HP-UX_B.11.23_PA,v=HP:
/usr/lib/pa20_64/liblwp.a
/usr/lib/pa20_64/libpthread.a
/usr/lib/pa20_64/libpthread_tr.a
OS-Core.CORE2-64SLIB,fr=B.11.23,fa=HP-UX_B.11.23_PA,v=HP:
/usr/lib/pa20_64/liblwp.1
/usr/newconfig/usr/lib/pa20_64/libpthread.1
/usr/lib/pa20_64/libpthread_tr.1
OS-Core.CORE2-SHLIBS,fr=B.11.23,fa=HP-UX_B.11.23_PA,v=HP:
/usr/lib/liblwp.1
/usr/lib/libmxndbg.1
/usr/lib/libmxndbg64.1
/usr/newconfig/usr/lib/libpthread.1
/usr/lib/libpthread_tr.1
ProgSupport.C2-INC,fr=B.11.23,fa=HP-UX_B.11.23_PA,v=HP:
/usr/include/sys/pthread.h
what(1) Output:
ProgSupport.PAUX-ENG-A-MAN,fr=B.11.23,
fa=HP-UX_B.11.23_IA/PA,v=HP:
/usr/share/man/man3.Z/pthread.3t:
None
/usr/share/man/man3.Z/pthread_attr_getdetachstate.3t:
None
/usr/share/man/man3.Z/pthread_attr_init.3t:
None
/usr/share/man/man3.Z/pthread_cond_init.3t:
None
/usr/share/man/man3.Z/pthread_create.3t:
None
/usr/share/man/man3.Z/pthread_default_rsestacksize_np.3t:
None
/usr/share/man/man3.Z/pthread_default_stacksize_np.3t:
None
/usr/share/man/man3.Z/pthread_key_create.3t:
None
/usr/share/man/man3.Z/pthread_mutex_init.3t:
None
/usr/share/man/man3.Z/pthread_mutexattr_getspin_np.3t:
None
/usr/share/man/man3.Z/pthread_resume_np.3t:
None
/usr/share/man/man3.Z/pthread_rwlock_init.3t:
None
/usr/share/man/man3.Z/pthread_attr_destroy.3t:
None
/usr/share/man/man3.Z/pthread_attr_getguardsize.3t:
None
/usr/share/man/man3.Z/pthread_attr_getinheritsched.3t:
None
/usr/share/man/man3.Z/pthread_attr_getprocessor_np.3t:
None
/usr/share/man/man3.Z/pthread_attr_getrsestacksize_np.3t:
None
/usr/share/man/man3.Z/pthread_attr_getschedparam.3t:
None
/usr/share/man/man3.Z/pthread_attr_getschedpolicy.3t:
None
/usr/share/man/man3.Z/pthread_attr_getscope.3t:
None
/usr/share/man/man3.Z/pthread_attr_getstackaddr.3t:
None
/usr/share/man/man3.Z/pthread_attr_getstacksize.3t:
None
/usr/share/man/man3.Z/pthread_attr_setdetachstate.3t:
None
/usr/share/man/man3.Z/pthread_attr_setguardsize.3t:
None
/usr/share/man/man3.Z/pthread_attr_setinheritsched.3t:
None
/usr/share/man/man3.Z/pthread_attr_setprocessor_np.3t:
None
/usr/share/man/man3.Z/pthread_attr_setrsestacksize_np.3t:
None
/usr/share/man/man3.Z/pthread_attr_setschedparam.3t:
None
/usr/share/man/man3.Z/pthread_attr_setschedpolicy.3t:
None
/usr/share/man/man3.Z/pthread_attr_setscope.3t:
None
/usr/share/man/man3.Z/pthread_attr_setstackaddr.3t:
None
/usr/share/man/man3.Z/pthread_attr_setstacksize.3t:
None
/usr/share/man/man3.Z/pthread_continue.3t:
None
/usr/share/man/man3.Z/pthread_suspend.3t:
None
/usr/share/man/man5.Z/pthread_scope_options.5:
None
OS-Core.CORE2-64SLIB,fr=B.11.23,fa=HP-UX_B.11.23_IA,v=HP:
/usr/lib/pa20_64/liblwp.1:
LWP (LightWeightProcess) Interfaces
/usr/newconfig/usr/lib/hpux64/libpthread.so.1:
Pthread Interfaces
pthread_version.c $Date: 2007/06/21 23:21:30 $Revisi
on: r11.23/3 PATCH_11.23 (PHCO_36323)
/usr/lib/hpux64/libpthread_tr.so.1:
Pthread Interfaces
pthread_version.c $Date: 2007/06/21 23:21:30 $Revisi
on: r11.23/3 PATCH_11.23 (PHCO_36323)
/usr/newconfig/usr/lib/pa20_64/libpthread.1:
Pthread Interfaces
pthread_version.c $Date: 2007/06/21 23:21:30 $Revisi
on: r11.23/3 PATCH_11.23 (PHCO_36323)
/usr/lib/pa20_64/libpthread_tr.1:
Pthread Interfaces
pthread_version.c $Date: 2007/06/21 23:21:30 $Revisi
on: r11.23/3 PATCH_11.23 (PHCO_36323)
OS-Core.CORE2-SHLIBS,fr=B.11.23,fa=HP-UX_B.11.23_IA,v=HP:
/usr/lib/liblwp.1:
LWP (LightWeightProcess) Interfaces
/usr/lib/hpux32/libmxndbg.so.1:
libmxndbg Interfaces for gdb
/usr/lib/hpux64/libmxndbg.so.1:
libmxndbg Interfaces for gdb
/usr/lib/libmxndbg.1:
libmxndbg Interfaces for gdb
/usr/lib/libmxndbg64.1:
libmxndbg Interfaces for gdb
/usr/newconfig/usr/lib/hpux32/libpthread.so.1:
Pthread Interfaces
pthread_version.c $Date: 2007/06/21 23:21:30 $Revisi
on: r11.23/3 PATCH_11.23 (PHCO_36323)
/usr/lib/hpux32/libpthread_tr.so.1:
Pthread Interfaces
pthread_version.c $Date: 2007/06/21 23:21:30 $Revisi
on: r11.23/3 PATCH_11.23 (PHCO_36323)
/usr/newconfig/usr/lib/libpthread.1:
pthread_version.c $Date: 2007/06/21 23:21:30 $Revisi
on: r11.23/3 PATCH_11.23 (PHCO_36323)
Pthread Interfaces
/usr/lib/libpthread_tr.1:
pthread_version.c $Date: 2007/06/21 23:21:30 $Revisi
on: r11.23/3 PATCH_11.23 (PHCO_36323)
Pthread Interfaces
ProgSupport.C2-INC,fr=B.11.23,fa=HP-UX_B.11.23_IA,v=HP:
/usr/include/sys/pthread.h:
pthread.h $Date: 2005/08/19 03:02:18 $Revision: r11.
23/6 PATCH_11.23 (PHCO_32489) */
common/pthreads/pthread.h $Revision: $
OS-Core.C-MIN-32ALIB,fr=B.11.23,fa=HP-UX_B.11.23_PA,v=HP:
/usr/lib/liblwp.a:
LWP (LightWeightProcess) Interfaces
/usr/lib/libpthread.a:
Pthread Interfaces
pthread_version.c $Date: 2007/06/21 23:21:30 $Revisi
on: r11.23/3 PATCH_11.23 (PHCO_36323)
/usr/lib/libpthread_tr.a:
Pthread Interfaces
pthread_version.c $Date: 2007/06/21 23:21:30 $Revisi
on: r11.23/3 PATCH_11.23 (PHCO_36323)
OS-Core.C-MIN-64ALIB,fr=B.11.23,fa=HP-UX_B.11.23_PA,v=HP:
/usr/lib/pa20_64/liblwp.a:
LWP (LightWeightProcess) Interfaces
/usr/lib/pa20_64/libpthread.a:
Pthread Interfaces
pthread_version.c $Date: 2007/06/21 23:21:30 $Revisi
on: r11.23/3 PATCH_11.23 (PHCO_36323)
/usr/lib/pa20_64/libpthread_tr.a:
Pthread Interfaces
pthread_version.c $Date: 2007/06/21 23:21:30 $Revisi
on: r11.23/3 PATCH_11.23 (PHCO_36323)
OS-Core.CORE2-64SLIB,fr=B.11.23,fa=HP-UX_B.11.23_PA,v=HP:
/usr/lib/pa20_64/liblwp.1:
LWP (LightWeightProcess) Interfaces
/usr/newconfig/usr/lib/pa20_64/libpthread.1:
Pthread Interfaces
pthread_version.c $Date: 2007/06/21 23:21:30 $Revisi
on: r11.23/3 PATCH_11.23 (PHCO_36323)
/usr/lib/pa20_64/libpthread_tr.1:
Pthread Interfaces
pthread_version.c $Date: 2007/06/21 23:21:30 $Revisi
on: r11.23/3 PATCH_11.23 (PHCO_36323)
OS-Core.CORE2-SHLIBS,fr=B.11.23,fa=HP-UX_B.11.23_PA,v=HP:
/usr/lib/liblwp.1:
LWP (LightWeightProcess) Interfaces
/usr/lib/libmxndbg.1:
libmxndbg Interfaces for gdb
/usr/lib/libmxndbg64.1:
libmxndbg Interfaces for gdb
/usr/newconfig/usr/lib/libpthread.1:
pthread_version.c $Date: 2007/06/21 23:21:30 $Revisi
on: r11.23/3 PATCH_11.23 (PHCO_36323)
Pthread Interfaces
/usr/lib/libpthread_tr.1:
pthread_version.c $Date: 2007/06/21 23:21:30 $Revisi
on: r11.23/3 PATCH_11.23 (PHCO_36323)
Pthread Interfaces
ProgSupport.C2-INC,fr=B.11.23,fa=HP-UX_B.11.23_PA,v=HP:
/usr/include/sys/pthread.h:
pthread.h $Date: 2005/08/19 03:02:18 $Revision: r11.
23/6 PATCH_11.23 (PHCO_32489) */
common/pthreads/pthread.h $Revision: $
cksum(1) Output:
ProgSupport.PAUX-ENG-A-MAN,fr=B.11.23,
fa=HP-UX_B.11.23_IA/PA,v=HP:
3450485573 17767 /usr/share/man/man3.Z/pthread.3t
39647956 11721 /usr/share/man/man3.Z/
pthread_attr_getdetachstate.3t
2596741808 2522 /usr/share/man/man3.Z/pthread_attr_init.3t
1118551879 2674 /usr/share/man/man3.Z/pthread_cond_init.3t
2270535524 2528 /usr/share/man/man3.Z/pthread_create.3t
2450457684 1959 /usr/share/man/man3.Z/
pthread_default_rsestacksize_np.3t
1383520659 1987 /usr/share/man/man3.Z/
pthread_default_stacksize_np.3t
4065544132 3215 /usr/share/man/man3.Z/pthread_key_create.3t
3952801666 2614 /usr/share/man/man3.Z/pthread_mutex_init.3t
841824979 4724 /usr/share/man/man3.Z/
pthread_mutexattr_getspin_np.3t
380885007 3241 /usr/share/man/man3.Z/pthread_resume_np.3t
1874753880 2647 /usr/share/man/man3.Z/pthread_rwlock_init.3t
2596741808 2522 /usr/share/man/man3.Z/
pthread_attr_destroy.3t
39647956 11721 /usr/share/man/man3.Z/
pthread_attr_getguardsize.3t
39647956 11721 /usr/share/man/man3.Z/
pthread_attr_getinheritsched.3t
39647956 11721 /usr/share/man/man3.Z/
pthread_attr_getprocessor_np.3t
39647956 11721 /usr/share/man/man3.Z/
pthread_attr_getrsestacksize_np.3t
39647956 11721 /usr/share/man/man3.Z/
pthread_attr_getschedparam.3t
39647956 11721 /usr/share/man/man3.Z/
pthread_attr_getschedpolicy.3t
39647956 11721 /usr/share/man/man3.Z/
pthread_attr_getscope.3t
39647956 11721 /usr/share/man/man3.Z/
pthread_attr_getstackaddr.3t
39647956 11721 /usr/share/man/man3.Z/
pthread_attr_getstacksize.3t
39647956 11721 /usr/share/man/man3.Z/
pthread_attr_setdetachstate.3t
39647956 11721 /usr/share/man/man3.Z/
pthread_attr_setguardsize.3t
39647956 11721 /usr/share/man/man3.Z/
pthread_attr_setinheritsched.3t
39647956 11721 /usr/share/man/man3.Z/
pthread_attr_setprocessor_np.3t
39647956 11721 /usr/share/man/man3.Z/
pthread_attr_setrsestacksize_np.3t
39647956 11721 /usr/share/man/man3.Z/
pthread_attr_setschedparam.3t
39647956 11721 /usr/share/man/man3.Z/
pthread_attr_setschedpolicy.3t
39647956 11721 /usr/share/man/man3.Z/
pthread_attr_setscope.3t
39647956 11721 /usr/share/man/man3.Z/
pthread_attr_setstackaddr.3t
39647956 11721 /usr/share/man/man3.Z/
pthread_attr_setstacksize.3t
380885007 3241 /usr/share/man/man3.Z/pthread_continue.3t
380885007 3241 /usr/share/man/man3.Z/pthread_suspend.3t
4073368376 4543 /usr/share/man/man5.Z/
pthread_scope_options.5
OS-Core.CORE2-64SLIB,fr=B.11.23,fa=HP-UX_B.11.23_IA,v=HP:
4077254087 53360 /usr/lib/pa20_64/liblwp.1
3473771481 1045216 /usr/newconfig/usr/lib/hpux64/
libpthread.so.1
382191148 1260048 /usr/lib/hpux64/libpthread_tr.so.1
560831609 414552 /usr/newconfig/usr/lib/pa20_64/libpthread.1
568914475 494848 /usr/lib/pa20_64/libpthread_tr.1
OS-Core.CORE2-SHLIBS,fr=B.11.23,fa=HP-UX_B.11.23_IA,v=HP:
756094265 40960 /usr/lib/liblwp.1
1562877814 47456 /usr/lib/hpux32/libmxndbg.so.1
2020623561 53936 /usr/lib/hpux64/libmxndbg.so.1
2209216702 20480 /usr/lib/libmxndbg.1
846161166 20480 /usr/lib/libmxndbg64.1
4233901793 1011624 /usr/newconfig/usr/lib/hpux32/
libpthread.so.1
2349425968 1226264 /usr/lib/hpux32/libpthread_tr.so.1
1112568962 389120 /usr/newconfig/usr/lib/libpthread.1
1678424018 471040 /usr/lib/libpthread_tr.1
ProgSupport.C2-INC,fr=B.11.23,fa=HP-UX_B.11.23_IA,v=HP:
1091274065 44650 /usr/include/sys/pthread.h
OS-Core.C-MIN-32ALIB,fr=B.11.23,fa=HP-UX_B.11.23_PA,v=HP:
3240621485 88472 /usr/lib/liblwp.a
2379651520 524018 /usr/lib/libpthread.a
2428556913 603070 /usr/lib/libpthread_tr.a
OS-Core.C-MIN-64ALIB,fr=B.11.23,fa=HP-UX_B.11.23_PA,v=HP:
1404534303 155350 /usr/lib/pa20_64/liblwp.a
3265836267 911522 /usr/lib/pa20_64/libpthread.a
4041646686 1042540 /usr/lib/pa20_64/libpthread_tr.a
OS-Core.CORE2-64SLIB,fr=B.11.23,fa=HP-UX_B.11.23_PA,v=HP:
4077254087 53360 /usr/lib/pa20_64/liblwp.1
560831609 414552 /usr/newconfig/usr/lib/pa20_64/libpthread.1
568914475 494848 /usr/lib/pa20_64/libpthread_tr.1
OS-Core.CORE2-SHLIBS,fr=B.11.23,fa=HP-UX_B.11.23_PA,v=HP:
756094265 40960 /usr/lib/liblwp.1
2209216702 20480 /usr/lib/libmxndbg.1
846161166 20480 /usr/lib/libmxndbg64.1
1112568962 389120 /usr/newconfig/usr/lib/libpthread.1
1678424018 471040 /usr/lib/libpthread_tr.1
ProgSupport.C2-INC,fr=B.11.23,fa=HP-UX_B.11.23_PA,v=HP:
1091274065 44650 /usr/include/sys/pthread.h
Patch Conflicts: None
Patch Dependencies:
s700: 11.23: PHKL_31500 PHKL_34032
s800: 11.23: PHKL_31500 PHKL_34032
Hardware Dependencies: None
Other Dependencies:
This patch exposes a defect in Serviceguard on uniprocessor
systems which can lead to cmcld consuming 100% of cpu
resulting in a hang or system TOC. The patch should not be
loaded on uniprocessor systems running Serviceguard without
the corresponding Serviceguard patches.
The resolution of this Serviceguard defect, SR 8606472905
(JAGag27672), requires that one of the following patches, or
any superseding patch, be installed:
Serviceguard A.11.16.00: PHSS_35863
Serviceguard A.11.17.00: PHSS_35427
Supersedes:
PHCO_30543 PHCO_30476 PHCO_35997 PHCO_34944 PHCO_34718 PHCO_33676
PHCO_33675 PHCO_32489 PHCO_31553
Equivalent Patches: None
Patch Package Size: 4320 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_36323
5. Run swinstall to install the patch:
swinstall -x autoreboot=true -x patch_match_target=true \
-s /tmp/PHCO_36323.depot
By default swinstall will archive the original software in
/var/adm/sw/save/PHCO_36323. 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_36323.text file is
available in the product readme:
swlist -l product -a readme -d @ /tmp/PHCO_36323.depot
To put this patch on a magnetic tape and install from the
tape drive, use the command:
dd if=/tmp/PHCO_36323.depot of=/dev/rmt/0m bs=2k
Special Installation Instructions:
HP-UX defaults to a 1x1 thread model that allows MxN threads
to be created at any time. However, this flexibility adds
overhead. This overhead can be reduced by setting the
following environment variables:
$ PTHREAD_FORCE_SCOPE_SYSTEM=1
$ PERF_ENABLE=1
This informs the pthread library to only use 1x1 threads.
Most applications perform better using 1x1 threads, so the
above environment variables can eliminate unneeded overhead
for most applications. The above environment variables,
however, should not be set if the application is using the
pthread_suspend() API.
|