Patch Name: PHKL_28474 Patch Description: s700_800 11.11 signal cumulative patch Creation Date: 03/01/30 Post Date: 03/03/07 Hardware Platforms - OS Releases: s700: 11.11 s800: 11.11 Products: N/A Filesets: OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP Automatic Reboot?: Yes Status: General Release Critical: No (superseded patches were critical) PHKL_27283: ABORT Category Tags: defect_repair general_release critical halts_system Path Name: /hp-ux_patches/s700_800/11.X/PHKL_28474 Symptoms: PHKL_28474: ( SR:8606278471 CR:JAGae42529 ) Programs using swapcontext() or setcontext() can fail in a non-deterministic manner, due to incorrect values in general registers gr3-gr18 (the "callee-save" registers), if passing a context generated by a call to getcontext(). PHKL_27283: ( SR:8606259602 CR:JAGae23920 ) Applications which are compiled for the 32-bit data model and run on a 64-bit kernel can sometimes abort with the messages: "Pid killed due to trashed stack. Pid was killed due to failure in writing the signal context." In most cases, the application was compiled with +O2 optimization or uses alloca(3C) with a computed size argument. Defect Description: PHKL_28474: ( SR:8606278471 CR:JAGae42529 ) According to the C runtime rules, the callee-save registers will always have their original values upon return from the kernel system call. However, these values are not copied into the kernel where they can be provided to getcontext(). Consequently, getcontext() cannot place the correct values in the user ucontext structure, and setcontext()/swapcontext() cannot restore them. The program proceeds with incorrect values and fails in a non-deterministic manner. Resolution: A new flag has been added to setcontext() to trigger the system call return path to reload the "callee-save" registers. PHKL_27283: ( SR:8606259602 CR:JAGae23920 ) The problem is that the upper half of the 64-bit stack pointer can sometimes contain non-zero data (e.g., due to overflows in calculating the size argument for alloca(); or due to optimizer use of the upper half of the register for temporary storage). This causes the kernel to make invalid references to the user stack, resulting in program aborts. Resolution: For 32-bit programs, the kernel will now use only the lower half of the stack pointer register, which is the correct and complete address. Enhancement: No SR: 8606259602 8606278471 Patch Files: OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: /usr/conf/lib/libpm-pdk.a(pm_sendsig.o) /usr/conf/lib/libpm.a(pm_context.o) OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: /usr/conf/lib/libpm-pdk.a(pm_sendsig.o) /usr/conf/lib/libpm.a(pm_context.o) what(1) Output: OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: /usr/conf/lib/libpm-pdk.a(pm_sendsig.o): pm_sendsig.c $Date: 2003/01/08 11:47:07 $Revision: r 11.11/2 PATCH_11.11 (PHKL_28474) /usr/conf/lib/libpm.a(pm_context.o): pm_context.c $Date: 2003/01/08 11:46:42 $Revision: r 11.11/1 PATCH_11.11 (PHKL_28474) OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: /usr/conf/lib/libpm-pdk.a(pm_sendsig.o): pm_sendsig.c $Date: 2003/01/08 11:47:07 $Revision: r 11.11/2 PATCH_11.11 (PHKL_28474) /usr/conf/lib/libpm.a(pm_context.o): pm_context.c $Date: 2003/01/08 11:46:42 $Revision: r 11.11/1 PATCH_11.11 (PHKL_28474) cksum(1) Output: OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: 4274735735 20900 /usr/conf/lib/libpm-pdk.a(pm_sendsig.o) 1711563478 3068 /usr/conf/lib/libpm.a(pm_context.o) OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: 3199018606 51400 /usr/conf/lib/libpm-pdk.a(pm_sendsig.o) 446296294 6936 /usr/conf/lib/libpm.a(pm_context.o) Patch Conflicts: None Patch Dependencies: s700: 11.11: PHKL_28475 s800: 11.11: PHKL_28475 Hardware Dependencies: None Other Dependencies: None Supersedes: PHKL_27283 Equivalent Patches: None Patch Package Size: 110 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 PHKL_28474 5. Run swinstall to install the patch: swinstall -x autoreboot=true -x patch_match_target=true \ -s /tmp/PHKL_28474.depot By default swinstall will archive the original software in /var/adm/sw/save/PHKL_28474. If you do not wish to retain a copy of the original software, include the patch_save_files option in the swinstall command above: -x patch_save_files=false WARNING: If patch_save_files is false when a patch is installed, the patch cannot be deinstalled. Please be careful when using this feature. For future reference, the contents of the PHKL_28474.text file is available in the product readme: swlist -l product -a readme -d @ /tmp/PHKL_28474.depot To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHKL_28474.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None