Subject: Re: bug#13299: 24.3.50; Tramp adb and device not found

From: Eli Zaretskii <[email-masked]>
Date: Mon, 18 Mar 2013 19:26:55 +0200

> From: Michael Albinus <[email-masked]>
> Cc: [email-masked],  [email-masked]
> Date: Mon, 18 Mar 2013 08:33:19 +0100
> 
> > What do you mean by "timer" here?  Even in Emacs this has multiple
> > meanings, to say nothing of the rest of the world ;-)
> 
> There is the following code:
> 
>   (with-timeout (10)
>     (with-temp-buffer
>       (when (zerop (call-process tramp-adb-program nil t nil "devices"))
>       ...
> 
> No problem under GNU/Linux. Under MS Windows, the timeout does not
> interrupt the `call-process' form, when it is overdued. That's why I
> have replaced it with a `start-process' implementation.

Hmm... can you describe how this works on Posix platforms?  Once
call-process forks the child process, it is AFAICS blocked inside
waitpid, so how do Emacs timers (which are the basis for with-timeout)
succeed to run at all?  What am I missing?