Subject: Re: epg-wait-for-status hangs forever

From: Eli Zaretskii <[email-masked]>
Date: Wed, 14 May 2014 18:34:38 +0300

> Date: Wed, 14 May 2014 07:51:27 -0400
> From: Richard Stallman <[email-masked]>
> CC: [email-masked]
> 
>     Or maybe the problem is triggered by one of the pre-loaded Lisp files?
>     In that case, another thing to try is use C sources from Mar 18, but
>     pre-loaded Lisp files from Apr 24.
> 
> It is not feasible for me to do things like that.
> It takes hours to recompile on this machine.

I didn't mean to recompile.  I meant to copy temacs from the Mar 18
build (which I believe you have built already, since you say you tried
it) into the Apr 24 tree, and then do "temacs -l loadup dump" there to
dump Emacs.  This should be easy and fast enough (assuming you do have
the temacs binary from Mar 18).  You could then use the resulting
dumped Emacs with Lisp files from Apr 24, and see if the problem
persists.  This will allow us to conclude whether changes done in the
pre-loaded Lisp files between Mar 18 and Apr 24 could have any
relevance to the issue at hand.

> Have you been able to reproduce the bug?

I can't: I don't have EasyPG installed and set up.

> Does anyone else here M-x rmail-epa-decrypt?
> Or epa at all?

If no one responds or reports they reproduced the problem, perhaps you
could find a few moments to shed more light on how it hangs.  AFAIU,
you saw it stuck in this loop (in epg-wait-for-status):

    (while (and (eq (process-status (epg-context-process context)) 'run)
		epg-pending-status-list)
      (accept-process-output (epg-context-process context) 1))

This means that either (1) epg does not exit when it should, or
(2) epg-pending-status-list doesn't become nil, which AFAIU means
that no output is ever received from epg, or (3) accept-process-output
gets stuck, even though it is called with a 1-sec time-out.

Can you tell what is the correct behavior (the one you see in the
older binary) that causes this loop to terminate, and which one of the
above 3 alternatives causes epg-wait-for-status to never return?

Thanks.