Jump to content
 English      
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
        More options        
HP.com Home
patch database

patch details: PHNE_26728

» 

IT Resource Center

» Login
» Register
» My profile
» Search knowledge base
» Forums
» Patch database
» Download drivers, software and firmware
» Warranty check
» Support Case Manager
» Software Update Manager
» Training and Education
» More maintenance and support options
» Online help
» Site map
Content starts here
» view selected patch list
The recommended patch is :  PHNE_27703
The most recent patch is :  PHNE_36576

   useful links
» Patch Family Tree

You may provide feedback on this document.
» patch name » patch description » creation date » post date » hardware platforms - os releases » products » filesets » automatic reboot? » status » critical » category tags » path name » symptoms » defect description » sr » patch files » what(1) output » cksum(1) output » patch conflicts » patch dependencies » hardware dependencies » other dependencies » supersedes » equivalent patches » patch package size » installation instructions » special installation instructions


Patch Name: PHNE_26728

Patch Description: s700_800 11.11 Cumulative STREAMS Patch

Creation Date: 02/03/28

Post Date: 02/06/03

Hardware Platforms - OS Releases: 
	s700: 11.11
	s800: 11.11

Products: N/A

Filesets: 
	Streams.STREAMS2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP
	Streams.STREAMS2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP

Automatic Reboot?: Yes

Status: General Superseded

Critical: 
	Yes
	PHNE_26728: MEMORY_LEAK HANG PANIC
	PHNE_26710: HANG
	PHNE_25460: PANIC HANG ABORT
	PHNE_25084: PANIC HANG MEMORY_LEAK
	PHNE_24274: PANIC
	PHNE_23715: HANG

Category Tags: 
	defect_repair enhancement general_release critical panic
	halts_system memory_leak

Path Name: /hp-ux_patches/s700_800/11.X/PHNE_26728

Symptoms: 
	PHNE_26728:
	1. System hangs due to memory starvation when t_klisten()
	   fails to release memory in an error condition. JAGae01950
	2. An internal data structure variable is not initialized in
	   the correct function. This could cause a panic if an
	   obsolete STREAMS feature is enabled for a non-socket
	   driver. JAGae10739
	3. Potential memory leak or deadlock in t_klook(). This can
	   cause a system hang or panic because the system is out of
	   memory or data structure locks are held too long.
	   JAGae13713
	4. Enhancement is needed in t_ksndrel() to bypass data queue
	   flow-control in non-blocking mode. This will enable
	   future improvements in the close() system call.
	   JAGae14955

	PHNE_26710:
	1. In a multi-threaded socket application, a thread doing
	   soaccept() hangs forever. JAGae14249

	PHNE_25460:
	1. Child processes do not receive a SIGHUP. This may cause
	   processes such as rlogin or telnet to not respond to a
	   SIGHUP. JAGad84809
	2. poll(2) causes thread to hang when timeout argument is
	   set to 1 msec with zero file descriptors. JAGad91360
	3. One file has incorrect file permissions. JAGad77575
	4. Postinstall script aborts with the error "Bad system
	   call" when a system is updated from HP-UX 10.20 to
	   HP-UX 11.11. This leaves a "core" file in the root
	   directory ("/").  JAGae01638
	5. Add STREAMS support for Real Time Extensions. JAGae02308
	6. Postinstall script logs the error message
	   "/usr/sbin/insf: not found" when a STREAMS patch is
	   installed from Ignite/UX image. JAGad45731

	PHNE_25084:
	1.  In a multi-threaded socket application when a thread
	    closes a socket on which another thread is doing
	    accept(), the closing thread hangs. JAGad88349
	2.  Multiple processes sleeping forever in _csq_acquire().
	    This problem has only occurred on systems with AS/U
	    installed. JAGad87837
	3.  A process running in the background gets terminated
	    intermittently when it reads from dtterm. JAGad25743
	4.  A process running in the background gets terminated
	    when it writes to dtterm. This requires "tostop"
	    terminal setting ON. JAGad57981
	5.  System panic caused by memory corruption when two
	    instances of freeb() free the same block of kernel
	    allocated memory. JAGad50215
	6.  Enhancement to enable dequeueing of poll_s structures
	    for future improvements to the select(2) system call.
	    JAGad15265
	7.  Missing first telnet prompt while telnet'ing to the BSD
	    4.3 Server. JAGad39478
	8.  Potential memory leak in hpstreams_option1().  This can
	    cause a system hang or panic because the system is out
	    of memory or data structure locks are held too long.
	    JAGad45190
	9.  Threads hung sleeping in ioctl_sleep. JAGad86805
	    _swtch+0xc4
	    _sleep+0x4cc
	    ioctl_sleep+0x30c
	    ioctl_bufcall+0x80
	    str_async_ioctl+0x670
	    hpstreams_ioctl_int+0xf8
	    streams_ioctl+0x34

	PHNE_24972:
	1.  Add support for the new Event Port driver. JAGad65762

	PHNE_24274:
	1.  System panics due to race condition in the unweld path.
	    JAGad40848
	2.  Some of the NFS threads loop indefinitely on
	    streams_poll() even when data is available at the
	    stream head. JAGad15958
	3.  Pass third argument to fo_select due to a FS patch
	    JAGad27893
	4.  Open command returns ENOLCK error when opening DLKM
	    driver. JAGad44291
	5.  On a multi-processor system, a thread may hang
	    indefinitely in the poll(2) system call when polling for
	    input and data is available to be read.  This is more
	    likely to happen when the system is heavily loaded, or
	    when multiple threads simultaneously call poll(2) with
	    the same file descriptor. JAGad68721

	PHNE_23715:
	1.  remsh(1) hangs in shutdown(2) when the stream is
	    flow-controlled. JAGad36101
	2.  poll() times out immediately when timeout arg is
	    set to INT_MAX. JAGad56971
	3.  This patch is a member of a set of patches needed to
	    enable the HP-UX Virtual Partitions product. When the
	    HP-UX Virtual Partitions product (VPARSBASE or T1335AA)
	    is installed, it will install the full set of required
	    patches for that product, including this patch.

	    If the HP-UX Virtual Partitions product is not
	    installed, this change will have no impact on your
	    system. JAGad70977

