From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Michael Heerdegen Newsgroups: gmane.emacs.bugs Subject: bug#30626: 26.0.91; Crash when traversing a `stream-of-directory-files' Date: Fri, 02 Mar 2018 14:04:53 +0100 Message-ID: <878tbafx1m.fsf@web.de> References: <87inaiss6l.fsf@web.de> <6FCF6ACA-4F29-4B6B-BE9D-D7130C6E9495@gnu.org> <87fu5moe4c.fsf@web.de> <877eqyocro.fsf@web.de> <83zi3uz4nb.fsf@gnu.org> <5d5ccb32-434a-cda9-67c4-c60abeb450df@dancol.org> <87muzrg2hq.fsf@web.de> <87fu5jeyyg.fsf@web.de> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: blaine.gmane.org 1519995854 8594 195.159.176.226 (2 Mar 2018 13:04:14 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Fri, 2 Mar 2018 13:04:14 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.91 (gnu/linux) Cc: 30626@debbugs.gnu.org To: Noam Postavsky Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Mar 02 14:04:10 2018 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1erkM5-0001Zi-FO for geb-bug-gnu-emacs@m.gmane.org; Fri, 02 Mar 2018 14:04:09 +0100 Original-Received: from localhost ([::1]:34865 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1erkO7-0001uH-Ua for geb-bug-gnu-emacs@m.gmane.org; Fri, 02 Mar 2018 08:06:15 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:45270) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1erkNz-0001sV-B6 for bug-gnu-emacs@gnu.org; Fri, 02 Mar 2018 08:06:08 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1erkNu-0002Fd-Bz for bug-gnu-emacs@gnu.org; Fri, 02 Mar 2018 08:06:07 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:60568) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1erkNu-0002F5-7W for bug-gnu-emacs@gnu.org; Fri, 02 Mar 2018 08:06:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1erkNt-0008F5-TR for bug-gnu-emacs@gnu.org; Fri, 02 Mar 2018 08:06:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Michael Heerdegen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 02 Mar 2018 13:06:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 30626 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 30626-submit@debbugs.gnu.org id=B30626.151999590331611 (code B ref 30626); Fri, 02 Mar 2018 13:06:01 +0000 Original-Received: (at 30626) by debbugs.gnu.org; 2 Mar 2018 13:05:03 +0000 Original-Received: from localhost ([127.0.0.1]:40232 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1erkMw-0008Dn-R4 for submit@debbugs.gnu.org; Fri, 02 Mar 2018 08:05:03 -0500 Original-Received: from mout.web.de ([212.227.15.14]:44443) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1erkMv-0008DG-5d for 30626@debbugs.gnu.org; Fri, 02 Mar 2018 08:05:01 -0500 Original-Received: from drachen.dragon ([188.99.169.170]) by smtp.web.de (mrweb004 [213.165.67.108]) with ESMTPSA (Nemesis) id 0LyOuM-1egJqC1fks-015trc; Fri, 02 Mar 2018 14:04:54 +0100 In-Reply-To: <87fu5jeyyg.fsf@web.de> (Michael Heerdegen's message of "Fri, 02 Mar 2018 08:08:55 +0100") X-Provags-ID: V03:K0:cWXk8iPvsSVTcDvL0N/M8rcHMg7OiCp6R3Eg+I/2VMb/FxbRuPk 5ipAiVKAvQgYXAPnPgs6oqQ4NVF6pLOSlKQJyaUFAOOypoWP44KJ56ts5HgtA4tX1XOZUC+ 4E9gWm7mtjSm4sHNW3RfNJdxJmlSwI4EFMZnteZvxMTSWoVJXtyht3ffheHSrK615n99gDx DF0cYKUIIi6Ehi33J8MXQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:hd7cvNf9LOc=:wGZYuS8l5LA1aXWpkBP0vx wdv22GGa7Wxr0r+hm93jzJPuLgOOW+aGL+o4gbGgl0T8Vs/CFVcm/8hRDALkYfmJHDbz3/acq 07yxuoJoBTx0pkmEZR3YaCmwX1GuVlt/hLBtJsWgiuOqEMBaKqEBidn5CT0Nk/aGqmxKKyVYG 5wNXtykmWpRFi66D1i3102wtoMckxZqCE4hlKhNQbFZdIW0sWV2bRDXUZcHBMRr0o6KmGCWzA AI9uBQIaq5pd/o+QGC/3hvobKgYCgDimaOVDY+xtuEWZnXa0T+oagWXrlzKSKoHzMHYfnDICI B1vUuTunYdAoknkqGavdaXpAD2sLAuxx+zqJ9CoiQ507u8cznqLIfRklhWHab3Zmd/I/nbsrL WyxcS+EWdlWcVlTLBXr5Ujkb6Iwx1uHapLhZu1EsWX06FYQRWScFoBiXA9PEty+zRpHIsIeEb v/xYKL0Xu4tmhLuWzXgy1iL+yDx8XQU7GVQAGUazPsuG1RweFxqVloEg3cRf+jkJJhqMEhNto VbOoPmTybZGIbpAi+aMwnCZMSgqQ+LgTxfBVo5gHKg4A+nRBD5lRPXjCoPx0kJ6zV3Oi66qBv CnA6FRAq3xWEsr/8ibBcf3uNitK7QDQNg8HyTo9fTZVWFoB3d2a1MLtTlXWojG1QF807XFVDF V+MyPOMasBHmY1mBVPXICrHyYl34jFKwU8Eh97mMeOFXy849wj+dd9cYxlz6uMaUHlcbu/++P VdZ81CpOiBBvN17VhWt3s+/JhSDiimld1iYD0N3tKKIvaOIATtiKN/b+3ZLreBOXzAhltl2N X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.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" Xref: news.gmane.org gmane.emacs.bugs:143834 Archived-At: Michael Heerdegen writes: > Noam Postavsky writes: > > > Maybe I've misunderstood, but is it not the case that iterating over > > (stream-range 1 n) should require only a constant amount of memory, > > regardless of the value of n? But in this regard, we have a problem with how lexical-binding is implemented for interpreted code. Nested thunks (as implemented in "thunk.el") accumulate useless variable bindings - e.g. (defun test () (thunk-force (thunk-delay (thunk-force (thunk-delay (thunk-force (thunk-delay (lambda () 1)))))))) (test) ==> #1=(closure ((check) (#:val . #1#) (#:forced . t) (check) (#:val . #1#) (#:forced . t) (check) (#:val . #1#) (#:forced . t) t) nil 1) The length of the variable list is equivalent to the number of thunk wrappers. I believe that these useless variable lists are responsible for the crashes of the uncompiled versions of the test files I had posted. I think this problem is different from the gc issue. Streams use nested thunks. Of course does thunk.el not explicitly add such variable lists to the result - this is how closures are built in interpreted code. For nested thunks these just add up. BTW, if you byte-compile the above `test' function, then (disassemble (test)) ==> byte code: args: nil 0 constant 1 1 return and this problem is gone. Michael.