Updated: 24-SEP-2003 (Use your browsers' Reload button to ensure you're viewing the most recent version)
VMS73_PTHREAD-V0300 (Alpha V7.3) PTHREAD ECO Summary
*OpenVMS] VMS73_PTHREAD-V0300 (Alpha V7.3) PTHREAD ECO Summary
New Kit Date: 12-AUG-2002
Modification Date: Not Applicable
Modification Type: NEW KIT
Copyright (c) Compaq Computer Corporation 2001, 2002. All rights reserved.
PRODUCT: OpenVMS Alpha
COMPONENT: PTHREADs
SOURCE: Compaq Computer Corporation
ECO INFORMATION:
ECO Kit Name: VMS73_PTHREAD-V0300
DEC-AXPVMS-VMS73_PTHREAD-V0300--4.PCSI
ECO Kits Superseded by This ECO Kit: VMS73_PTHREAD-V0200
ECO Kit Approximate Size: 7280 Blocks
Kit Applies To: OpenVMS Alpha V7.3
System/Cluster Reboot Necessary: No
Rolling Re-boot Supported: N/A
Installation Rating: INSTALL_3
3 - To be installed on all systems running
the listed versions of OpenVMS which
are experiencing the problems described.
Kit Dependencies:
The following remedial kit(s), or later, must be installed BEFORE
installation of this, or any required kit:
VMS73_UPDATE-V0100
In order to receive all the corrections listed in this
kit, the following remedial kits should also be installed:
None
ECO KIT SUMMARY:
An ECO kit exists for PTHREADS on OpenVMS Alpha V7.3. This kit addresses
the following problems:
PROBLEMS ADDRESSED IN VMS73_PTHREAD-V0300 KIT
o On multi-processor systems, the EXEC uses the Inner-Mode
Semaphore (IMS) to serialize execution of many system
services. Upcalls are used to allow the threads library to
execute one thread while another is blocked waiting for the
IMS. The services which the threads library uses to switch
threads are themselves users of the IMS. Under certain
conditions, the result is recursion of IMS-free upcalls. If
the recursion persists long enough, a stack overflow can occur
in a null thread which terminates the process. This can only
happen on a multiprocessor system when use of upcalls and
multiple kernel threads are enabled.
Images Affected:[SYSLIB]PTHREAD$DBGSHR.EXE
[SYSLIB]PTHREAD$RTL.EXE
o The threads library uses $SETIMR to implement
pthread_cond_timedwait and pthread_delay_np operations. The
library starts a timer for a given wake-up time, and expects
to be awoken at that timer (or perhaps later, if the system is
busy). At one customer site, we observed that occasionally,
the wake-up appeared to arrive too early (at a system clock
time which was less than the requested wake-up time). Under
certain conditions these early wake-ups caused the process to
hang. The cause of the early wake-ups is thought to be use of
NTP which was configured to allow backward time jumps (which
is not recommended). If such a backward jump occurs between
when the timer's target time is reached, and when the library
runs and reads the system clock, the effective result is an
early wake-up.
The library has been enhanced to defend against early
wake-ups, by requesting a new timer for the original target
time.
Images Affected:[SYSLIB]PTHREAD$DBGSHR.EXE
[SYSLIB]PTHREAD$RTL.EXE
o The public C language header file PTHREAD_EXCEPTION.H was
using the symbol NULL, without ensuring that this symbol was
defined. If a user program is compiled with this header, in
an environment which happens to not cause NULL to be defined,
the following compiler diagnostic will appear:
%CC-E-UNDECLARED, In this statement, "NULL" is not
declared.
The header file has been changed to not use the NULL symbol.
Images Affected:[SYSLIB]SYS$STARLET_C.TLB
o Fix a locking problem which could cause a threads bugcheck at
context-switch. The threads library uses internal locks to
protect shared data. A thread can context-switch away while
holding certain locks. The internal lock environment is
generally restored when the thread is later context-switched
back in. A bug caused the incorrect lock environment to be
restored under certain conditions. The result is most often a
threads bugcheck "selected a non-ready thread," but other
types of process crashes could result.
Following is the introductory part of the bugcheck report:
%DECthreads bugcheck (version V3.17-019), terminating
execution.
%Reason: selected a non-ready thread 8 (0x000000001E945740)
state running
%Running on OpenVMS V7.3 on AlphaServer 8400 5/625,
2048Mb; 10 CPUs
% The bugcheck occurred at 29-MAY-2001 22:45:06.03, running
% image DSA0:[DB22X.]<EXEC>SERVER.EXE;1 in process 202014EC
% (named "MCR Srv"), under username "SYSTEM". AST delivery
% is enabled for all modes; no ASTs active. Upcalls are
% enabled. Multiple kernel threads are enabled. The current
% thread sequence number is 1, at 0x7BC34908
Images Affected:[SYSLIB]PTHREAD$DBGSHR.EXE
[SYSLIB]PTHREAD$RTL.EXE
o Fix a problem seen in Java that caused process hangs. This
requires an application AST to arrive while the Java garbage
collector is running under certain conditions. The threads
library uses the default thread to service the AST (when
upcalls are enabled, which Java requires). If garbage
collection is happening at the same time, the default thread
can be left in an incorrect state, causing a hang. To fix
this, AST delivery is now deferred while the garbage collector
is running.
Images Affected:[SYSLIB]PTHREAD$DBGSHR.EXE
[SYSLIB]PTHREAD$RTL.EXE
PROBLEMS ADDRESSED IN VMS73_PTHREAD-V0200 KIT:
o The pthread_cond_timedwait() and pthread_delay_np() timed
operations could wait too long before timing out. This can
happen if the operating system's Time Differential Factor
(TDF) is changed, e.g., due to a Daylight Saving Time (DST)
adjustment. Documentation for these timed operations states
that they may in fact return late. However, that was not
meant to cover a, for example, one hour delay due to a switch
of DST.
With this change, system-time alterations due to general TDF
changes (such as a DST switch) now have no effect on timed
thread operations.
Images Affected: [SYSLIB]PTHREAD$DBGSHR.EXE
[SYSLIB]PTHREAD$RTL.EXE
o This correction fixes a race condition on a multiprocessor
system, where thread scheduling states can become confused.
This is a rare condition, and only happens when upcalls and
multiple kernel threads are in use. The only known
manifestation of the problem so far is an application hang.
One kernel thread is seen to be in an AST in HIB state, while
that kernel thread is running a threads library internal
"null" thread. Because an AST is active, no more ASTs will be
delivered. If further application progress depends on
servicing subsequent ASTs, the application is hung.
Images Affected: [SYSLIB]PTHREAD$DBGSHR.EXE
[SYSLIB]PTHREAD$RTL.EXE
o A process can crash (probably in PTHREAD$RTL, possibly in
user-mode). This problem requires the use of multiple kernel
threads (and thus upcalls) on a multiprocessor system, and AST
delivery. Upon completion of an application AST, the threads
library can mistakenly try to run the default thread on two
CPUs concurrently. If this occurs, the application will
probably ACCVIO quickly.
Images Affected: [SYSLIB]PTHREAD$DBGSHR.EXE
[SYSLIB]PTHREAD$RTL.EXE
RELATED ARTICLES:
Detailed articles describing the problems listed above may exist in the
OPENVMS database. To view these articles, open the appropriate product
database and perform a query using either of the following search
strings: 'VMS73_PTHREAD-V0300', 'VMS73_PTHREAD' or 'PTHREAD'.
ECO KIT ORDERING INSTRUCTIONS:
If after an evaluation you wish to obtain this kit, request it
electronically using the appropriate Advanced Electronic Services
(AES) Service Tool. If you are not familiar with how to request
kits electronically, open the DIA, WIS or DSNLINK database and
review the article entitled:
[AES] How To Electronically Request ECO Kits Using Service Tools
INSTALLATION NOTES:
No reboot is necessary after successful installation of the kit.
INSTALLATION INSTRUCTIONS:
Install this kit with the POLYCENTER Software installation utility
by logging into the SYSTEM account, and typing the following at the
DCL prompt:
PRODUCT INSTALL VMS73_PTHREAD /SOURCE=[location of Kit]
The kit location may be a tape drive, CD, or a disk directory that
contains the kit.
Additional help on installing PCSI kits can be found by typing
HELP PRODUCT INSTALL at the system prompt
SPECIAL INSTALLATION INSTRUCTIONS:
o Scripting of Answers to Installation Questions
During installation, this kit will ask and require user
response to several questions. If you wish to automate the
installation of this kit and avoid having to provide responses
to these questions, you must create a DCL command procedure
that includes the following definitions and commands:
- $ DEFINE/SYS NO_ASK$BACKUP TRUE
- Add the following qualifiers to the PRODUCT INSTALL
command and add that command to the DCL procedure.
/PROD=DEC/BASE=AXPVMS/VER=V3.0
- De-assign the logicals assigned
For example, a sample command file to install the
VMS73_PTHREAD-0200 kit would be:
$
$ DEFINE/SYS NO_ASK$BACKUP TRUE
$!
$ PROD INSTALL VMS73_PTHREAD/PROD=DEC/BASE=AXPVMS/VER=V1.0
$!
$ DEASSIGN/SYS NO_ASK$BACKUP
$!
$ exit
All trademarks are the property of their respective owners.
==========================================================================
| Table of Kit Image Information |
+----------------------------+----------+-----------------+--------------+
| | Overall | Image File | Image Link |
| Image Name | Checksum | Identification | Date/Time |
+----------------------------+----------+-----------------+--------------+
| PTHREAD$DBGSHR.EXE | 8B24DFAC | V3.17-034 | 25-JUL-2002 |
| | | 00:18:47.51 |
+----------------------------+----------+-----------------+--------------+
| PTHREAD$RTL.EXE | C6439D03 | V3.17-034 | 25-JUL-2002 |
| | | 00:18:00.51 |
+----------------------------+----------+-----------------+--------------+
|