Defect Description: 
	PHNE_26728:
	1. t_klisten() does not release allocated memory when
	   exiting from an error. This may consume a lot of memory
	   and cause a system hang if there are many instances of
	   t_klisten() exiting with errors. JAGae01950
	Resolution:
	   The memory leak is fixed by freeing the osr_s structure
	   when an error occurs.
	2. An internal data structure variable, sth_socket, is not
	   initialized in the correct function. This could cause a
	   panic if an obsolete STREAMS feature, stream caching,
	   is enabled for a non-socket driver. JAGae10739
	Resolution:
	   Initialize sth_socket variable in sth_alive_init().
	3. For M_DATA messages, t_klook() does not release the
	   allocated memory and fails to release the ownership of
	   the queue.  This can cause a system hang or panic because
	   the system is out of memory or the data structure lock is
	   held too long.  JAGae13713
	Resolution:
	   Allocated memory is freed and the ownership of the queue
	   is released for all messages in t_klook().
	4. t_ksndrel() does not provide a mechanism to bypass data
	   queue flow-control in non-blocking mode. JAGae14955
	Resolution:
	   A new flag is provided in the t_ksndrel() interface to
	   allow the kernel caller to bypass flow-control when
	   non-blocking mode is specified. This enables future
	   improvements in the close() system call.

	PHNE_26710:
	1. In a multi-threaded socket application, when soaccept()
	   and getsockopt() or setsockopt() operations are done on
	   the same socket, the thread doing soaccept() hangs.
	   JAGae14249
	Resolution:
	  Provided a new ioctl that performs an atomic stream head
	  insert operation.

	PHNE_25460:
	1. Original implementation of M_HANGUP was sending the
	   SIGHUP to just the process leader. JAGad84809
	Resolution:
	   SIGHUP is sent to process group on receiving M_HANGUP
	   for STREAMS tty.
	2. When poll(2) is called with zero file descriptors and a
	   timeout of 1 msec, thread hangs because of race
	   condition. This occurs in case of short sleep during the
	   handling of pending signal, where thread's status shows
	   that it is in a run state, but it is actually just about
	   to go to sleep. JAGad91360
	Resolution:
	   The race condition has been eliminated in STREAMS by
	   making a call to select_as_nanosleep() when zero file
	   descriptors are passed and by setting the timeout to no
	   less than 2 ticks.
	3. Change file permissions. JAGad77575
	Resolution:
	   This fixes a file permissions problem.
	4. Postinstall script aborts with the error "Bad system
	   call" when a system is updated from HP-UX 10.20 to HP-UX
	   11.11. This leaves a "core" file in the root directory
	   ("/"). This is due to the fact that the insf command
	   cannot run because the correct libraries are not
	   available at the time that postinstall runs during the
	   update. JAGae01638
	Resolution:
	   The device files for Transport loopback drivers --
	   tlcots, tlcotsod, and tlclts -- are created in a
	   configure script instead of in a postinstall script.
	5. Add STREAMS support for Real Time Extensions. JAGae02308
	Resolution:
	   STREAMS is changed to prevent delivery of software
	   interrupts to CPUs that are bound to a Real Time
	   processor set (PSet). This is an extension of vPars
	   support.
	6. Postinstall script logs the error "/usr/sbin/insf: not
	   found" when a STREAMS patch installed from Ignite/UX
	   image. This is due to the fact that the insf command is
	   not available because not all filesystems are mounted at
	   the time that postinstall runs.
	Resolution:
	   insf command is executed in configure script instead of
	   postinstall script with appropriate path.

	PHNE_25084:
	1.  The close function goes into an interruptible sleep if
	    the socket file descriptor is also in use by another
	    thread. JAGad88349
	Resolution:
	    This patch contains changes required to support the fix
	    for this problem. When an application calls close() for
	    an AF_INET socket file descriptor, any threads blocked
	    in an interruptible sleep in a syscall for the same
	    file descriptor will be awakened, and the syscall will
	    return EBADF.
	2.  The spinlocks associated with weld_sqh and mult_sqh
	    were acquired in a wrong order in some routines
	    resulting in a deadlock. JAGad87837
	Resolution:
	    Modified the order in which the weld_sqh and mult_sqh
	    are acquired in osr_pop_subr() and str_plumb_ioctl()
	    to fix the deadlock.
	3.  When the background job tries to read from the
	    dtterm, STREAMS sends SIGTTIN and does a sleep().
	    When it comes out of the sleep, not due to an
	    interrupt, the read function exits out intermittently
	    without retry or further processing. JAGad25743
	Resolution:
	    Continue processing the read on a SIGCONT.
	4.  When the background job tries to write to the dtterm,
	    STREAMS sends SIGTTOU and does a sleep(). When it comes
	    out of the sleep, not due to an interrupt, the write
	    function exits out without retry or further
	    processing. JAGad57981
	Resolution:
	    Continue processing the write on a SIGCONT.
	5.  When duplicated messages that are pulled up (coalesced)
	    into a single block by using msgpullup() are freed,
	    there is a timing window where two instances of freeb()
	    can free the same message twice. This will result in
	    memory corruption which will cause a panic later when
	    the memory is used again. JAGad50215
	Resolution:
	    Added a spinlock in the function that frees pulled up
	    messages so only one instance of freeb() can operate on
	    a pulled up message at a time. This prevents a second
	    instance of freeb() from operating on the same message
	    at the same time.
	6.  There is no way currently to dequeue a poll_s structure
	    from the wake-up list when a thread exits select(2).
	    JAGad15265
	Resolution:
	    A new kernel function is being provided to enable future
	    improvements to select(2).
	7.  Missing first telnet prompt. JAGad39478
	Resolution:
	    In the inbound path for sockets a wakeup was missed
	    when normal data follows OOB data. The fix was to
	    catch the missed wakeup in the inbound path.
	8.  hpstreams_option1() does not release the allocated
	    memory upon an error exit from
	    ioctl_sleep_until_first(). This can cause a system
	    hang or panic because the system is out of memory
	    or data structure locks are held too long. JAGad45190
	Resolution:
	    The memory leak is fixed by freeing the structures
	    osr_s (arena M_STROSR) and
	    tiocoption1 (arena M_STREAMS).
	9.  Threads hung sleeping in ioctl_sleep. JAGad86805
	Resolution:
	    The fix to wakeup the sleeping thread is to issue the
	    wakeup on the appropriate sleep channel.

	PHNE_24972:
	1.  This patch contains enhancements required to
	    support the HP-UX Event Port driver. JAGad65762
	Resolution:
	    Modified STREAMS to support the polling of STREAMS
	    based fds using Event Port driver.

	PHNE_24274:
	1.  When both the ends of the welded queue are closed
	    simultaneously, a race in the welded close path
	    leads to the following panic. JAGad40848
	     $call_trap+0x38
	     spinlock+0x10
	     _csq_acquire+0xe4
	     osr_pop_subr+0x35c
	     osr_close_subr+0xc0c
	     hpstreams_close_int+0x30c
	Resolution:
	    Modified unweld-mechanism to eliminate the race
	    condition in that path.
	2.  Some of the NFS threads loop indefinitely on
	    streams_poll() even when data is available at the
	    stream head. JAGad15958
	Resolution:
	    The race in the wakeup path when data arrives at the
	    stream head and the poll_s struct being enqueued at
	    the same stream head which caused the hang has been
	    eliminated.
	3.  Pass third argument to fo_select due to a FS patch.
	    JAGad27893
	Resolution:
	    A third argument is now passed to the fo_select
	    function pointer calls in STREAMS to be consistent
	    with the changes made in the File System code.
	4.  DLKM returns ENOLCK on autoload failures.
	    JAGad44291
	Resolution:
	    All DLKM load failures are masked and instead an
	    ENODEV is returned on opening a DLKM driver.
	5.  On a multi-processor system, a thread may hang
	    indefinitely in poll(2) when polling for input and data
	    is available to be read.  The wakeup() call for a
	    thread may be ineffective for either of the following
	    reasons:
	    1) The thread migrates from one processor to another
	       before going to sleep in poll(2).  This could cause
	       the wake-up path to use the wrong sleep lock.
	    2) Multiple threads simultaneously call poll(2) with
	       the same file descriptor, and the threads go to
	       sleep at the same time.  The sleep collision could
	       be undetected within a certain time window.
	    JAGad68721
	Resolution:
	    The thread remembers the processor that it started on,
	    and it uses that processor id to get the sleep lock.
	    This resolves the problem with thread migration.  A
	    change in sleep() makes it atomic when setting the
	    thread's wake-up channel and putting the thread to
	    sleep.  This resolves the sleep collision race.  The
	    patches PHKL_25233 and PHKL_25389 are needed in order
	    for this fix to be effective.

	PHNE_23715:
	1.  remsh(1) hangs in shutdown(2) when the stream is
	    flow-controlled. JAGad36101
	Resolution:
	    Provide a version of streams_putmsg() which
	    unconditionally does the putnext().
	2.  poll() times out immediately when timeout arg is set to
	    INT_MAX. JAGad56971
	Resolution:
	    Cast the timeout value to avoid making it negative.
	3.  This patch contains minor enhancements required to
	    support the HP-UX Virtual Partitions product. JAGad70977
	Resolution:
	    Enhancements added to support CPU migration.

