Patch 2420 : Pthread library fixes : [IRIX 6.4 6.3 6.2]
INDEX
RELATIONS
RELEASE NOTES
1. Patch SG0002420 Release Note This release note describes patch SG0002420 to IRIX 6.2, 6.3 and 6.4. Patch SG0002420 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 SG0002420 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.1.3 Bugs Fixed by Patch SG0002420 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 Bug 533294: Avoid symbol preemption of calloc() o Bug 526820: fork() child identity cleanup o Bug 525427: cancellation/signals deadlock o Bug 523500: fork()/wait() synchronisation o Bug 481944: sigsuspend() race o Patches fixed in 2254: Bug 498816: exceptions do not generate core dumps Bug 498470: vp starvation under stress Bug 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 SG0002420 This patch release includes these subsystems: o patchSG0002420.eoe_hdr.lib - pthreads header file (pthread.h). o patchSG0002420.eoe_sw.irix_lib - pthreads libraries (o32 and n32 versions). o patchSG0002420.eoe_sw64.lib - pthreads library (n64 version). o patchSG0002420.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. To provide more control over this scheduling two new interfaces are provided: - int pthread_setconcurrency(int degree) requests that the system set the number of execution entities to degree; this is only a hint. A degree of value 0 returns scheduling to the default mode. - int pthread_getconcurrency(void) returns the current hint or zero if the default mode is in action. 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/patchSG0002420/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 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 unstable. 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> quit1.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): 03214 9 patchSG0002420 35795 7 patchSG0002420.eoe_hdr 50866 139 patchSG0002420.eoe_man 25836 566 patchSG0002420.eoe_sw 28117 188 patchSG0002420.eoe_sw64 36785 22 patchSG0002420.idb INST SUBSYSTEM FILE LISTINGS The following lists the files which get installed from each subsystem in the patch:
DOWNLOAD PATCH
|
||||||||||||||||||||||||||||||||||||
Document Id: 20021117070247-IRIXPatch-1140
|