Another NFS testcase...

Trond Myklebust (trond.myklebust@fys.uio.no)
Fri, 28 Aug 1998 16:26:30 +0200 (CEST)


>>>>> Trond Myklebust <trond.myklebust@fys.uio.no> writes:

> Hi again,
> Sorry to keep bothering people with this NFS stuff.

> I've been able to lock my UP machine fairly hard by sending a
> SIGINT, followed by a SIGKILL to the running command

> dd if=/dev/zero of=file_on_nfs_mounted_dir bs=10240k count=1

> This seems 100% repeatable on my machine. Can anybody else confirm
> this?

Argh. The dangers of working late at night on an empty stomach...

The actual testcase is in fact to type ^C and then to send a SIGKILL
to the above dd command on a pre-patch-2.1.119-1 UP kernel (directly
sending the SIGINT using 'kill' does not seem to cause a lockup)!?

The lock disappears if I doctor rpc_clnt_sigmask to enable SIGINT
and SIGQUIT independently of what the signal action is (see
patch). Why should doing this be incorrect, and what should the
correct fix really be doing?

Cheers,
Trond

--- linux/net/sunrpc/clnt.c-2.1.119-0.1 Fri Aug 28 16:19:05 1998
+++ linux/net/sunrpc/clnt.c Fri Aug 28 16:19:27 1998
@@ -202,11 +202,7 @@

/* Turn off various signals */
if (clnt->cl_intr) {
- struct k_sigaction *action = current->sig->action;
- if (action[SIGINT-1].sa.sa_handler == SIG_DFL)
- sigallow |= sigmask(SIGINT);
- if (action[SIGQUIT-1].sa.sa_handler == SIG_DFL)
- sigallow |= sigmask(SIGQUIT);
+ sigallow |= sigmask(SIGINT) | sigmask(SIGQUIT);
}
spin_lock_irqsave(&current->sigmask_lock, irqflags);
*oldset = current->blocked;

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html