 |
» |
|
|
 |
 |
 |
|
|
 |
|
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
|