Dear SCO Customer, Support Level Supplement (SLS) ptf7410h, the libthread Supplement, contains modifications to address all of the issues listed below. SLS ptf7410b addressed these issues, which were only applicable to UnixWare 7 Release 7.1.0: 1. A multi-threaded application, which frequently uses fork1() from different threads, may occasionally cause its forked processes to hang. libthread's _thr_forklock mutex needed to be cleared in the child process, in case it was locked by another thread of the parent at the instant of forking. 2. An application using libthread's asyncio core dumps with SIGSEGV because indexing into an array using a legal and valid, but high, fd number gives an array sized too small for this index. This number correlates to an address off the end of the heap segment, hence the segmentation violation (SIGSEGV). SLS ptf7410c addressed these issues: 3. A race condition exists in libthread's signal handling. The handler sets the thread's signal mask to the state it should be in for running the application's signal handler and then invokes the handler. Before the handler is invoked, another signal may be processed. If that signal's handler does not return, the original signal will never be processed. This is dangerous for the internal thread library signal, SIGLWP, since missing this signal can mean missing a suspension, preemption or cancellation. 4. The special _cond_wait_sig variant of cond_wait used by the Java virtual machine enables all signals, not just SIGLWP, before re-grabbing the mutex on a wake-up. When non-SIGLWP signal handlers exit with siglongjmp, the normal return from _cond_wait_sig is bypassed and ownership of the mutex is unpredictable. 5. getitimer and setitimer incorrectly report the existing value of a thread's interval timer. If the thread is multiplexed, the two microseconds fields of the itimer are always reported to be zero. 6. A multiplexed thread will have the microseconds fields of its interval timer set to zero during a call to aio_memlock. SLS ptf7410d added the ability to install in quiet mode. SLS ptf7410e addressed these issues: 7. pthread mutex locks will be used instead of basic mutex locks. This handles the lock ownership correctly for the ERRORCHECK mutex locks. Additionally, proper support of pthread_join as being an implicit cancellation point was added. 8. Using the pthreads ERRORCHECK mutex lock with a condition and two threads, the thread waiting for the condition gets an EPERM return from the pthread_mutex_unlock call after the condition is signaled by the other thread. Problems exist stemming from pthread_join being an implicit cancellation point. The implementation in the library didn't support this. SLS ptf7410f addressed this issue: 9. Some libthread bug fixes were added to prevent core dumps and deadlocks. SLS ptf7410f also provides new debugging instrumentations to identify the owner of a mutex_t. This assists in resolving deadlocks from a thread holding a lock that was subsequently suspended followed by an attempt to reacquire the lock. SLS ptf7410h additionally addresses this issue: 10. A few situations can cause a threaded application to hang (to stop further useful processing) or crash or "panic" through no fault of its own. A byte of the caller's stack was cleared when sleep() was called earlier. Contents -------- /usr/lib/libthread.so /usr/lib/libthread.so.1 /usr/lib/libthreadT.so /usr/lib/libthreadT.so.1 Software Notes and Recommendations ---------------------------------- SLS ptf7410h should only be installed on: UnixWare 7 Release 7.1.0 and 7.1.1 Note: If the Java 2 Software Development Kit 1.2.2 for UnixWare 7 is to be installed, SLS ptf7410h must be installed first. If SLS ptf7401j, the In-Kernel Sockets Supplement, is installed on a UnixWare 7.1.0 system that is running an HTTP server, for example the Netscape FastTrack Server, it is recommended that SLS ptf7410h, the libthread Supplement, also be installed. The increased parallelism of ptf7401j may reveal the libthread hang in such applications. If your system is running any libraries or commands that are contained in this SLS, then these programs will continue to run with the old versions of these libraries or commands until the the system is rebooted. Note that when all necessary patches have been installed, it is recommended that you reboot the system at the earliest opportunity. This will ensure that no programs continue to run with the old libraries or commands. Installation Instructions ------------------------- 1. Download the ptf7410h.Z and ptf7410h.txt files to the /tmp directory on your machine. 2. As root, uncompress the file and add the SLS package to your system using these commands: $ su Password: # uncompress /tmp/ptf7410h.Z # pkgadd -d /tmp/ptf7410h # rm /tmp/ptf7410h Alternatively, this SLS package may be installed in quiet mode, that is, without displaying the release notes and asking for installation confirmation. To do this, use these commands: $ su Password: # uncompress /tmp/ptf7410h.Z # pkgadd -qd /tmp/ptf7410h all # rm /tmp/ptf7410h 3. There is no need to reboot the system after installing this SLS package. However, it is recommended that you reboot the system at the earliest opportunity to ensure that no programs continue to run with the old libraries or commands(see Software Notes section above). The release notes displayed prior to installation can be found in: /var/sadm/pkg/ptf7410/install/ptf7410.txt Removal Instructions -------------------- 1. As root, remove the SLS package using these commands: $ su Password: # pkgrm ptf7410 2. There is no need to reboot the system after removing this SLS package. If you have questions regarding this SLS, or the product on which it is installed, please contact your software supplier.