bugThe GNU Hurd - Bugs: bug #3939, rpctrace:d program hangs when...


bug #3939: rpctrace:d program hangs when signal that terminates or suspends it is sent

Submitted by:  Ognyan Kulev <ogi>
Submitted on:  Tue Jun 10 14:24:58 2003  
Category: Hurd InterfacesSeverity: 3 - Normal
Priority: 5 - NormalItem Group: None
Status: FixedPrivacy: Public
Assigned to: Marcus Brinkmann <marcus>Originator Name: 
Open/Closed: ClosedReproducibility: Every Time
Size (loc): Medium 30 - 200Planned Release: None
Effort: 0.50
Wiki-like text discussion box: 

Add a New Comment (Rich MarkupRich Markup):

You are not logged in

Please log in, so followups can be emailed to you.


Sun Jul 1 04:09:59 2012, comment #3:

Fixed in ccbbdf63102a21e755cd17f68f6d8c43beda21ef, thanks Zheng Da!

Samuel Thibault <sthibaul>
Project Member
Sat Aug 16 22:25:16 2003, comment #2:

The patch #1633 has been reverted. See the comment in there why and what could be done alternatively to fix this.

Marcus Brinkmann <marcus>
Project AdministratorIn charge of this item.
Sat Aug 9 16:51:11 2003, comment #1:

Thanks for the report. This has been fixed by Patch #1633, which is now in CVS.

Marcus Brinkmann <marcus>
Project AdministratorIn charge of this item.
Tue Jun 10 14:24:58 2003, 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.

Ognyan Kulev <ogi>
Project Member


(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach File(s):

No files currently attached


Depends on the following items: None found

Items that depend on this one: None found


Carbon-Copy List
  • -unavailable- added by sthibaul (Posted a comment)

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.


    Please enter the title of George Orwell's famous dystopian book (it's a date):



    Follow 12 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Sun Jul 1 04:09:59 2012sthibaulStatusNone=>Fixed
    Mon Dec 26 21:31:57 2005amsStatusFixed=>None
    Sat Aug 16 22:25:16 2003marcusOpen/ClosedClosed=>(Error - Not Found)
      Size (loc)Low <30=>(Error - Not Found)
    Sat Aug 9 16:51:11 2003marcusOpen/ClosedOpen=>(Error - Not Found)
      ReproducibilityNone=>(Error - Not Found)
      Size (loc)None=>(Error - Not Found)
    Sat Aug 9 16:51:10 2003marcusAssigned toNone=>NA
    Sat Aug 9 16:51:09 2003marcusCategoryNone=>(Error - Not Found)
      StatusNone=>(Error - Not Found)

    Back to the top

    Powered by Savane 3.1-cleanup1