Skip Menu |

Download (untitled) / with headers
text/plain 4.7KiB
From Mon Aug 25 09:32:17 1997
Received: from MIT.EDU (PACIFIC-CARRIER-ANNEX.MIT.EDU []) by rt-11.MIT.EDU (8.7.5/8.7.3) with SMTP id JAA16201 for <bugs@RT-11.MIT.EDU>; Mon, 25 Aug 1997 09:32:16 -0400
Received: from by MIT.EDU with SMTP
id AA23141; Mon, 25 Aug 97 09:32:14 EDT
Received: from ( [])
by (8.8.5/8.8.5) with ESMTP id JAA23050;
Mon, 25 Aug 1997 09:31:54 -0400 (EDT)
Received: (from raeburn@localhost) by (8.8.5/8.6.9) id JAA09326; Mon, 25 Aug 1997 09:31:09 -0400 (EDT)
Message-Id: <>
Date: Mon, 25 Aug 1997 09:31:09 -0400 (EDT)
Cc: krb5-bugs@MIT.EDU
Subject: Kerberos rshd deadlock
X-Send-Pr-Version: 3.102

Show quoted text
>Number: 463
>Category: krb5-appl
>Synopsis: kshd hangs with write deadlock
>Confidential: no
>Severity: serious
>Priority: high
>Responsible: tlyu
>State: open
>Class: sw-bug
>Submitter-Id: unknown
>Arrival-Date: Mon Aug 25 09:33:01 EDT 1997
>Last-Modified: Wed Feb 07 13:07:00 EST 2001
>Originator: Ken Raeburn
Cygnus Solutions
Show quoted text
>Release: kerbnet-1.2

System: NetBSD 1.2B NetBSD 1.2B (RAEBURN) #1: Sun Nov 17 01:30:47 EST 1996 i386

Show quoted text

[This was with KerbNet 1.2, but I expect the MIT code suffers the same
lossage. Note I'm sending to both bug addresses. MIT folks, this
should be category "krb5-appl", but that's not on the KerbNet category

This command (rsh from osf1 to linux) hangs:

(sleep 15 ; cat /vmunix) \
| rsh maneki-neko cat /vmlinuz \
| (sleep 30 ; cat > /dev/null)

The cat process (on the Linux box) stops in "pipe_wait" state. The
kshd process does too. According to netstat, a large amount of data
is in the receive queue; none is in the send queue, or the receive
queue of the client. Even when the client side finishes the 30-second
sleep and starts reading, the server side does not recover.

My guess: kshd got data from the net, found that the pipe to the child
was available, and tried writing to it, but since the child wasn't
reading, less pipe buffer space was available than was needed, so kshd
blocked waiting for the child to read. Then the child blocked because
kshd wasn't reading its output.

I first ran into this with "rsync", running in "push" mode; it keeps
locking up. The server side is probably starting to receive file
contents while still sending checksum data for the hierarchy. Come to
think of it, the perl script I used to use instead of rsync, which did
"rsh host tar -c -f - --files-from - < list-o-files" may have
triggered this bug a few times too. I should see if rdist hangs

All other cases of writes in rsh and kshd ought to be checked to make
sure they can't block the flow of data in another direction.

Show quoted text


(sleep 15 ; cat /somebigfile) \
| rsh somehost cat /somebigfile \
| (sleep 30 ; cat > /dev/null)

between two machines on a fast network. (Fast enough that the various
kernel buffers can be filled in the specified delays.)

Show quoted text

IMNSHO kshd (and rsh) should be using non-blocking I/O for any writes.
If the child isn't reading, let the pipe fill, stop reading from the
net, let that buffer fill, and let the kernel throttle the TCP
transmission. If a deadlock still results, *then* it's an application
Show quoted text

From: Tami King <>
To: krb5-bugs@MIT.EDU
Cc: Subject: Re: pending/463: Kerberos rshd deadlock
Date: Mon, 25 Aug 1997 09:41:11 -0400 (EDT)

I am out of the office until August 25. I will read your email when I
return. If you need assistance before then, please contact Jim Butler
( or Vickie Starbuck (

Tamara I. King ---- __o University Technology Services ---- _`\<,_ The Ohio State University
------------------------------ (*)/ (*) ------------------------------------

Responsible-Changed-From-To: gnats-admin->tlyu
Responsible-Changed-By: tlyu
Responsible-Changed-When: Mon Sep 1 22:09:57 1997


From: Ken Raeburn <raeburn@MIT.EDU>
To: krb5-bugs@MIT.EDU
Cc: Subject: krb5-appl/463: kshd hangs with write deadlock
Date: Wed, 7 Feb 2001 13:06:17 -0500 (EST)

For the record, this bug is still present in MIT's post-1.2 release.
And it appears to affect rsync in a bad, bad way, such that I pretty
much have to use ssh instead for large rsync jobs.
Show quoted text
Subject: kshd hangs with write deadlock
Still broken.

With "rsh -x", it appears that the sleep calls may not even be needed to
reproduce the problem; I just used "cat bigfile | rsh -x a1 cat | cat >
/dev/null", and it seems to have deadlocked.