emacs UI hang: viewing a thread where msg has .tgz attachment with symlink to ..
authorSanjoy Mahajan <sanjoy@MIT.EDU>
Fri, 18 Jul 2014 00:11:28 +0000 (20:11 +2000)
committerW. Trevor King <wking@tremily.us>
Fri, 7 Nov 2014 18:03:45 +0000 (10:03 -0800)
fb/b08f10a89919293585752fbb1b02c49be16dcc [new file with mode: 0644]

diff --git a/fb/b08f10a89919293585752fbb1b02c49be16dcc b/fb/b08f10a89919293585752fbb1b02c49be16dcc
new file mode 100644 (file)
index 0000000..3b95ed0
--- /dev/null
@@ -0,0 +1,270 @@
+Return-Path: <sanjoy@mit.edu>\r
+X-Original-To: notmuch@notmuchmail.org\r
+Delivered-To: notmuch@notmuchmail.org\r
+Received: from localhost (localhost [127.0.0.1])\r
+       by olra.theworths.org (Postfix) with ESMTP id 1D5E9431FB6\r
+       for <notmuch@notmuchmail.org>; Thu, 17 Jul 2014 17:11:40 -0700 (PDT)\r
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: -0.7\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=-0.7 tagged_above=-999 required=5\r
+       tests=[RCVD_IN_DNSWL_LOW=-0.7] autolearn=disabled\r
+Received: from olra.theworths.org ([127.0.0.1])\r
+       by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
+       with ESMTP id BnJ2hvgQZ1y8 for <notmuch@notmuchmail.org>;\r
+       Thu, 17 Jul 2014 17:11:36 -0700 (PDT)\r
+Received: from dmz-mailsec-scanner-3.mit.edu (dmz-mailsec-scanner-3.mit.edu\r
+       [18.9.25.14])\r
+       (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))\r
+       (No client certificate requested)\r
+       by olra.theworths.org (Postfix) with ESMTPS id 2DB4A431FAE\r
+       for <notmuch@notmuchmail.org>; Thu, 17 Jul 2014 17:11:36 -0700 (PDT)\r
+X-AuditID: 1209190e-f79946d000007db1-38-53c866379c09\r
+Received: from mailhub-auth-1.mit.edu ( [18.9.21.35])\r
+       (using TLS with cipher AES256-SHA (256/256 bits))\r
+       (Client did not present a certificate)\r
+       by dmz-mailsec-scanner-3.mit.edu (Symantec Messaging Gateway) with SMTP\r
+       id 71.E9.32177.73668C35; Thu, 17 Jul 2014 20:11:35 -0400 (EDT)\r
+Received: from outgoing.mit.edu (outgoing-auth-1.mit.edu [18.9.28.11])\r
+       by mailhub-auth-1.mit.edu (8.13.8/8.9.2) with ESMTP id s6I0BXN8022140\r
+       for <notmuch@notmuchmail.org>; Thu, 17 Jul 2014 20:11:34 -0400\r
+Received: from approx.mit.edu (pool-71-126-238-231.bstnma.east.verizon.net\r
+       [71.126.238.231]) (authenticated bits=0)\r
+       (User authenticated as sanjoy@ATHENA.MIT.EDU)\r
+       by outgoing.mit.edu (8.13.8/8.12.4) with ESMTP id s6I0BVHG024367\r
+       (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NOT)\r
+       for <notmuch@notmuchmail.org>; Thu, 17 Jul 2014 20:11:33 -0400\r
+Received: from sanjoy by approx.mit.edu with local (Exim 4.82_1-5b7a7c0-XX)\r
+       (envelope-from <sanjoy@mit.edu>) id 1X7vlo-0007O5-Vu\r
+       for notmuch@notmuchmail.org; Thu, 17 Jul 2014 20:11:29 -0400\r
+From: Sanjoy Mahajan <sanjoy@MIT.EDU>\r
+To: notmuch@notmuchmail.org\r
+Subject: emacs UI hang: viewing a thread where msg has .tgz attachment with\r
+       symlink to ..\r
+User-Agent: Notmuch/0.18.1 (http://notmuchmail.org) Emacs/24.3.1\r
+       (i486-pc-linux-gnu)\r
+Date: Thu, 17 Jul 2014 20:11:28 -0400\r
+Message-ID: <87fvhzy18v.fsf@approx.mit.edu>\r
+MIME-Version: 1.0\r
+Content-Type: multipart/mixed; boundary="=-=-="\r
+X-Brightmail-Tracker:\r
+ H4sIAAAAAAAAA+NgFlrFKsWRmVeSWpSXmKPExsUixCmqrGuediLYYP1xYYvrN2cyOzB6PFt1\r
+       izmAMYrLJiU1J7MstUjfLoErY8GNbewFTzMqGr/MYmtgnJLSxcjJISFgIvFz6VdWCFtM4sK9\r
+       9WxdjFwcQgKzmSTezljOAuGcZ5R4ffY9O4TzjkniYvNdJgjnMKPE9rYrjF2MHBxsAqoSf/8H\r
+       gowSEZCW2Hl3NthYYYFIiaU3TzOD2KICIRI/Z/YwgdgsQOXzvi4As3kFtCWuL/3MAmELSpyc\r
+       +QTMZhbQl5g9vZt1AiPfLCSpWUhSELaExMEXL5ghbHGJD4dnM0HYJhKXDjyCshUlpnQ/ZJ8F\r
+       dCmzgLzE4nniCxjZVzHKpuRW6eYmZuYUpybrFicn5uWlFuka6+VmluilppRuYgQHsSTfDsav\r
+       B5UOMQpwMCrx8D64djxYiDWxrLgy9xCjJAeTkihvZeSJYCG+pPyUyozE4oz4otKc1OJDjCpA\r
+       qx5tWH2BUYolLz8vVUmEN/s+UCtvSmJlVWpRPkyZNAeLkjjvW2urYCGB9MSS1OzU1ILUIpis\r
+       DAeHkgSvVyrQAsGi1PTUirTMnBKENBMH5yFGCQ4eoOGfkoFqeIsLEnOLM9Mh8qcYXTnmzTrV\r
+       xsSxAEwuApNLwOS1v2famITALpMS592YAtQsANKcUZoHNx+WxF4xigO9Lsy7DqSKB5gA4Ta8\r
+       AlrOBLRcuhzks+KSRISUVANj9JlDpdrdp6u4GyZWFXQY+hWfr0gvjnfz/8anelO0Z2N4gDFD\r
+       lsVXuXY1Fw0+DU3LwG9Ln7YePLb4Vua1/ifLLyfEzuw3Xy20M0fN78TGvl9VpR9b81t/zWH/\r
+       +3jD3cDPx87w/vxju73t7uc8hfkHP7KH7w01NLofM/VkpN5StgjZ23muTJpKLMUZiYZazEXF\r
+       iQBZILXvPQMAAA==\r
+X-BeenThere: notmuch@notmuchmail.org\r
+X-Mailman-Version: 2.1.13\r
+Precedence: list\r
+List-Id: "Use and development of the notmuch mail system."\r
+       <notmuch.notmuchmail.org>\r
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
+List-Post: <mailto:notmuch@notmuchmail.org>\r
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
+X-List-Received-Date: Fri, 18 Jul 2014 00:11:40 -0000\r
+\r
+--=-=-=\r
+Content-Type: text/plain\r
+\r
+When I view one particular thread, in which one of the messages has a\r
+.tgz attachment, emacs hangs for at least 2-3 minutes before I stop it\r
+with ctrl-g.  An strace on the emacs process shows an endless series of\r
+stats and opens such as:\r
+\r
+open("/tmp/emm.3391uhh/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/course/src/sfm-source/book/figures/fig-421.png",\r
+O_RDONLY|O_LARGEFILE) = 15\r
+\r
+Those are undoubtedly from the message with the .tgz attachment, which\r
+all untars to src/ and has src/course as a symlink to ..:\r
+\r
+$ tar -tvf 6.SFMx-source.tgz | grep src/course\r
+lrwxrwxrwx sanjoy/sanjoy      0 2014-04-22 14:59 src/course -> ..\r
+\r
+So I wonder whether notmuch-emacs is trying to untar the attachment and\r
+then makes an ever more nested version of it, and never stops.  (As a\r
+test, I visited the .tgz file directly in Emacs [with C-x C-f] but that\r
+caused no problem.  So I think it is something specific to the notmuch\r
+emacs interface.)\r
+\r
+When I ctrl-g the emacs, I get a view of the thread in notmuch-show\r
+mode, but perhaps not surprisingly it is slightly incorrect (see\r
+attached screenshot).  The last message's information and content (from\r
+the "Subject:" line onward) should be indented one space to line up\r
+under the "Sanjoy Mahajan...07:11".\r
+\r
+I'm using notmuch and notmuch-emacs 0.18.1-1 (Debian/i386 pkg) and emacs\r
+24.3.\r
+\r
+If there is further debugging information that would help, or tests that\r
+I should run, let me know.\r
+\r
+-Sanjoy\r
+\r
+\r
+--=-=-=\r
+Content-Type: image/png\r
+Content-Disposition: attachment; filename=screen.png\r
+Content-Transfer-Encoding: base64\r
+Content-Description: screenshot\r
+\r
+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\r
+DSxUAwvVwEI1sFANLFQDC9XAQjWwUA0sVAML1cBCNbBQDSxUAwvVwEI1sFANLFQDC9XAQjWwUA0s\r
+VAML1cBCNbBQDSxUAwvVwEI1sFANLFQDC9XAQjWwUA0sVAML1cBCNbBQDSxUAwvVwEI1sFANLFQD\r
+C9XAQjWwUA0sVAML1cBCNbBQDSxUAwvVwEI1sFANLFQDC9XAQjWwUA0sVAML1cBCNbBQDSxUAwvV\r
+wEI1sFANLFQDC9XAQjWwUA0sVAML1cBCNbBQDSxUAwvVwEI1sFANLFQDC9XAQjWwUA0sVAML1cBC\r
+NbBQDSxUAwvVwEI1sFANLFQDC9XAQjWwUA0sVAML1cBCNbBQDSxUAwvVwEI1sFANLFQDC9XAQjWw\r
+UA0sVAML1cBCNbBQDSxUAwvVwEI1sFANLFQDC9XAQjWwUA0sVAML1cBCNbBQDSxUAwvVwEI1sFAN\r
+LFQDC9XAQjWwUA0sVAML1cBCNbBQDSxUAwvVwEI1sFANLFQDC9XAQjWwUA0sVAML1cBCNbBQDSxU\r
+AwvVwEI1sFANLFQDC9XAQjWwUA0sVAML1cBCNbBQDSxUAwvVwEI1sFANLFQDC9XAQjWwUA0sVAML\r
+1cBCNbBQDSxUAwvVwEI1sFANLFQDC9XAQjWwUA0sVAML1cBCNbBQDSxUAwvVwEI1sFANLFQDC9XA\r
+QjWwUA0sVAML1cBCNbBQDSxUAwvVwEI1sFANLFQDC9XAQjWwUA0sVAML1cBCNbBQDSxUAwvVwEI1\r
+sFANLFQDC9XAQjWwUA0sVAML1cBCNbBQDSxUAwvVwEI1sFANLFQDC9XAQjWwUA0sVAML1cBCNbBQ\r
+DSxUAwvVwEI1sFANLFQDC9XAQjWwUA0sVAML1cBCNbBQDSxUAwvVwEI1sFANLFQDC9XAQjWwUA0s\r
+VAML1cBCNbBQDSxUAwvVwEI1sFANLFQDC9XAQjWwUA0sVAML1cBCNbBQDSxUAwvVwEI1sFANLFQD\r
+C9XAQjWwUA0sVAML1cBCNbBQDSxUAwvVwEI1sFANLFQDC9XAQjWwUA0sVAML1cBCNbBQDSxUAwvV\r
+wEI1sFANLFQDC9XAQjWwUA0sVAML1cBCNbBQDSxUAwvVwEI1sFANLFQDC9XAQjWwUA0sVAML1cBC\r
+NbBQDSxUAwvVwEI1sFANLFQDC9XAQjWwUA0sVAML1cBCNbBQDSxUAwvVwEI1sFANLFQDC9XAQjWw\r
+UA0sVAML1cBCNbBQDSxUAwvVwEI1sFANLFQDC9XAQjWwUA0sVAML1cBCNbBQDSxUAwvVwEI1sFAN\r
+LFQDC9XAQjWwUA0sVAML1cBCNbBQDSxUAwvVwOKt/BfB5D//+e8XAsm/qQaVqMa4v2lsQ3i9915d\r
+Fs9mzh7j3mS3zyY+tHi+tivjg17oX17brBrLh/IaP7jRl5Obj1Or6d/0SJEdwEvK5XmBmmeTUjtJ\r
+g1rdClcoqmSM7PO6/0trXOLho5g8vnE18072QWo15vl6nppw6terp4t8uZr+Hy1psMb5ci/UpJrk\r
+85Gz8Hq02hQrGnucULNftWmpMdmZJTuyZQKixlg1qiap0hhQY/yyD63m2TwvUNMuyCn2UeOfPQ+o\r
+8e+jUGNSOdn3ps7C0NQN7Xr05ZwUe7VouRr/Vt3htg4kls+zPWldPOAaFmPCo1rmE6e+24SXRq94\r
+VumMzzSlDklSDqJB1Lw0IpJxNe6Mk9NuhhrzHEvDHd61uHUHns6NZ3lpzGTO+6gxoXR03i44M8GP\r
+WAorfI1Ky0Kzk8rTdxDXNl1aodLZnFWT9WJ35LZ4FrnxSVLTihbH1Rj/aLLE42pEpnmJ5RIyMn6t\r
+LJPEh1fzEt/DeK1JPepLVkSZLvu8aIWezUu2QtIFNWpX10UGs2uN74XG1CyrNa7IJamNkeKyl7xt\r
+1IlfUc14X+PbnrLWmJ3UhKroM4g7MpWaw/Q1coIfWo1v0ESND3MPrca1JFNhQNWglY3c/FqTVbuX\r
+LElLzXPeGM5Ro15mYcCMCG2umpe8wng1h47QbEcwnOX7qnFxfVLTPL7jUxOO0uU3qSZqyBqlfFms\r
+YrFkfaf+ksUH4X/payo1EgZEIdehh1mk5iVdIZC+JgVT41cDQpfvLYUif75+jmFA3jZK4hCM7mNG\r
+Lm+aeGXq+Xrs84bqFp6NKbqKa1n2YlQ1eolRtX96LbH0dQyU231NFn5fp4tj7eBMFVEZX6bCkgjt\r
+Ob4aOQ9VoPwSPq662mCuY/Dc6GtefBzizoHDqHldZn4UfUPwjqjkZNXgQzWw/Puf//m/N8D8x1vs\r
+5bj4X/5sAxH+ogYWqoGFamChGlioBhaqgYVqYKEaWKgGFqqBhWpgoRpYqAYWqoGFamChGlioBhaq\r
+gYVqYHFS/h91vWxSplY7BQAAABx0RVh0Y29tbWVudABlbWFjc0BhcHByb3gubWl0LmVkdbW2m7QA\r
+AAAldEVYdGRhdGU6Y3JlYXRlADIwMTQtMDctMTZUMDY6NDc6NDItMDQ6MDAA3zmcAAAAJXRFWHRk\r
+YXRlOm1vZGlmeQAyMDE0LTA3LTE2VDA2OjQ3OjQyLTA0OjAwcYKBIAAAAABJRU5ErkJggg==\r
+--=-=-=--\r