Patch Name: PHSS_23672 Patch Description: s700_800 10.20 HP DCE/9000 1.5 libcma patch Creation Date: 01/05/24 Post Date: 01/05/30 Hardware Platforms - OS Releases: s700: 10.20 s800: 10.20 Products: N/A Filesets: DCE-Core.DCE-CORE-SHLIB,B.10.20 DCE-CoreTools.DCE-BPRG,B.10.20 Automatic Reboot?: No Status: General Release Critical: No Path Name: /hp-ux_patches/s700_800/10.X/PHSS_23672 Symptoms: PHSS_23672: 1.JAGad53376 : When vfork() is called in threaded environment in some cases the application aborts due to lack of memory. PHSS_20608: 1. JAGab84972 : cma_poll() hogs CPU Defect Description: PHSS_23672: 1.JAGad53376 : The expected behavior of vfork is that the child process does not inherit the parent data but only shares it. But in the case of a threaded application each time that the vfork is used, the required memory doubles even though the forked process will not use it. This is because in the threaded environment vfork() is wrapped to cma_fork() which just calls fork(). Resolution: A new environment variable called '_VFORK_NO_CMA' needs to be set by the user which would be used by libc. If this variable is set, then the vfork() stub in libc will directly call the actual vfork system call and won't go through the cma wrapper 'cma_fork'. We retained the default(previous) behavior as it is in order, to avoid the risk of breaking any existing customer applications that assume fork semantics for vfork. So, the applications will get the new behavior for vfork() only if they set this environment variable. The exec() wrapper in libcma has been changed not to modify any data, if the child was created as a result of vfork(). This is needed as both parent & child share the same data segment and we could possibly corrupt the parent data space. PHSS_20608: 1. JAGab84972 : With PHSS_19739/40 the behavior of cma_poll() has changed which results in threaded applications hogging CPU, when poll() is called under following conditions: - pthread.h is included by the application and - cma_init() is not called and - The application is not multithreaded yet. (i.e. there are no threads created) Resolution: The polling interval is now initialized before the application goes multithreaded. SR: 8606184167 8606112629 Patch Files: /usr/lib/libcma.1 /opt/dce/lib/libcma.a /opt/dce/include/dce/cma_ux.h what(1) Output: /usr/lib/libcma.1: HP DCE/9000 1.5 PHSS_23672 Module: libcma.1 (Export) Date: Apr 9 2001 10:01:06 /opt/dce/lib/libcma.a: HP DCE/9000 1.5 PHSS_23672 Module: libcma.a (Export) Date: Apr 9 2001 10:01:10 /opt/dce/include/dce/cma_ux.h: HP DCE/9000 1.5 cksum(1) Output: 1569563128 528384 /usr/lib/libcma.1 335112710 612064 /opt/dce/lib/libcma.a 1292313645 10356 /opt/dce/include/dce/cma_ux.h Patch Conflicts: None Patch Dependencies: s700: 10.20: PHSS_19739 PHCO_23684 s800: 10.20: PHSS_19739 PHCO_23684 Hardware Dependencies: None Other Dependencies: None Supersedes: PHSS_20608 Equivalent Patches: None Patch Package Size: 1240 KBytes Installation Instructions: Please review all instructions and the Hewlett-Packard SupportLine User Guide or your Hewlett-Packard support terms and conditions for precautions, scope of license, restrictions, and, limitation of liability and warranties, before installing this patch. ------------------------------------------------------------ 1. Back up your system before installing a patch. 2. Login as root. 3. Copy the patch to the /tmp directory. 4. Move to the /tmp directory and unshar the patch: cd /tmp sh PHSS_23672 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHSS_23672.depot By default swinstall will archive the original software in /var/adm/sw/patch/PHSS_23672. If you do not wish to retain a copy of the original software, you can create an empty file named /var/adm/sw/patch/PATCH_NOSAVE. WARNING: If this file exists when a patch is installed, the patch cannot be deinstalled. Please be careful when using this feature. It is recommended that you move the PHSS_23672.text file to /var/adm/sw/patch for future reference. To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHSS_23672.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: This patch becomes effective only if the following environment variable "_VFORK_NO_CMA" is set. *****IMPORTANT NOTE***** -- Oracle 7.3.3 and above will need to be relinked. This patch contains changes to the libcma library. Applications such as Oracle that use this library and are built static will need to be relinked. For information and help for the rebuild please contact your Oracle support personnel.