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

Submitter:  Ognyan Kulev <ogi>
Submitted:  Tue 10 Jun 2003 02:24:58 PM UTC
   
 
Category:  Hurd Interfaces Severity:  3 - Normal
Priority:  5 - Normal Item Group:  None
Status:  Fixed Privacy:  Public
Assigned to:  marcus Originator Name: 
Open/Closed:  Closed Reproducibility:  Every Time
Size (loc):  Medium 30 - 200 Planned Release:  None
Effort:  0.50
Wiki-like text discussion box: 


* Mandatory Fields

Add a New Comment Rich Markup
   

Sun 01 Jul 2012 04:09:59 AM UTC, comment #3: 

Fixed in ccbbdf63102a21e755cd17f68f6d8c43beda21ef, thanks Zheng Da!

Samuel Thibault <sthibaul>
Group administrator
Sat 16 Aug 2003 10:25:16 PM UTC, 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>
Group administrator
Sat 09 Aug 2003 04:51:11 PM UTC, comment #1: 

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

Marcus Brinkmann <marcus>
Group administrator
Tue 10 Jun 2003 02:24:58 PM UTC, 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>
Group Member

 

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

Attach Files:
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

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

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only logged-in users can vote.

     

    Follow 12 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2012-07-01 sthibaul StatusNone Fixed
        Open/ClosedOpen Closed
    2005-12-26 ams StatusFixed None
    2003-08-16 marcus Open/ClosedClosed None
        Size (loc)Low <30 None
    2003-08-09 marcus Open/ClosedOpen None
        ReproducibilityNone None
        Size (loc)None None
        Effort0.00
    2003-08-09 marcus Assigned toNone None
    2003-08-09 marcus CategoryNone None
        StatusNone None

    Back to the top

    Powered by Savane 3.13-f8d8.
    Corresponding source code