SR: 
	8606166814 8606187762 8606201803 8606171584 8606146615
	8606158563 8606175047 8606199534 8606196559 8606219201
	8606218689 8606156405 8606188765 8606180995 8606145929
	8606170214 8606175950 8606217653 8606215628 8606222245
	8606208389 8606232403 8606233084 8606176492 8606247849
	8606232720 8606244249 8606248557 8606247273

Patch Files: 
	
	Streams.STREAMS2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP:
	/usr/conf/lib/libstream.a

	Streams.STREAMS2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP:
	/usr/conf/lib/libstream.a

what(1) Output: 
	
	Streams.STREAMS2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP:
	/usr/conf/lib/libstream.a:
		str_util.c $Date: 2002/03/25 16:55:04 $Revision: r11
			.11/9 PATCH_11.11 (PHNE_26728)
		str_scalls.c $Date: 2002/03/18 14:55:04 $Revision: r
			11.11/17 PATCH_11.11 (PHNE_26710)
		str_init.c $Date: 2002/03/18 14:55:04 $Revision: r11
			.11/2 PATCH_11.11 (PHNE_26710)
		$Revision: libstream.a:    STREAMS: PATCH_11.11 (PHN
			E_26728) Tue Mar 26 14:57:40 PST 2002 $

	Streams.STREAMS2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP:
	/usr/conf/lib/libstream.a:
		str_util.c $Date: 2002/03/25 16:55:04 $Revision: r11
			.11/9 PATCH_11.11 (PHNE_26728)
		str_scalls.c $Date: 2002/03/18 14:55:04 $Revision: r
			11.11/17 PATCH_11.11 (PHNE_26710)
		str_init.c $Date: 2002/03/18 14:55:04 $Revision: r11
			.11/2 PATCH_11.11 (PHNE_26710)
		$Revision: libstream.a:    STREAMS: PATCH_11.11 (PHN
			E_26728) Tue Mar 26 14:55:50 PST 2002 $

