|
Patch 3356 : Pthread library fixes : [IRIX 6.4 6.3 6.2]
INDEX
RELATIONS
RELEASE NOTES
1. Patch SG0003356 Release Note
This release note describes patch SG0003356 to IRIX 6.2, 6.3
and 6.4.
Patch SG0003356 addresses flaws in earlier releases of POSIX
threads (pthreads) IEEE 1003.1c-1995 Standard.
This patch SHOULD NOT be installed unless the POSIX Patch
Set and the rld patch 1932 OR LATER is also installed.
1.1 Supported Hardware Platforms
All platforms running IRIX 6.2, 6.2pacecar, 6.3-O2-10K and
6.4.
1.2 Supported Software Platforms
Patch SG0003356 may be installed on IRIX 6.2, 6.3 and 6.4
systems configured with the POSIX Patch Set and rld patch
number 1932 OR LATER. This patch replaces patches 1361,
1405, 1644, 1941, 2040, 2041 2161, 2162, 2254, 2420, 2791.
1.3 Bugs Fixed by Patch SG0003356
This patch contains fixes for the following bugs in IRIX
6.2, 6.2pacecar, 6.3-O2-10K and 6.4. Bug numbers from
Silicon Graphics bug tracking system are included for
reference.
o Bugs fixed in this patch (3356):
662332: Missing trace-point
662241: Incorrect getppid() values
629902: Preemption warnings with patch 2791
o Bugs fixed in 2791:
614809: C++ exception handling
604441: Java VM internal locking integration
595956: vp_yield() consumes too much CPU
591261: bad timeout queue order
585868: sigsuspend/cancellation vp_occlude imbalance
587649: termination handler cancellation state
581002: wait() hangs indefinitely while childless
576526: avoid recursion on signal delivery
572433: interrupted wait() returns wrong value
570640: need to initialise fpcsr
570353: sigaction returns the wrong handler in oact
565615: pthread_join() should return error on detach
557446: pthread_create() const pthread_attr_t *
551386: signal may be mis-delivered
550979: pthread_equal() function
549599: sigignore fix
545636: fix for destructors
520527: unexpected return from abort()
515431: missing cancellation points
510041: concurrency interface man pages
501104: system() fails with aio and pthreads
501099: a.out exists after aio/pthreads program exits
476184: program using aio and pthreads hangs
466172: reject blockproc()/unblockproc() calls
o Bugs fixed in 2420:
533294: Avoid symbol preemption of calloc()
526820: fork() child identity cleanup
525427: cancellation/signals deadlock
523500: fork()/wait() synchronisation
481944: sigsuspend() race
o Bugs fixed in 2254:
498816: exceptions do not generate core dumps
498470: vp starvation under stress
491107: no more than 1024 pthreads allowed
o Additional (roll-up bug numbers): 485218, 482660,
482530, 479337, 471918, 468984, 460998, 459551, 445235,
439648, 439638, 436647, 412725, 360218, 327458.
1.4 Subsystems Included in Patch SG0003356
This patch release includes these subsystems:
o patchSG0003356.eoe_hdr.lib - pthreads header file
(pthread.h).
o patchSG0003356.eoe_sw.irix_lib - pthreads libraries
(o32 and n32 versions).
o patchSG0003356.eoe_sw64.lib - pthreads library (n64
version).
o patchSG0003356.eoe_man.unix - pthreads-related man
pages.
1.5 General Notes
o Pthread concurrency: by default the pthreads run-time
adjusts the number of kernel execution contexts
dynamically according to application behaviour. The
interfaces pthread_setconcurrency() and
pthread_getconcurrency() provide a way to influence
this behaviour - see the man page for details.
o Pthread limits: the default limit on the number of
pthreads is 1024. This limit may be raised using a new
rlimit resource RLIMIT_PTHREAD. The getrlimit(2) and
setrlimit(2) interfaces may be used to query and change
the limit. The current soft limit is 1024 and the hard
limit 10240. At this time the API is a library
construct; shells, systune and inheritance properties
are not supported.
In future releases the (default) hard limit will be
lowered but will be tunable with systune. Shells and
inheritance will also be fixed.
o Core dumps: as a debugging aid, setting the environment
variable "PT_CORE" will cause the library to act on
exceptions encountered in the library code. The
purpose is solely to permit generation of a core dump
and no other behaviour should be attempted.
o Run-time loader dependency: if this patch is installed
without the correct rld patch then pthread applications
will fail at load time with the following message:
rld: Fatal Error: _rld_new_interface: bad operation: 12
o Pthread library load address: problems have been
observed regarding the address chosen to load the
pthread library. This can manifest itself as a memory
allocation failure for large allocations (typically
greater than 800Mb). A workaround for this problem is
to modify the so_locations files prior to installing
the patch as follows:
- locate the SGI DSO range, for example:
$range 0x02000000, 0x08000000:\
- find the libpthread entry:
libpthread.so \
:st = .text ...
:st = .data ...
- replace the .text and .data lines with the range:
libpthread.so \
$range 0x02000000, 0x08000000:\
- install the patch as usual
The address used to load the library can be found using
elfdump with the -L argument to retrieve the BASEADDR
value.
o 6.2 Supplementary documentation: A postscript file
containing an updated version of chapter 3 of Topics in
IRIX Programming describes the POSIX threads model in
more detail. It can be found in
/usr/relnotes/patchSG0003356/ch3.parallel.ps.
o Debugging: WorkShop 2.6.2 and dbx 7.0 are pthread-
aware.
o Performance tools: SpeedShop patch number 1809 OR
HIGHER is recommended for pthreads.
o 6.2 OpenGL: Applications using OpenGL under IRIX 6.2
cannot use pthreads. Later versions of IRIX function
correctly.
o Sprocs: Sprocs use a fundamentally different
programming model and as such do not interact well with
pthreads. Rather than have ill-defined semantics, a
pthreads program does not support the sproc(),
sprocsp() calls or the arena synchronisation primitives
usconfig(3P).
o Dynamic loading: loading the libpthread DSO or loading
a DSO depending on libpthread into to application which
is not linked with the pthread library is not
supported. Symbols that libpthread preempts are not
(by default) re-evaluated following the dynamic load
and may therefore be incorrect.
1.6 Installation Instructions
Patch software is installed like any other Silicon Graphics
software product. Follow the instructions in your Software
Installation Administrator's Guide to bring up the miniroot
form of the software installation tools.
Note that by default, patch software is not installed and
must be explicitly selected.
Follow these steps to select a patch for installation:
1. At the Inst> prompt, type
install patchSGxxxxxxx
where xxxxxxx is the patch number.
2. Initiate the installation sequence. Type
Inst> go
3. You may find that two patches have been marked as
incompatible. (The installation tools reject an
installation request if an incompatibility is
detected.) If this occurs, you must deselect one of
the patches.
Inst> keep patchSGxxxxxxx
where xxxxxxx is the patch number.
4. After completing the installation process, exit the
inst program by typing
Inst> quit
1.7 Patch Removal Instructions
To remove a patch, use the versions remove command as you
would for any other software subsystem. The removal process
reinstates the original version of software unless you have
specifically removed the patch history from your system.
versions remove patchSGxxxxxxx
where xxxxxxx is the patch number.
To keep a patch but increase your disk space, use the
versions removehist command to remove the patch history.
versions removehist patchSGxxxxxxx
where xxxxxxx is the patch number.
INST SUBSYSTEM REQUIREMENTS No Requirements Information Available. INST SUBSYSTEM CHECKSUMS These checksums help to provide a 'signature' for the patch inst image which can be used to authenticate other inst images. You can obtain this kind of output by running sum -r on the image (from the command line): 12343 7 patchSG0003356.eoe_hdr 02827 145 patchSG0003356.eoe_man 16677 18 patch/README.patch.3356 53344 243 patchSG0003356.eoe_sw64 28125 11 patchSG0003356 24505 664 patchSG0003356.eoe_sw INST SUBSYSTEM FILE LISTINGS The following lists the files which get installed from each subsystem in the patch:
DOWNLOAD PATCH
|
||||||||||||||||||||||||||||||||||||
Document Id: 20021117072913-IRIXPatch-1297
|
||||||||||||||||||||||||||||||||||||