Dear SCO Customer, Support Level Supplement (SLS) ptf7003i, the UnixWare 7.0.0 Oracle 7 and libc+libthread Supplement, contains fixes from SLS ptf7052b (for UnixWare 7.0.1) backported for UnixWare 7.0.0, as well as fixes provided in previous versions of SLS ptf7003. These problems are addressed by SLS ptf7003i: Note: Issues 1-9 are fixes backported for UnixWare 7.0.0 from SLS ptf7052b. Issues 10-18 were contained in previous versions of SLS ptf7003. Issue 19 is newly addressed by ptf7003i. 1. Applications that called fork() or fork1() could deadlock if the child process performed any operations involving signal disposition (sigaction(), sigset(), signal()) before calling exec. 2. The thread library was incorrectly setting the signal mask used while a signal was being handled for handlers set via sigaction(). The mask did not include those signals masked by the thread before the signal was received. 3. Applications that invoked lio_listio() could become deadlocked under rare circumstances. 4. Internal thread library data structures could become corrupted in applications that created and then killed large numbers of threads. 5. Calls to sigwait() that selected the signal SIGPOLL might return an error code after a successful invocation and incorrectly set the signal mask. 6. Programs that maintain different priorities for multiplexed threads can deadlock due to internal lock hierarchy problems in libthread. 7. High priority threads in a process can be starved resulting in a process hang. 8. Programs that continuously and rapidly suspend or continue a given thread can deadlock or dump core. 9. Programs that call signal() with a signal number larger than MAXSIG, will corrupt internal libthread data and may dump core. 10. Oracle 7 will not install on UnixWare 7 systems because the Oracle binary cannot be linked successfully with the X11R5 libraries. An error such as "dynamic linker: archmon: error opening libdl.so" may be seen. To allow the Oracle binary to be compiled, linked, and run on UnixWare 7 systems, this SLS creates the directory /usr/X11R5/lib which it populates with links to the X11R5 libraries. The Oracle binary can be successfully linked with the X11R5 libraries by specifying "-L /usr/X11R5/lib" or by specifying /usr/X11R5/lib at the head of the LD_LIBRARY_PATH environment variable. This will direct the linker to find and use the X11R5 libraries in preference to the X11R6 libraries in /usr/lib. See the ld(1) manual page for more information. 11. In rare circumstances, Oracle 7 application programs that have been linked with libthread can deadlock. The possible deadlock in Oracle 7 applications occurs because of an interaction between the thread library and dynamic linker in programs that establish their own signal handlers. The fix provided in this SLS ensures that the dynamic linker will not be interrupted in this manner. 12. Oracle 7 will not install and operate properly because it cannot identify the operating system platform. This SLS provides an /etc/.snum file to identify a UnixWare 7 system to Oracle 7. 13. The implementation of setitimer and alarm in libthread prevents Oracle from using DSHM. This SLS allows programs that use them to access DSHM. 14. Oracle 7 requires the use of aiowait which is not supported in UnixWare 7. This SLS implements aiowait and aio_suspend for AIO_RAW asyncio jobs, and aiowait, lio_listio and 64-bit versions of all the asyncio routines for all non-AIO_RAW asyncio jobs. 15. Processes were observed hanging in exit, following an Oracle 7 database build. This SLS corrects the asyncio page unlocking. 16. The select(3C) call cannot handle more than 1024 file descriptors. This SLS increases the FD_SETSIZE limit used in libc's select(3C) call, so that its new limit is 4096. However, the hard limit on file descriptors per process remains 2048. 17. Modifications to select(3C) to only return an exception if one is requested, correcting the "bad file number" message sometimes received after the descriptor is closed. 18. Provisions for installing the correct libc based on the version of UWcompat that is installed. SLS ptf7003i includes all of the above fixes. SLS ptf7003i also addresses this problem: 19. SLS ptf7003i addresses a security vulnerability in the localization code in libc. Note: In order for the fix for this issue to be complete, the system also requires SLS ptf7073b to be installed. SLS ptf7003i contains: /etc/.snum /etc/conf/pack.d/async/Driver_atup.o, Driver_mp.o, space.c /etc/init.d/vxvm-startup, /etc/rcS.d/S35vxvm-startup /etc/init.d/vxvm-sysboot, /etc/rcS.d/S25vxvm-sysboot /sbin/vxconfigd, /usr/sbin/vxconfigd /usr/X11R5/lib /usr/ccs/lib/libc.so /usr/ccs/lib/libp/libc.so /usr/ccs/lib/libp/libc.so.1 /usr/include/sys/aiosys.h /usr/lib/libc.so.1, /usr/lib/ld.so.1 /usr/lib/libthread.so.1, /usr/lib/libthread.so /usr/lib/libthreadT.so.1, /usr/lib/libthreadT.so /usr/lib/vxvm/diag.d/vxconfigdump Software Notes and Recommendations ---------------------------------- SLS ptf7003i should only be installed on: UnixWare 7 with the UnixWare 7 Release Supplement (uw7rs) SLS ptf7003i updates these packages: OS Multiprocessor Support osmp UDK Optimizing C Compilation System uccs ODM: VERITAS Volume Manager vxvm If you are about to install any packages listed above, quit the installation of SLS ptf7003i, install those packages first, and then install SLS ptf7003i. If you install any of those packages later, you must reinstall SLS ptf7003i immediately after. SLS ptf7003i supersedes all previous versions of ptf7003, however it is not necessary to remove these versions prior to installing SLS ptf7003i. Installation Instructions ------------------------- 1. Download the ptf7003i.Z file 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/ptf7003i.Z # pkgadd -d /tmp/ptf7003i # rm /tmp/ptf7003i 3. Reboot the system after installing this SLS package. The release notes displayed prior to installation can be found in: /var/sadm/pkg/ptf7003/install/ptf7003.txt Removal Instructions -------------------- 1. As root, remove the SLS package using these commands: $ su Password: # pkgrm ptf7003 2. 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.