 |
» |
|
|
 |
 |
 |
|
|
 |
|
Patch Name: PHNE_25084
Patch Description: s700_800 11.11 Cumulative STREAMS Patch
Creation Date: 01/10/30
Post Date: 01/11/01
Repost: 01/11/21
The patch documentation was modified to clarify some of
the changes implemented in the patch and to add information
to the Other Dependencies field. The clarifications were
made in the Symptoms and Defect Description fields for
PHNE_25084 item #6 and PHNE_24274 item #5.
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_25084: PANIC HANG MEMORY_LEAK
PHNE_24274: PANIC
PHNE_23715: HANG
Category Tags:
defect_repair enhancement general_release critical panic
halts_system memory_leak manual_dependencies
Path Name: /hp-ux_patches/s700_800/11.X/PHNE_25084
Symptoms:
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 did
not cause any external symptoms. 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_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 causes memory leak in
hpstreams_option1(). This happens in a very rare case
and has not been reported by any customer. 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 fd's 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
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:
$Revision: libstream.a: STREAMS: PATCH_11.11 (PHN
E_25084) Mon Oct 22 13:54:01 PDT 2001 $
Streams.STREAMS2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP:
/usr/conf/lib/libstream.a:
$Revision: libstream.a: STREAMS: PATCH_11.11 (PHN
E_25084) Mon Oct 22 14:01:13 PDT 2001 $
cksum(1) Output:
Streams.STREAMS2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP:
2269829484 1164774 /usr/conf/lib/libstream.a
Streams.STREAMS2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP:
984331123 556930 /usr/conf/lib/libstream.a
Patch Conflicts: None
Patch Dependencies: None
Hardware Dependencies: None
Other Dependencies:
We recommend installing patches PHKL_25233 and PHKL_25389,
or superseding patches, in order for the resolution to
problem #5, fixed in PHNE_24274, to be effective.
Supersedes:
PHNE_23715 PHNE_24274 PHNE_24972
Equivalent Patches: None
Patch Package Size: 1720 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_25084
5. Run swinstall to install the patch:
swinstall -x autoreboot=true -x patch_match_target=true \
-s /tmp/PHNE_25084.depot
By default swinstall will archive the original software in
/var/adm/sw/save/PHNE_25084. If you do not wish to retain a
copy of the original software, use the patch_save_files option:
swinstall -x autoreboot=true -x patch_match_target=true \
-x patch_save_files=false -s /tmp/PHNE_25084.depot
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_25084.text file is
available in the product readme:
swlist -l product -a readme -d @ /tmp/PHNE_25084.depot
To put this patch on a magnetic tape and install from the
tape drive, use the command:
dd if=/tmp/PHNE_25084.depot of=/dev/rmt/0m bs=2k
Special Installation Instructions: None
|