On 23.09.2010 01:59, Tim Uckun wrote:
>> What do you mean by that?  Goes the timeout undetected?  Can't you
>> kill the process?  Are there any unexpected error messages /
>> exceptions?
>
> Obviously the timeout is not detected.

I don't find that obvious at all from your initial description.

>  I am not sure about the
> exceptions as it happens when I am not looking but I will ramp up the
> logging and see if I can trap anything.

You could start by doing

Thread.abort_on_exception = true

at the beginning of your script.

>> A frequent problem with #popen methods is to not read file descriptors
>> which can make the client hang (i.e. if it writes more than fits into
>> a pipe).  That could be something to check since you are not reading
>> any of the streams.
>
> If you have any pointers to documentation about this I would really
> appreciate it. I know so little about unix processes and pipes and
> such.

I don't have anything handy but I guess Google will help.

A pipe is basically what it looks like: it's a piece of pipe with you 
write to on one end and read from at the other end.  At the read end 
there is a valve.  If nobody reads the valve stays closed and you can't 
fill in more at the write end.  If you use blocking IO your process 
blocks on the system call and won't be active before you read from the 
other end.  (This is a bit simplistic because it leaves threads and 
interpreter implementation out of the way but this is basically what 
happens).

http://en.wikipedia.org/wiki/Pipe_%28Unix%29

Kind regards

	robert


-- 
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/