[tor-bugs] #3049 [Tor Client]: Allow a Tor process to be ‘owned’ by a controller process

Tor Bug Tracker & Wiki torproject-admin at torproject.org
Thu May 12 05:32:46 UTC 2011


#3049: Allow a Tor process to be ‘owned’ by a controller process
-------------------------+--------------------------------------------------
 Reporter:  rransom      |          Owner:  rransom           
     Type:  enhancement  |         Status:  accepted          
 Priority:  major        |      Milestone:  Tor: 0.2.2.x-final
Component:  Tor Client   |        Version:                    
 Keywords:               |         Parent:                    
   Points:               |   Actualpoints:                    
-------------------------+--------------------------------------------------

Comment(by rransom):

 Replying to [comment:4 nickm]:
 > I'm not sure how you go about implementing that feature, fwiw.  Is there
 a standard way to watch for a process with a particular pid to change its
 status?  waitpid() and friends seem to only be for child processes.  You
 can kill(0) the pid, but that doesn't tell you if *that* process is still
 there: it only tells you if some process with that pid is still there.

 Polling for whether some process has that PID is the best option available
 in POSIX.  That's part of the reason I want a `TAKEOWNERSHIP` control-port
 command -- `__OwningControllerPID` is going to be racy on many systems.

 > On BSDish systems, you can use kevent to wait for a process, but I don't
 believe libevent exposes that atm.  On linuxy systems, you could pull the
 process's start time out of /proc/[pid]/stat and see whether it's changed
 or somethign.  On Windows, you can grab a handle to the process somehow
 and poll it from time to time to see whether it's been signalled.... but
 all of these approaches seem pretty heavyweight atm.

 On Windows, it is possible to wait for the process handle (among others),
 too.  I don't know whether libevent allows us to wait for an arbitrary
 handle (and I assume it doesn't).

 I plan to poll for a PID's existence on all Unixoid systems, and poll a
 process handle on Windows, for now.  This is the other part of the reason
 I want a `TAKEOWNERSHIP` control-port command -- the
 `__OwningControllerPID` option will involve polling, and we don't want to
 do that for any longer than necessary.

-- 
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/3049#comment:5>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list