Patch Name: PHSS_12782

Patch Description: s700_800 10.X HP C++ (A.10.30) core library components

Creation Date: 97/11/20

Post Date:  97/11/28

Hardware Platforms - OS Releases:
	s700: 10.01 10.10 10.20
	s800: 10.01 10.10 10.20

Products: N/A

Filesets:
	OS-Core.CORE-SHLIBS ProgSupport.LANG-MIN

Automatic Reboot?: No

Status: General Superseded

Critical: No

Path Name: /hp-ux_patches/s700_800/10.X/PHSS_12782

Symptoms:
	PHSS_12782:
	The following symptoms correspond to the descriptions in
	the defect descriptions field for PHSS_12782:

	1. Incorrect results will occur for
	   strstreambuf::out_waiting() if called after the buffer is
	   expanded.

	PHSS_11616:
	The following symptoms correspond to the descriptions in
	the defect descriptions field for PHSS_11616:
	1. Index out of range runtime error, MAXINT in user
	class

	PHSS_10767:
	The following symptoms correspond to the descriptions in
	the defect descriptions field for PHSS_10767:
	1. Addition of OpenGL support.

	PHSS_9096:
	The following symptoms correspond to the descriptions in
	the defect descriptions field for PHSS_9096:
	1. iword/pword not initialized according to latest standards

	2. Runtime Internal Error: cannot allocate space, leak with
	+eh & threads

	3. sync_with_stdio loses data if sent to a pipe, ESPIPE

	PHSS_7497:
	1.  Using double/float and >> ws sets failbit for
	istrstream

	2.  Threads problems allocating internal storage when
	many threads are used

	3.  long long support

	PHSS_6469:
	The following symptoms correspond to the descriptions in
	the defect descriptions field for PHSS_6469:
	1. Index out of range:  GOTOs and +eh don't work together

	2. << endl or << flush on ostrstream sets badbit

	3. INTERNAL C++ EH RUNTIME THREADS ERROR - SHOULDN'T BE HERE

	4. ios::sync_with_stdio() leaks memory

	5. <iostream.h> -D_THREAD_SAFE breaks cout and cerr, output
	lost

	PHSS_6205:
	The following symptoms correspond to the descriptions in
	the defect descriptions field for PHSS_6205:
	1. Problem with iostreams, X::sync() not called for ostream

	2. Can't rethrow an exception from within a shared library

	3. Destructor without matching constructor when using +eh
	   on nested call

	4. Bus error when using ios::sync_with_stdio()

Defect Description:
	PHSS_12782:
	1. out_waiting() wrong with strstreambuf if buffer expanded

	PHSS_11616:
	1.  The following exception handling runtime error may
	occur:
	   Runtime internal error: index out of range
	Using +Xehdtcount does not detect the cause.
	This occurs if the first member in a class is MAXINT, a
	magic value that the eh libC.a ignores.

	PHSS_10767:
	1. Addition of OpenGL support.

	PHSS_9096:
	1.  Enhancement to initialize iword/pword according to
	latest standards

	2.  Memory leaks may occur when using throws and threads.
	When the thread dies the space to copy the item that is
	thrown is not reused.

	3.  Calling ios::sync_with_stdio() may cause output to be
	lost if the output is sent to a pipe.

	PHSS_7497:
	1.  When extracting a double or float from the end of an
	istrstream and then using the ws manipulator, the failbit is
	set.  instr >> d >> ws;

	2.  When using many threads (< 90) a customer was getting
	an error because of the way memory was malloc'd for the
	internal storage structure.

	3.  New functionality for long long has been added.  To
	use long long the -ext option must be added to the compile
	line.

	PHSS_6469:
	1. The compiler did not handle gotos properly while in +eh
	mode.

	2. Use of << endl or << flush with strstreams may set the
	badbit.  It depends on the size of the string.  Also once
	the badbit is set, some output may still be produced, but
	fairly randomly, depending on the of the strings inserted.

	3. When using threads you will get the message:
	***********************************************************
	INTERNAL C++ EH RUNTIME THREADS ERROR - SHOULDN'T BE HERE!!
	You have encountered a thread in 'out_callback' that was not
	registered through the start_callback routine.
	contact your HP service representative about this message
	***********************************************************

	If one of the threads terminates early.

	4. Every time ios::sync_with_stdio() is called it leaks
	memory.  Also last_op is not initialized nor is it ever set
	in underflow().  This routine does not interact well with
	threads.

	5. Using -D_THREAD_SAFE as suggested in the Release Notes
	will cause output to cout, cerr and clog to be lost for all
	but the main thread.  Checking status will indicate errors.

	PHSS_6205:
	1. Problem with iostreams, X::sync() not called from
	   ostream, etc. X is a class derived from ostream.

	2. A coredump will occur when using +eh in a shared library
	   in compiler mode.  This will occur for any function that
	   has a try block that does not enclose the throw or the
	   call to the function that does a throw.

	3. A destructor was called without a matching constructor
	   call when using +eh on a nested call.

	4. If ios::sync_with_stdio() is called on 10.0 the program
	   will abort in ios::init(streambuf*) with a null pointer.

