Patch Name: PHSS_5856 Patch Description: s700 9.0[135] 9.05 PEX5 Development June Periodic Patch Creation Date: 95/07/30 Post Date: 95/08/29 Hardware Platforms - OS Releases: s700: 9.01 9.03 9.05 Products: N/A Filesets: PEX5-RUN PEX5-PRG Automatic Reboot?: No Status: General Release Critical: No Path Name: /hp-ux_patches/s700/9.X/PHSS_5856 Symptoms: PHSS_5856: - ssm_runner demo can core dump due to defect in demo code. NOTE: This fix applies to the development PEX patch only. PHSS_5451: - Gamma correction in 444 mode does not work. It only modifies one color. This problem was introduced with GSLdt05389 and GSLdt05537 in the last periodic patch. This fix is dependent on a starbase fix found in either PHSS_5449 or PHSS_5450. - pexd_init runs on local:0, which is not a name recognizable by xauth. - Serially deallocating all MBX buffers for a window and then allocating new ones can cause a core dump at the next PEXBeginRendering or similar operation. This problem has been corrected. PHSS_5101: - Storing a PEXSetOfFillAreaSets with an odd number of vertex indices causes memory corruption. During some subsequent structure operations, a segmentation violation can occur. - On all accelerated devices, PEX will not provide lighting and shading unless the Powershade fileset is installed. PHSS_4720: - When running a PEX application in "protocol" mode, PEXGetNameSet fails to set the returned nameset pointer to NULL if no name sets are found. - When the X server is initiated on the CRX24[Z] with the default Visual in the 24-plane image visual, and HP-PEX is also installed on the system, the X Colormap named in the RGB_BEST_MAP property is for a different Visual than the Visual named in the property. If an application attempts to use this Visual and Colormap together, it will get a BadMatch error (typically during a call to XCreateWindow). to use this Visual and Colormap together, it will get a BadMatch error (typically during a call to XCreateWindow). - When PEX model clipping is enabled, and the special HP extension for capping is in effect, then rendering annotation text --that is, where the reference point is not model-clipped, so the text is actually drawn-- causes the caps to be rendered incorrectly. (usually, no caps are rendered at all.) Dependency] PHSS_4718 or PHSS_4719 or later 9.05 Starbase patch PHSS_4670: - Unnecessary double-buffer switch in first BeginRendering can cause flash or unwanted blanking of window. Removed this extra double-buffer switch; this was needed to determine which buffer was currently being rendered to and which buffer was being displayed. Now PEX inquires as to which buffer is current. - PEX pipeline context setting for local_transform is applied with a concatenate operation instead of a replace operation. Changed erroneous constant "PEXReplace" to "REPLACE_LOCAL" (core const) - Existence of pexd interferes with SB_X_SHARED_CMAP=READ_ONLY_PRIMARIES If SB_X_SHARED_CMAP is set to READ_ONLY_PRIMARIES, PEX will create its own color map upon initialization. It will contain the same eight colors at the base of the color map (B,W,RGB,CMY) as the display's default color map. However, PEX will not attempt to share a color map with other X applications. - PEX utility library file does not get updated when new source files are installed and a "make" is done. Changed /usr/lib/PEX5/utilities/Makefile to force rebuilding the library whenever a "make" is done. Also changed compiler options to build optimized, rather than debuggable, library. - PEX cube demo (verify_install) causes color flashing on A1659A when running HP VUE with SB_X_SHARED_CMAP=TRUE and "HP VUE Color Use" setting is Medium or Low. This defect report exposed a misunderstanding in the use of the PEX utility functions: to get a PEX application to share colormaps with VUE, "sharing" must be made explicit in the hard/soft criteria specification. The application *cannot* rely on specifying use of a standard colormap to make sharing happen. This defect was resolved as "operator error"; however, it was discovered that verify_install was coded with they same problem reported in the customer's application. Therefore, verify_install has been changed to explicitly call for colormap sharing. PHSS_4635: - Sending a PEXHPSetDeformationMode() to an idle or invalid renderer can result in a segmentation fault because the "if (!HPPEXApiState.active_traversal)" clause (present in all other immediate-mode OCs) was missing for this one. It could also appear as a problem if PEXHPSetDeformation() calls were successively issued to different PEX renderers. The "if (!HPPEXApiState.active_traversal)" clause for validating the renderer was added to _hppex_oca_DhaRenderHPSetDeformationMode() in oca/oca_render.c. - For the 9.05 release of PEX, the supported number of linewidths as returned in PEXIDNumSupportedLineWidths from a call to PEXGetImpDepConstants is 1. This is incorrect for this (and future) releases, since wide line support has been added. The number returned should be 0, as this indicates that all line widths between the minimum and maximum are valid. The line that sets this implementation-dependent constant was changed - C++ compilations fail when the file PEXExtlib.h is #included. An ifdef'd 'extern "C" {' was missing from the beginning of the file. This ifdef was only activated when compiling for C++. The corresponding closing brace character (and ifdef) *was* present. The missing ifdef has been added. - A segmentation fault can occur when the program was linked with "-z" option and an unusual sequence of initialization and termination of PEX has occurred within a single process. Also, internal errors in PEX can occur if more than one connection is initialized for PEX in a single DHA process. The linked list search was fixed in order to resolve the segmentation fault. Also, the module startup was changed to initialize a global only for the *first* connection initialized to PEX. - A segmentation fault occurs when connections are created, initialized for PEX, and closed several times in succession in one process. The initialization process was changed to make sure that the API state is clearly *not* initialized as each connection is processed in PEXInitialize. PHSS_4251: - Push/pop for deformation_mode was not implemented in the first release. The deformation mode was not push or popped, so if a subroutine changed the mode, the mode was changed globally. - SOFAS (Sets of Fill-Area Sets) with facet normals and no vertex colors or normals renders incorrectly. - PEXSimple widget create fails when the visual resource is set. - PEXEscapeWithReply requests sent to an HP PEX display server from a "little endian" PEX client machine are not byte-swapped correctly. - PEX now reports dithering *is* supported for 12-bit visuals. This had previously been changed to report no dithering support for both 12- and 24-bit visuals. PEX does still not support dithering in 24-bit visual. - The PEX5Ut utility function PEXUtDBClear doesn't work. Also, the "clear" argument to PEXUtDBSwap doesn't work. Defect Number: GSLdt04689 - After calling PEXExtSetTableEntries with a PEXExtTMBindingEntry structure (type PEXExtLUTTMBinding), if the client's tm_description_id is released using PEXExtFreeTMDescription, then subsequent rendering using those LUT entries will have the default checkerboard texture rather than the correct one. - Order 1 B-splines causes floating-point exception. - Added "localhost" as one of the valid display names for the local machine. - An error message occurs during execution of PEXBeginRendering if the HP Renderer attribute transparency_method is simply set to PEXHPTransparencyMethodAlphaBlend. The default value for the Pipeline Context alpha_blend_function is not valid. - When an application is linked with "-Wl,-z", calling PEXHPChangePipelineContext results in a segmentation fault. - Changing the bf_active_textures list in the Pipeline Context to contain an odd number of texture IDs, while using PEX protocol connection (not DHA), results in an error from the PEX server. - Giving an unsupported value for the table_type to PEXSetTableEntries on a PEX protocol connection causes unpredictable errors from the PEX server in later requests. - A NULL facet_data pointer passed in to PEXExtFillAreaSetWithData or PEXExtSetOfFillAreaSets results in a segmentation fault for applications linked with -Wl,-z. - In the case where the client system runs out of memory, PEXExtGetRendererAttributes, PEXHPGetRendererAttributes, PEXExtGetPipelineContext, and PEXHPGetPipelineContext generate a segmentation fault rather than reporting an Alloc error. There is no test in the PEX suite that forces the allocation failures. These defects were found by inspection. - If the model-clip volume in a Pipeline Context is being set for the first time, and the application was linked with "-Wl,-z", a segmentation fault can result. There is no test for this condition. It was discovered by inspection. - Byte swapping of pipeline context can be wrong for active textures and active back-face texture fields. This defect should only be visible to customers running PEXlib clients from "big endian" clients (DEC, Kubota, etc.) to our HP PEX server. It is further restricted in that the client must be using CGE texture mapping and using the pipeline context to set up the active textures. A simple workaround, if this problem is ever encountered, is to use the PEXExtSetActiveTextures() and PEXExtSetBFActiveTextures() OCs rather than the pipeline context. - In the function _hppex_ocp_DhaStorePolylineSetWithData() in ocp_polyline.c, one point was being stored in the display list even when the count was zero. This can cause memory-corruption errors that are detected on subsequent operations. - Prior to 9.05, HP PEXlib always clamped the ambient, diffuse, and specular reflection components to lie within the PEX defined range of 0.0 - 1.0. Most other PEXlib implementations do *not* clamp these components. Therefore in 9.05, we modified HP PEXlib to clamp these components only if running in PEX Compliance Mode. This works properly if the PEXSetReflectionAttributes() OC is used to set the light components. However, if PEXSetTableEntries() is used to set these in an InteriorBundle entry before any other OC has been called for the display, HPPEXApiState.last_display is still set to NULL; thus, the determination cannot be properly made as to whether we are running in Compliance Mode or not. This will only affect users setting the environment variable HPPEX_DHA_COMPLIANCE_MODE - Implementation of the Ford "ignore color" special feature for PEX primitives. DO NOT PUBLICIZE! Defect Description: PHSS_5856: See Symptom Descriptions PHSS_5451: See Symptom Descriptions PHSS_5101: See Symptom Descriptions PHSS_4720: See Symptom Descriptions PHSS_4670: See Symptom Descriptions PHSS_4635: See Symptom Descriptions PHSS_4251: See Symptom Descriptions SR: 4701253328 4701252718 4701252403 4701253864 5003250209 Patch Files: /usr/lib/libPEX5.sl /usr/lib/X11/extensions/libXhpPEX.sl /usr/bin/X11/pexd /usr/bin/X11/pexd_init /usr/lib/PEX5/utilities/pexutdb.c /usr/lib/PEX5/utilities/PEXSimple.c /usr/lib/PEX5/utilities/Makefile /usr/include/X11R5/X11/PEX5/PEXExtlib.h /usr/lib/PEX5/hp_examples/SubsetAAModeling/SubsetMode/ ssm_build.c what(1) Output: /usr/lib/libPEX5.sl: $Revision: 510.1.200.7 $ $Date: 95/04/06 17:57:17 $ libPEX5 PEX 5.1 API Library PHSS_5856/5857 June 95 PEX5 Periodic Patch for 9.05 /usr/lib/X11/extensions/libXhpPEX.sl: $Revision: 510.1.200.7 $ $Date: 95/04/06 17:57:17 $ libXhpPEX PEX 5.1 extension library PHSS_5856/5857 June 95 PEX5 Periodic Patch for 9.05 /usr/bin/X11/pexd: $Revision: 510.1.200.7 $ $Date: 95/04/06 17:57:17 $ pexd PEX 5.1 Server Daemon PHSS_5856/5857 June 95 PEX5 Periodic Patch for 9.05 /usr/bin/X11/pexd_init: $Revision: 510.1.200.7 $ $Date: 95/04/06 17:57:17 $ pexd PEX 5.1 Server Daemon PHSS_5856/5857 June 95 PEX5 Periodic Patch for 9.05 /usr/lib/PEX5/utilities/pexutdb.c: No what string for this file /usr/lib/PEX5/utilities/PEXSimple.c: No what string for this file /usr/lib/PEX5/utilities/Makefile: No what string for this file /usr/include/X11R5/X11/PEX5/PEXExtlib.h: No what string for this file /usr/lib/PEX5/hp_examples/SubsetAAModeling/SubsetMode/ ssm_build.c: No what string for this file sum(1) Output: 7595 3568 /usr/lib/libPEX5.sl 63267 72 /usr/lib/X11/extensions/libXhpPEX.sl 64192 448 /usr/bin/X11/pexd 50050 48 /usr/bin/X11/pexd_init 41975 48 /usr/lib/PEX5/utilities/pexutdb.c 59787 106 /usr/lib/PEX5/utilities/PEXSimple.c 54430 5 /usr/lib/PEX5/utilities/Makefile 51403 185 /usr/include/X11R5/X11/PEX5/PEXExtlib.h 17590 29 /usr/lib/PEX5/hp_examples/SubsetAAModeling/ SubsetMode/ssm_build.c Patch Conflicts: None Patch Dependencies: s700: 9.01 9.03: (PHSS_4565 or PHSS_4566) and PHSS_4567 and PHSS_5568 and PHSS_5653 and (PHSS_5607 or PHSS_5608) s700: 9.05: PHSS_5607 or PHSS_5608 Hardware Dependencies: None Other Dependencies: None Supersedes: PHSS_4251 PHSS_4635 PHSS_4670 PHSS_4720 PHSS_5101 PHSS_5451 Equivalent Patches: None Patch Package Size: 2320 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. Copy the patch to your /tmp directory and unshar it: cd /tmp cp patch_source/PHSS_5856 . sh PHSS_5856 3. Become root and run update: /etc/update -s /tmp/PHSS_5856.updt PHSS_5856 Update moves the original software to /system/PHSS_5856/orig. Keep this file to recover from any potential problems. You should move the .text file to /system/PHSS_5856 for future reference. To put this patch on a magnetic tape and update from the tape drive, use dd: dd if=PHSS_5856.updt of=/dev/rmt/0m bs=2048 Special Installation Instructions: Be sure that applications using PEX5 are NOT running and that the X-server is NOT running before installing this patch. Executables may appear "busy" to the file system and therefore unwritable because HP-UX uses the executable's image on disk as swap for code segments. The same is true for shared libraries because they are executable images as well.