[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug #3939] rpctrace:d program hangs when signal that terminates or susp
From: |
nobody |
Subject: |
[bug #3939] rpctrace:d program hangs when signal that terminates or suspends it is sent |
Date: |
Sat, 16 Aug 2003 18:25:16 -0400 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686) Gecko/20030714 Galeon/1.3.5 Debian/1.3.5.20030714-2 |
=================== BUG #3939: LATEST MODIFICATIONS ==================
http://savannah.gnu.org/bugs/?func=detailbug&bug_id=3939&group_id=30
Changes by: Marcus Brinkmann <marcus@gnu.org>
Date: Sun 08/17/2003 at 00:25 (Europe/Berlin)
What | Removed | Added
---------------------------------------------------------------------------
Status | Closed | Open
Size (loc) | Low <30 | Medium 30 - 200
------------------ Additional Follow-up Comments ----------------------------
The patch #1633 has been reverted. See the comment in there why and what could
be done alternatively to fix this.
=================== BUG #3939: FULL BUG SNAPSHOT ===================
Submitted by: ogi Project: The GNU Hurd
Submitted on: Tue 06/10/2003 at 16:24
Category: Hurd Interfaces Severity: 5 - Major
Priority: None Bug Group: None
Resolution: Fixed Assigned to: marcus
Originator Name: Originator Email:
Status: Open Reproducibility: Every Time
Size (loc): Medium 30 - 200 Effort: 0.50
Summary: rpctrace:d program hangs when signal that terminates or suspends it
is sent
Original Submission: All RPC communication of a rpctrace:d programs is catched
by rpctrace. When signal that terminates or suspends the traced task is sent,
the special thread of the traced task that handles signals calls RPC
proc_dostop_request to the proc server. This call, by design, suspends all
threads of the traced task except the one that handles the signal.
Unfortunately, actually all the threads are suspended, thus making the whole
process to hang. Moreover, when a key is pressed the whole terminal hangs.
This is probably because the traced task is no longer able to handle any input.
So, why proc_dostop_request can't recognize the signal thread of the traced
task? Because proc_dostop_request receives 2 arguments: task_t process and
thread_t contthread. The function gets all process threads and compare them to
contthread. But contthread is changed by rpctrace! That's why all threads are
suspended.
The easiest solution is to add special case to rpctrace processing. Though it
is questionable whether this is the right thing to do.
Follow-up Comments
*******************
-------------------------------------------------------
Date: Sun 08/17/2003 at 00:25 By: marcus
The patch #1633 has been reverted. See the comment in there why and what could
be done alternatively to fix this.
-------------------------------------------------------
Date: Sat 08/09/2003 at 18:51 By: marcus
Thanks for the report. This has been fixed by Patch #1633, which is now in CVS.
CC list is empty
No files currently attached
For detailed info, follow this link:
http://savannah.gnu.org/bugs/?func=detailbug&bug_id=3939&group_id=30
_______________________________________________
Message sent via/by Savannah
http://savannah.gnu.org/