From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Richard Stallman Newsgroups: gmane.emacs.bugs Subject: bug#17337: epg-wait-for-status hangs forever Date: Thu, 24 Apr 2014 21:33:25 -0400 Message-ID: Reply-To: rms@gnu.org NNTP-Posting-Host: plane.gmane.org Content-Type: text/plain; charset=ISO-8859-15 X-Trace: ger.gmane.org 1398394380 4923 80.91.229.3 (25 Apr 2014 02:53:00 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 25 Apr 2014 02:53:00 +0000 (UTC) To: 17337@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Apr 25 04:52:54 2014 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1WdWFx-0006tM-V7 for geb-bug-gnu-emacs@m.gmane.org; Fri, 25 Apr 2014 04:52:54 +0200 Original-Received: from localhost ([::1]:54764 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WdWFx-0002xz-F7 for geb-bug-gnu-emacs@m.gmane.org; Thu, 24 Apr 2014 22:52:53 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:54692) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WdV4b-0002O9-Lj for bug-gnu-emacs@gnu.org; Thu, 24 Apr 2014 21:37:11 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WdV4Z-0008AL-C7 for bug-gnu-emacs@gnu.org; Thu, 24 Apr 2014 21:37:05 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:49480) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WdV4Z-0008A2-88 for bug-gnu-emacs@gnu.org; Thu, 24 Apr 2014 21:37:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1WdV4Y-0004Bm-IX for bug-gnu-emacs@gnu.org; Thu, 24 Apr 2014 21:37:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Richard Stallman Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 25 Apr 2014 01:37:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 17337 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.139838977716021 (code B ref -1); Fri, 25 Apr 2014 01:37:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 25 Apr 2014 01:36:17 +0000 Original-Received: from localhost ([127.0.0.1]:57636 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WdV3n-0004AK-WE for submit@debbugs.gnu.org; Thu, 24 Apr 2014 21:36:17 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:51867) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WdV3l-0004AC-HV for submit@debbugs.gnu.org; Thu, 24 Apr 2014 21:36:14 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WdV2y-0006qq-2J for submit@debbugs.gnu.org; Thu, 24 Apr 2014 21:36:13 -0400 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:36569) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WdV2x-0006qi-Ue for submit@debbugs.gnu.org; Thu, 24 Apr 2014 21:35:24 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:51758) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WdV2A-0007nP-Ar for bug-gnu-emacs@gnu.org; Thu, 24 Apr 2014 21:35:23 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WdV14-0005f2-FA for bug-gnu-emacs@gnu.org; Thu, 24 Apr 2014 21:34:34 -0400 Original-Received: from fencepost.gnu.org ([2001:4830:134:3::e]:50343) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WdV14-0005et-Bi for bug-gnu-emacs@gnu.org; Thu, 24 Apr 2014 21:33:26 -0400 Original-Received: from rms by fencepost.gnu.org with local (Exim 4.71) (envelope-from ) id 1WdV13-0008Pg-UB; Thu, 24 Apr 2014 21:33:25 -0400 X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:88277 Archived-At: [[[ 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(#> 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 #> "/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 #> "/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 #> "/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.