From: Richard Stallman <rms@gnu.org>
To: 17337@debbugs.gnu.org
Subject: bug#17337: epg-wait-for-status hangs forever
Date: Thu, 24 Apr 2014 21:33:25 -0400 [thread overview]
Message-ID: <E1WdV13-0008Pg-UB@fencepost.gnu.org> (raw)
[[[ To any NSA and FBI agents reading my email: please consider ]]]
[[[ whether defending the US Constitution against all enemies, ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]
Yesterday I updated from the trunk and rebuilt.
epa-mail-encrypt and rmail-epa-decrypt now do not terminate.
I got the backtrace below from typing C-g at the latter.
I verified that the call to epg-wait-for-status never returns.
It displays `Decrypting...done', but seems to keep waiting.
I went back to the old Emacs executable from March 19, made from the
trunk fetched on March 18, and aliased function-put to put. It worked
ok: with the same compiled Lisp files, the hang does not happen.
======================================================================
accept-process-output(#<process epg<12>> 1)
epg-wait-for-status((epg-context . [OpenPGP "/usr/bin/X11/gpg" nil nil nil nil nil nil nil (epa-passphrase-callback-function) (epa-progress-callback-function . "Decrypting...") nil nil #<process epg<12>> "/tmp/epg-output127242zO" ((decryption-okay . t) (encrypted-to ("879A7C37B1B10ED6" 16 0))) decrypt nil]) ("BEGIN_DECRYPTION"))
(if (eq (epg-context-protocol context) (quote CMS)) nil (epg-wait-for-status context (quote ("BEGIN_DECRYPTION"))))
epg-start-decrypt((epg-context . [OpenPGP "/usr/bin/X11/gpg" nil nil nil nil nil nil nil (epa-passphrase-callback-function) (epa-progress-callback-function . "Decrypting...") nil nil #<process epg<12>> "/tmp/epg-output127242zO" ((decryption-okay . t) (encrypted-to ("879A7C37B1B10ED6" 16 0))) decrypt nil]) (epg-data . ["/tmp/epg-input12724ppI" nil]))
(progn (write-region cipher nil input-file nil (quote quiet)) (epg-context-set-output-file context (epg--make-temp-file "epg-output")) (epg-start-decrypt context (epg-make-data-from-file input-file)) (epg-wait-for-completion context) (epg--check-error-for-decrypt context) (epg-read-output context))
(unwind-protect (progn (write-region cipher nil input-file nil (quote quiet)) (epg-context-set-output-file context (epg--make-temp-file "epg-output")) (epg-start-decrypt context (epg-make-data-from-file input-file)) (epg-wait-for-completion context) (epg--check-error-for-decrypt context) (epg-read-output context)) (epg-delete-output-file context) (if (file-exists-p input-file) (delete-file input-file)) (epg-reset context))
(let ((input-file (epg--make-temp-file "epg-input")) (coding-system-for-write (quote binary))) (unwind-protect (progn (write-region cipher nil input-file nil (quote quiet)) (epg-context-set-output-file context (epg--make-temp-file "epg-output")) (epg-start-decrypt context (epg-make-data-from-file input-file)) (epg-wait-for-completion context) (epg--check-error-for-decrypt context) (epg-read-output context)) (epg-delete-output-file context) (if (file-exists-p input-file) (delete-file input-file)) (epg-reset context)))
epg-decrypt-string((epg-context . [OpenPGP "/usr/bin/X11/gpg" nil nil nil nil nil nil nil (epa-passphrase-callback-function) (epa-progress-callback-function . "Decrypting...") nil nil #<process epg<12>> "/tmp/epg-output127242zO" ((decryption-okay . t) (encrypted-to ("879A7C37B1B10ED6" 16 0))) decrypt nil]) "-----BEGIN PGP MESSAGE-----\nVersion: GnuPG v1.4.10 (GNU/Linux)\n\nhQEOA4eafDexsQ7WEAQAj/IzHzG41Xl04P9d3aykxHKE4S4AUmCyybhymnVmWdKf\n/22JX7iVIShGB5eyPpiHMkR+l0F6NqclnlDsFyJDfNW++NbL0LY3/Ot86o6KF5Gq\nUP4h1yi6f5VwQI84eMBCM9sst5ZQtyXJXo4+CwovysJEhVz4NbfL+FK3VAlGkzYD\n/37qCj1Ms0M2n8ogCnH4JejW5Qg39dRfWpNd9Noq5JxyH1rKboaTJF+P2GpA60xx\noQJgq1itOoLfgOf8AQhd5JEj4KmwliWbjmZxlN0GMh8xo8+fTIxeOOj0cVLrycW0\nt4Q1fyLG5iThcmWMaGv7wr+chhJCAn3I0quyQ4W5EC2X0ukBUgXKWJzKaRHxU5qG\nMw25QyAbgcYGqrmgKJy2IFkrKA
zDZ4qc9OtQB1xJt/0x/LdlrvfNsDvjHaQPNl2u\nkmVE2tzKZVwlkogjlsuFZnn30WSBvlMNRxFSgHJiOHE7Bq98d7VAk111Vw/7LZn6\nPvNZVu61rUSw9KE79nt19lwv4nxFNLr4RDd69jxCaJANvONzFcSxzGcJ1sqjSL4J\nsTNMflaCT/f8QfNzO4PRvV6svPDm2aJOELoY9qQ7sRdGGcSngLTEbjVyLMCTtVgI\nAxtOKqfs4KNIKbBmfkEfxR3ePp5RWDQjKN0dn7JdCKIplMuca1vQurtOo/me9+Xg\nXnHW3lWfneuye03gK907I9G5mTqyf2qWSsQ6yBCEYNoFOLLtr/kOX9x2UB7hNpxs\n9tyEbngYavyQNIQZ7pucTAYwa/eUEzbfONyxPr7PM8fJkI4oY5hK20qJ5zqW8zH6\nhlMhFgO6FSrqViO/YjObD7pTQkj1iKesZB3tlaLx/AqbkKuU7dS0NpcAsj14jwxi\nkLnuv098ZYBZ6YCykz01rk7yCx2qYoV6azcO/Y8Qe2xpk3l+CLVyaiViTQc3JryE\nXtaTUldkJZHvMAQ0RuJa6C4Xk26EFxNPC0esGt6yCJqErkuhY/Gjo3yc+MfOKbB7\n6V/ZBQecgOYBAevzX07fkcfqCnUuUZnapGLSAdm6HQWXhiqVDuhBF6ssyrDv0j5J\nCk3lpoE5kZfHRjAAeIbBEzNH3rn6uCwREVc5ZGe3gcMEEsq94/RGm/EziDSgSdOR\nVhPGEmeRUVfic5pf+Z5NzoJe4aeAVpTl
3zPjHUNFjFVu2Hr+ev7lFps=\n=ORAS\n-----END PGP MESSAGE-----")
(setq plain (epg-decrypt-string context (buffer-substring start end)))
(let ((context (epg-make-context epa-protocol)) plain) (epg-context-set-passphrase-callback context (function epa-passphrase-callback-function)) (epg-context-set-progress-callback context (cons (function epa-progress-callback-function) "Decrypting...")) (message "Step 2") (sit-for 1) (message "Decrypting...") (setq plain (epg-decrypt-string context (buffer-substring start end))) (message "Step 3") (sit-for 1) (message "Decrypting...done") (debug t) (setq plain (epa--decode-coding-string plain (or coding-system-for-read (get-text-property start (quote epa-coding-system-used)) (quote undecided)))) (message "Decoding done") (if make-buffer-function (save-current-buffer (set-buffer (funcall make-buffer-function)) (let ((inhibit-read-only t)) (insert plain))) (if (y-or-n-p "Replace the origin
al text? ") (let ((inhibit-read-only t)) (delete-region start end) (goto-char start) (insert plain)) (let* ((old-dir default-directory) (buf (save-current-buffer (set-buffer ...) (prog1 ... ... ... ... ... ... ...))) (standard-output buf)) (prog1 (progn (set-buffer standard-output) (insert plain) (epa-info-mode)) (internal-temp-output-buffer-show buf))))) (if (epg-context-result-for context (quote verify)) (epa-display-info (epg-verify-result-to-string (epg-context-result-for context (quote verify))))))
(save-excursion (let ((context (epg-make-context epa-protocol)) plain) (epg-context-set-passphrase-callback context (function epa-passphrase-callback-function)) (epg-context-set-progress-callback context (cons (function epa-progress-callback-function) "Decrypting...")) (message "Step 2") (sit-for 1) (message "Decrypting...") (setq plain (epg-decrypt-string context (buffer-substring start end))) (message "Step 3") (sit-for 1) (message "Decrypting...done") (debug t) (setq plain (epa--decode-coding-string plain (or coding-system-for-read (get-text-property start (quote epa-coding-system-used)) (quote undecided)))) (message "Decoding done") (if make-buffer-function (save-current-buffer (set-buffer (funcall make-buffer-function)) (let ((inhibit-read-only t)) (insert plain))) (if (y-or-n-p "Re
place the original text? ") (let ((inhibit-read-only t)) (delete-region start end) (goto-char start) (insert plain)) (let* ((old-dir default-directory) (buf (save-current-buffer ... ...)) (standard-output buf)) (prog1 (progn (set-buffer standard-output) (insert plain) (epa-info-mode)) (internal-temp-output-buffer-show buf))))) (if (epg-context-result-for context (quote verify)) (epa-display-info (epg-verify-result-to-string (epg-context-result-for context (quote verify)))))))
epa-decrypt-region(1 1323 (lambda nil (let ((inhibit-read-only t)) (delete-region armor-start armor-end) (goto-char armor-start) (current-buffer))))
(let ((coding-system-for-read coding-system-for-read) armor-start armor-end after-end) (setq armor-start (match-beginning 0) armor-end (re-search-forward "^-----END PGP MESSAGE-----$" nil t)) (if armor-end nil (error "Encryption armor beginning has no matching end")) (goto-char armor-start) (require (quote epa)) (if coding-system-for-read nil (if (re-search-forward "^Charset: \\(.*\\)" armor-end t) (setq coding-system-for-read (epa--find-coding-system-for-mime-charset (intern (downcase (match-string 1))))))) (goto-char armor-end) (setq after-end (- (point-max) armor-end)) (epa-decrypt-region armor-start armor-end (function (lambda nil (let ((inhibit-read-only t)) (delete-region armor-start armor-end) (goto-char armor-start) (current-buffer))))) (setq decrypts (cons (list armor-start (- (
point-max) after-end)) decrypts)))
(while (re-search-forward "-----BEGIN PGP MESSAGE-----$" nil t) (let ((coding-system-for-read coding-system-for-read) armor-start armor-end after-end) (setq armor-start (match-beginning 0) armor-end (re-search-forward "^-----END PGP MESSAGE-----$" nil t)) (if armor-end nil (error "Encryption armor beginning has no matching end")) (goto-char armor-start) (require (quote epa)) (if coding-system-for-read nil (if (re-search-forward "^Charset: \\(.*\\)" armor-end t) (setq coding-system-for-read (epa--find-coding-system-for-mime-charset (intern (downcase ...)))))) (goto-char armor-end) (setq after-end (- (point-max) armor-end)) (epa-decrypt-region armor-start armor-end (function (lambda nil (let ((inhibit-read-only t)) (delete-region armor-start armor-end) (goto-char armor-start) (current-buff
er))))) (setq decrypts (cons (list armor-start (- (point-max) after-end)) decrypts))))
(let (decrypts) (goto-char (point-min)) (if (and (rmail-mime-message-p) (not (get-text-property (point-min) (quote rmail-mime-hidden)))) (progn (rmail-mime))) (goto-char (point-min)) (while (re-search-forward "-----BEGIN PGP MESSAGE-----$" nil t) (let ((coding-system-for-read coding-system-for-read) armor-start armor-end after-end) (setq armor-start (match-beginning 0) armor-end (re-search-forward "^-----END PGP MESSAGE-----$" nil t)) (if armor-end nil (error "Encryption armor beginning has no matching end")) (goto-char armor-start) (require (quote epa)) (if coding-system-for-read nil (if (re-search-forward "^Charset: \\(.*\\)" armor-end t) (setq coding-system-for-read (epa--find-coding-system-for-mime-charset (intern ...))))) (goto-char armor-end) (setq after-end (- (point-max) armor-en
d)) (epa-decrypt-region armor-start armor-end (function (lambda nil (let (...) (delete-region armor-start armor-end) (goto-char armor-start) (current-buffer))))) (setq decrypts (cons (list armor-start (- (point-max) after-end)) decrypts)))) (if (and decrypts (rmail-buffers-swapped-p)) (progn (if (y-or-n-p "Replace the original message? ") (progn (setq decrypts (nreverse decrypts)) (let ((beg ...) (end ...) (from-buffer ...)) (save-current-buffer (set-buffer rmail-view-buffer) (narrow-to-region beg end) (goto-char ...) (let ... ...))))))))
(save-excursion (let (decrypts) (goto-char (point-min)) (if (and (rmail-mime-message-p) (not (get-text-property (point-min) (quote rmail-mime-hidden)))) (progn (rmail-mime))) (goto-char (point-min)) (while (re-search-forward "-----BEGIN PGP MESSAGE-----$" nil t) (let ((coding-system-for-read coding-system-for-read) armor-start armor-end after-end) (setq armor-start (match-beginning 0) armor-end (re-search-forward "^-----END PGP MESSAGE-----$" nil t)) (if armor-end nil (error "Encryption armor beginning has no matching end")) (goto-char armor-start) (require (quote epa)) (if coding-system-for-read nil (if (re-search-forward "^Charset: \\(.*\\)" armor-end t) (setq coding-system-for-read (epa--find-coding-system-for-mime-charset ...)))) (goto-char armor-end) (setq after-end (- (point-max) a
rmor-end)) (epa-decrypt-region armor-start armor-end (function (lambda nil (let ... ... ... ...)))) (setq decrypts (cons (list armor-start (- ... after-end)) decrypts)))) (if (and decrypts (rmail-buffers-swapped-p)) (progn (if (y-or-n-p "Replace the original message? ") (progn (setq decrypts (nreverse decrypts)) (let (... ... ...) (save-current-buffer ... ... ... ...))))))))
rmail-epa-decrypt()
--
Dr Richard Stallman
President, Free Software Foundation
51 Franklin St
Boston MA 02110
USA
www.fsf.org www.gnu.org
Skype: No way! That's nonfree (freedom-denying) software.
Use Ekiga or an ordinary phone call.
next reply other threads:[~2014-04-25 1:33 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-25 1:33 Richard Stallman [this message]
2014-05-13 17:23 ` bug#17337: epg-wait-for-status hangs forever Eli Zaretskii
2014-05-14 11:51 ` Richard Stallman
2014-05-14 15:34 ` Eli Zaretskii
2014-05-14 17:01 ` Stefan Monnier
2014-05-15 15:03 ` Richard Stallman
2014-05-15 15:03 ` Richard Stallman
2014-05-15 15:03 ` Richard Stallman
2014-05-19 9:37 ` Richard Stallman
2014-05-18 11:26 ` bug#17337: EPG bug seems to have gone away Richard Stallman
2014-05-19 9:35 ` bug#17337: epa problem has returned Richard Stallman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=E1WdV13-0008Pg-UB@fencepost.gnu.org \
--to=rms@gnu.org \
--cc=17337@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.