cksum(1) Output: 
	
	Streams.STREAMS2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP:
	948475683 1185494 /usr/conf/lib/libstream.a

	Streams.STREAMS2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP:
	979180583 568026 /usr/conf/lib/libstream.a

Patch Conflicts: None

Patch Dependencies: 
	s700: 11.11: PHKL_25233 PHKL_25389
	s800: 11.11: PHKL_25233 PHKL_25389

Hardware Dependencies: None

Other Dependencies: None

Supersedes: 
	PHNE_23715 PHNE_24274 PHNE_24972 PHNE_25084 PHNE_25460 PHNE_26710

Equivalent Patches: None

Patch Package Size: 1760 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 PHNE_26728

	5. Run swinstall to install the patch:

		swinstall -x autoreboot=true -x patch_match_target=true \
			  -s /tmp/PHNE_26728.depot

	By default swinstall will archive the original software in 
	/var/adm/sw/save/PHNE_26728.  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 PHNE_26728.text file is 
	available in the product readme:

		swlist -l product -a readme -d @ /tmp/PHNE_26728.depot

	To put this patch on a magnetic tape and install from the
	tape drive, use the command:

		dd if=/tmp/PHNE_26728.depot of=/dev/rmt/0m bs=2k

Special Installation Instructions: None




» top of page
Printable version
Privacy statement Using this site means you accept its terms
© 2009 Hewlett-Packard Development Company, L.P.