[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
(no subject)
From: |
Andrew R. Reiter |
Subject: |
(no subject) |
Date: |
Tue, 30 Oct 2001 18:37:15 -0500 (EST) |
>Submitter-Id: net
>Originator: Andrew R. Reiter
Andrew R. Reiter
>Organization:
net
>Confidential: no
>Synopsis: remote cvs pserver core -- possible signal race?
>Severity: critical
>Priority: high
>Category: cvs
>Class: sw-bug
>Release: cvs-1.11
>Environment:
System: FreeBSD fledge.watson.org 4.4-PRERELEASE FreeBSD 4.4-PRERELEASE #0: Thu
Aug 16 15:16:58 EDT 2001
robert@fledge.watson.org:/usr/obj/data/fbsd-stable/src/sys/FLEDGE i386
>Description:
The function src/server.c:server_cleanup(int), which is the signal
handler for a number of signals related to the pserver code, if I
understand the code correctly, contains some problems which I'm
assuming led to a core I managed to cause remotely. Essentially,
the handler function calls a few unsafe/non-reentrant functions,
such as select(). This could possibly cause a race condition to
occur. When I found the core, I gdb'd it and found it bailing in
multiple calls to sigprocmask()...
>How-To-Repeat:
I managed to cause the core to occur remotely by doing:
cvs login
cvs co src <- large source tree (FreeBSD)
ctl-C
ctl-C
ctl-Z
killall -9 cvs <- kill the process for real
>Fix:
If this is not the code in which the bug is from, atleast make the
handler reentrant.