Linux Fast-STREAMS -- defects. 2007-06-24
$Id$
Copyright (c) 2001-2007 OpenSS7 Corporation.
Copyright (c) 1997-2000 Brian Bidulock
See the end for copying conditions (for this file).
7.5 Bugs
========
7.5.1 Defect Notices
--------------------
"Linux Fast-STREAMS" could possibly contain unknown defects. This is a
"production" release. Nevertheless, some remaining unknown defects
could possibly be harmful. Validation testing has been performed by
the `OpenSS7 Project' and external entities on this software for the
set of systems listed in the release notes. Nevertheless, the software
might still fail to configure or compile on other systems. The
`OpenSS7 Project' recommends that you validate this software for your
target system before using this software. Use at your own risk.
Remember that there is NO WARRANTY.(1)
This software is production software. As such, it is stable on
validated systems but might still crash your kernel in unique
circumstances. Installation of the software on a non-validated
distribution might mangle your header files or Linux distribution in
such a way as to make it unusable. Crashes could possibly lock your
system and rebooting the system might not repair the problem. You can
possibly lose all the data on your system. Because this software
stands a chance of crashing your kernel, the resulting unstable system
could possibly destroy computer hardware or peripherals making them
unusable. You might void the warranty on any system on which you run
this software. YOU HAVE BEEN WARNED.
---------- Footnotes ----------
(1) See section NO WARRANTY under `GNU General Public License', in the
manual.
7.5.2 Known Defects
-------------------
With the exception of packages not originally created by the `OpenSS7
Project', the `OpenSS7 Project' software does not ship with known bugs
in any release stage except "pre-alpha". "Linux Fast-STREAMS" had no
known bugs at the time of release.
7.5.3 Defect History
--------------------
This section contains historical bugs that were encountered during
development and their resolutions. This list serves two purposes:
1. It captures bugs encountered between releases during development
that could possibly reoccur (and the Moon is made of blue cheese).
It therefore provides a place for users to look if they encounter
a problem.
2. It provides a low overhead bug list between releases for
developers to use as a `TODO' list.
Bugs
.....
`014. 2007-05-17T21:48:24+0000'
The dupb() utility had an obnoxious bug where it permitted the
db_ref count to wrap to zero, causing buffer allocation and
freeing problems. This was very difficult to debug. dupb() now
fails if the reference count has reached 255. When dupb() fails,
the user should check if the reference count has reached 255, and
if it has, attempt a deep copyb() instead. At some point it might
be useful to have STREAMS do the deep copy automatically. This
was discovered in strsctp loopback tests where message blocks are
rapidly duplicated for retransmission.
_*fixed*_ in `streams-0.9.2.3'
`013. 2007-05-17T21:48:06+0000'
The log driver, strace, strerr and strclean utilities had some
bugs. The strsctp driver now makes extensive use of strlog()
trace and error logging and the log driver and utilities have been
corrected. These facilities are now production grade.
_*fixed*_ in `streams-0.9.2.3'
`012. 2007-04-13T01:47:30+0000'
It appears that Ubuntu 6.10 has a rather broken implementation of
the LSB install_init that has been inherited from Debian (a python
script, none the less). This implementation refuses to properly
install a disabled service (one with an empty or missing
Default-Start: tag), but, rather invokes updated-rc.d in such a
way that the init script is started at runlevels 2 3 4 5 instead.
This was causing problems with the strace and strerr services
which are normally installed disabled.
This uncovered the fact that the Debian-style init scripts were
not working anyway. The scripts have been fixed and the strace
and strerr utilities now default to enabled.
_*fixed*_ in `streams-0.9.2.3'
`011. 2007-04-10T10:56:42+0000'
The strbcflag flag was never being cleared, causing infinite
looping of the scheduler once the maximum number of buffers was
reached. This also revealed a problem that bufcalls were being run
unncecessarily (when strbcwait was set, instead of only when
strbcflag was set).
_*fixed*_ in `streams-0.9.2.3'
`010. 2007-04-10T10:55:29+0000'
The stream event sequence number was wrapping and becoming larger
than the event mask resulting in inability to cancel buffer
callbacks and timeouts.
_*fixed*_ in `streams-0.9.2.3'
`009. 2007-04-02T11:57:35+0000'
`ldl' was using an incorrect MKDEV command, but when the Stream
head attempted to redirect the open to the new (mangled) major
device number, it properly returned ENXIO, but did not release a
reference to the module. Need to check code paths for this to see
where the reference needed to be released.
_*known bug*_
`008. 2007-03-31T05:33:29-0600'
When loosening SMP locking, found a bug in the QWANTR handling in
getq() and back-enabling in flushq() and flushband(). Both of
these were generating false back-enables. The getq() was
generating a _lot_ of false back-enables. Whenever getq() found
an empty queue it was not only setting QWANTR, but it was
back-enabling the queue. The result is that if service procedures
are used exclusively (that is, qi_put() always does a putq()),
getq() would generate a false back-enable for each message. Also,
the enabled queue would generate another false back-enable.
Significant performance gains should be noticed.
_*fixed*_ in `streams-0.9.2.3'
`007. 2007-03-16T17:33:20-0600'
Jérémy Compostella pointed out an error in strallocpmsg() where it
was always assigining M_PCPROTO to messages created with
I_FDINSERT.
_*fixed*_ in `streams-0.9.2.3'
`006. 2007-03-14T23:48:26-0600'
There appears to be an inode lock imbalance that occurred for
several clone error paths in stropen. If the returned major
device number does not correspond to a driver, or an snode cannot
be acquired for the new entry and the stream head reparented.
_*fixed*_ in `streams-0.9.2.2'
`005. 2007-03-07T15:53:06-0700'
Demand loading of kernel modules for clone devices opened, for
example, as /dev/streams/clone/mux was requesting module
streams-clone-mux and /dev/streams/clone/mux but was not requesting
streams-mux or /dev/streams/mux and the modules were failing to
demand load.
_*fixed*_ in `streams-0.9.2.2'
`004. 2007-02-26T08:25:09-0700'
Jérémy Compostella pointed out error in clone.c. When an
automatic clone minor device was unregistered, it was
unregistering the modid instead of the major number. This was not
noticed because all OpenSS7 drivers have the same modid as major
number (strconf does this automatically).
_*fixed*_ in `streams-0.9.2.2'
`003. 2007-02-26T08:25:09-0700'
Jérémy Compostella pointed out syntax error in strsched.c that
kept synqs from compiling properly.
_*fixed*_ in `streams-0.9.2.2'
`002. 2006-09-24T20:02:00+0000'
Discovered asynchronous thread cancellation inconsistencies in
libLiS libpLiS by inspection during documentation. isastream(2),
fattach(2) were not performing proper asynchronous thread
cancellation suppression so that these function contained a
cancellation point when the should not.
_*fixed*_ in `streams-0.7a.6.rc3'
`001. 2006-07-05T21:54:49+0000'
Fedora Core 5 reports a rwlock bug during udp module unloading as
follows:
BUG: rwlock wrong CPU on CPU#0, rmmod/7515
Call Trace:
{rwlock_bug+100}
{_raw_write_unlock+88}
{:streams:unregister_strnod+211}
{:streams:unregister_clone+64}
{:streams:unregister_strdev+24}
{:streams_udp:udpterminate+26}
{sys_delete_module+406}
{system_call+126}
It appears that unregister_strnod() is scheduling while holding a
write lock on cdevsw_lock. This is probably in iput() called
within cmin_del.
_*fixed*_ in `streams-0.7a.6.rc2'
There were a number of places where sleeping functions were called
with spin-locks held, causing the CPU awaking from the sleep to
sometimes be different from the CPU that took the lock. This was
buggy, so I reworked all of these cdev and fmod sections to handle
spin locks properly. FC5/SMP on HT no longer reports these bugs.
-----
=========================================================================
Copyright (c) 2001-2007 OpenSS7 Corporation
Copyright (c) 1997-2000 Brian Bidulock
All Rights Reserved.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.
Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the
entire resulting derived work is distributed under the terms of a
permission notice identical to this one
Since the Linux kernel and libraries are constantly changing, this
manual page may be incorrect or out-of-date. The author(s) assume no
responsibility for errors or omissions, or for damages resulting from
the use of the information contained herein. The author(s) may not
have taken the same level of care in the production of this manual,
which is licensed free of charge, as they might when working
professionally.
Formatted or processed versions of this manual, if unaccompanied by the
source, must acknowledge the copyright and authors of this work.
-------------------------------------------------------------------------
U.S. GOVERNMENT RESTRICTED RIGHTS. If you are licensing this Software
on behalf of the U.S. Government ("Government"), the following
provisions apply to you. If the Software is supplied by the Department
of Defense ("DoD"), it is classified as "Commercial Computer Software"
under paragraph 252.227-7014 of the DoD Supplement to the Federal
Acquisition Regulations ("DFARS") (or any successor regulations) and
the Government is acquiring only the license rights granted herein (the
license rights customarily provided to non-Government users). If the
Software is supplied to any unit or agency of the Government other than
DoD, it is classified as "Restricted Computer Software" and the
Government's rights in the Software are defined in paragraph 52.227-19
of the Federal Acquisition Regulations ("FAR") (or any successor
regulations) or, in the cases of NASA, in paragraph 18.52.227-86 of the
NASA Supplement to the FAR (or any successor regulations).
=========================================================================
Commercial licensing and support of this software is available from
OpenSS7 Corporation at a fee. See http://www.openss7.com/
=========================================================================
vim: ft=README tw=72 nocindent nosmartindent formatoptions+=tcqlorn