freebsd kernel with SKQ
Go to file
rdivacky 4117cffd4e Fix tcsh losing history when tcsh terminates because the pty beneath it
is closed.

Diagnosed by Ted Anderson:

New signal queuing logic was introduced in 6.15 and allows the signal handlers
to be run explicitly by calling handle_pending_signals, instead of
immediately when the signal is delivered.  This function is called at
various places, typically when receiving a EINTR from a slow system call
such as read or write.  In the pty exit case, it was called from xwrite,
called from flush, while printing the "exit" message after receiving EOF
when reading from the pty (note that the read did not return EINTR but
zero bytes, indicating EOF).  The SIGHUP handler, phup(), called
rechist, which opened the history file and began writing the merged
history to it.  This process invoked flush recursively to actually write
the data.  In this case, however, the flush noticed it was being called
recursively and decided fail by calling stderror.

My conclusion was that the signal was being handled at a bad time.  But
whether to fix flush not to care about the recursive call, or to handle
the signal some other time and when to handle it, was unclear to me.
However, by adding an extra call to handle_pending_signals, just after
process() returns to main(), I was able to avoid the truncated history
after network outages and similar failures.  I verified this fix in
version 6.17.

Approved by:	ed (mentor)
MFC after:	1 week
2009-10-06 20:19:16 +00:00
bin sh: Disallow mismatched quotes in backticks (...). 2009-10-01 21:40:08 +00:00
cddl Fletcher4 is not the default checksum algorithm. 2009-09-25 18:24:21 +00:00
contrib Fix tcsh losing history when tcsh terminates because the pty beneath it 2009-10-06 20:19:16 +00:00
crypto Add more symbols that need to be masked: 2009-10-05 18:55:13 +00:00
etc Fix a case when both ${name}_program and ${command} are defined. 2009-10-05 20:11:33 +00:00
games "Potluck Pogo" was a collection of Walt Kelly's "Pogo" cartoons 2009-10-06 02:13:32 +00:00
gnu Add FreeBSD 7.2 and 7.3. 2009-09-21 17:19:36 +00:00
include Add basename_r(3) to complement basename(3). basename_r(3) which accepts 2009-10-06 14:05:57 +00:00
kerberos5 Disconnect closefrom.c as we have it as a system call. 2009-06-16 00:09:06 +00:00
lib Add basename_r(3) to complement basename(3). basename_r(3) which accepts 2009-10-06 14:05:57 +00:00
libexec In rtld's map_object(), use pread(..., 0) rather than read() to read the 2009-10-06 17:14:39 +00:00
release In lists, if there is a Li command remove it. This fixes markup for 2009-10-04 16:30:33 +00:00
rescue Add the "vnet" and "-vnet" options, to allow moving interfaces between 2009-06-24 18:21:37 +00:00
sbin The cylinder group tag cg_initediblk needs to match the number of inodes 2009-10-05 01:31:16 +00:00
secure Upgrade to OpenSSH 5.3p1. 2009-10-01 17:12:52 +00:00
share o Fix typo: "an in particular" -> "and in particular". 2009-10-06 04:57:18 +00:00
sys Per their definition, atomic instructions used in conjuction with 2009-10-06 13:45:49 +00:00
tools A few regression tests for SOCK_SEQPACKET UNIX domain sockets. 2009-10-05 15:27:01 +00:00
usr.bin Belatedly add my calendar entry. 2009-10-05 19:29:49 +00:00
usr.sbin Fix using lp(1) without the new -t option after r194171. 2009-09-29 21:28:32 +00:00
COPYRIGHT Bump the odometer of the years. A little early this year for 7.1R. 2008-12-30 04:46:25 +00:00
LOCKS Update LOCKS syntax. 2008-06-05 19:47:58 +00:00
MAINTAINERS - pkg_install is maintained by portmgr. 2009-07-06 11:46:18 +00:00
Makefile Add a new world named 'mips' to our universe. 2009-04-01 17:11:50 +00:00
Makefile.inc1 Fix comment about KERNFAST. 2009-09-10 07:37:36 +00:00
ObsoleteFiles.inc Add entries for moved files during vesa/dpms promotion. 2009-09-10 21:42:00 +00:00
README Vendor import of OpenSSH 5.3p1 2009-10-01 15:19:37 +00:00
UPDATING Fix several logic bugs in the previous IPv6 variable change and 2009-09-26 18:59:00 +00:00

This is the top level of the FreeBSD source directory.  This file
was last revised on:
$FreeBSD$

For copyright information, please see the file COPYRIGHT in this
directory (additional copyright information also exists for some
sources in this tree - please see the specific source directories for
more information).

The Makefile in this directory supports a number of targets for
building components (or all) of the FreeBSD source tree, the most
commonly used one being ``world'', which rebuilds and installs
everything in the FreeBSD system from the source tree except the
kernel, the kernel-modules and the contents of /etc.  The ``world''
target should only be used in cases where the source tree has not
changed from the currently running version.  See:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html
for more information, including setting make(1) variables.

The ``buildkernel'' and ``installkernel'' targets build and install
the kernel and the modules (see below).  Please see the top of
the Makefile in this directory for more information on the
standard build targets and compile-time flags.

Building a kernel is a somewhat more involved process, documentation
for which can be found at:
   http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html
And in the config(8) man page.
Note: If you want to build and install the kernel with the
``buildkernel'' and ``installkernel'' targets, you might need to build
world before.  More information is available in the handbook.

The sample kernel configuration files reside in the sys/<arch>/conf
sub-directory (assuming that you've installed the kernel sources), the
file named GENERIC being the one used to build your initial installation
kernel.  The file NOTES contains entries and documentation for all possible
devices, not just those commonly used.  It is the successor of the ancient
LINT file, but in contrast to LINT, it is not buildable as a kernel but a
pure reference and documentation file.


Source Roadmap:
---------------
bin		System/user commands.

contrib		Packages contributed by 3rd parties.

crypto		Cryptography stuff (see crypto/README).

etc		Template files for /etc.

games		Amusements.

gnu		Various commands and libraries under the GNU Public License.
		Please see gnu/COPYING* for more information.

include		System include files.

kerberos5	Kerberos5 (Heimdal) package.

lib		System libraries.

libexec		System daemons.

release		Release building Makefile & associated tools.

rescue		Build system for statically linked /rescue utilities.

sbin		System commands.

secure		Cryptographic libraries and commands.

share		Shared resources.

sys		Kernel sources.

tools		Utilities for regression testing and miscellaneous tasks.

usr.bin		User commands.

usr.sbin	System administration commands.


For information on synchronizing your source tree with one or more of
the FreeBSD Project's development branches, please see:

  http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/synching.html