SR:
	1653118141 1653141390 5003267732 5003278093 1653149351
	4701311159 4701308817 4701276600 1653157487 5003297481
	4701225052 4701339895 5003338392 5003371096 1653165225

Patch Files:
	/usr/lib/libC.1
	/usr/lib/libC.a
	/usr/lib/libC.ansi.1
	/usr/lib/libC.ansi.a

what(1) Output:
	/usr/lib/libC.1:
		HP C++ HPCPLUSPLUS  A.10.30
	/usr/lib/libC.a:
		HP C++ HPCPLUSPLUS  A.10.30
	/usr/lib/libC.ansi.1:
		HP C++ HPCPLUSPLUS  A.10.30
	/usr/lib/libC.ansi.a:
		HP C++ HPCPLUSPLUS  A.10.30

cksum(1) Output:
	2327681669 181070 /usr/lib/libC.1
	673607561 177772 /usr/lib/libC.a
	20632295 181070 /usr/lib/libC.ansi.1
	4188214121 177800 /usr/lib/libC.ansi.a

Patch Conflicts: None

Patch Dependencies: None

Hardware Dependencies: None

Other Dependencies: None

Supersedes:
	PHSS_6205 PHSS_6469 PHSS_7497 PHSS_9096 PHSS_10767 PHSS_11616

Equivalent Patches: None

Patch Package Size: 760 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_12782

	5a. For a standalone system, run swinstall to install the
	    patch:

		swinstall -x autoreboot=true -x match_target=true \
			-s /tmp/PHSS_12782.depot

	5b. For a homogeneous NFS Diskless cluster run swcluster on the
	    server to install the patch on the server and the clients:

		swcluster -i -b

	    This will invoke swcluster in the interactive mode and
	    force all clients to be shut down.

	    WARNING: All cluster clients must be shut down prior to the
		     patch installation.  Installing the patch while the
		     clients are booted is unsupported and can lead to
		     serious problems.

	    The swcluster command will invoke an swinstall session in which
	    you must specify:

		alternate root path  -  default is /export/shared_root/OS_700
		source depot path    -  /tmp/PHSS_12782.depot

	    To complete the installation, select the patch by choosing
	    "Actions -> Match What Target Has" and then "Actions -> Install"
	    from the Menubar.

	5c. For a heterogeneous NFS Diskless cluster:

		- run swinstall on the server as in step 5a to install
		  the patch on the cluster server.

		- run swcluster on the server as in step 5b to install
		  the patch on the cluster clients.

	By default swinstall will archive the original software in
	/var/adm/sw/patch/PHSS_12782.  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_12782.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_12782.depot of=/dev/rmt/0m bs=2k

Special Installation Instructions: None