Subject: bug#46159: 28.0.50; lexical-let does not work with returned closures on nativecomp

From: "Mark A. Hershberger" <[email-masked]>
Date: Thu, 28 Jan 2021 15:10:33 -0500

I previously filed #45056 but the problem seemed to be fixed.

It has re-appeared and I just noticed some interesting messages in my
*Warnings* buffer that appear to be relevant.

Specifically:

    Warning (comp): init.el:164:39: Warning: ‘(post-cmd post-cmd)’ is a malformed function
    Warning (comp): init.el:181:59: Warning: reference to free variable ‘rsync-buff’

That section of code has this function:

(defun mah/firestarter-sentinel (host post-cmd)
  "Sentinal function that will run the POST-CMD on HOST."
  (lexical-let ((post-cmd post-cmd)
		             (host host)
		             (rsync-buff (get-buffer-create mah/rsync-buff-name)))
    (lambda (proc event-type)
      (message (concat "post cmd: " post-cmd "\nevent: " event-type))
      (cond ((string-equal event-type "finished\n")
	            (if post-cmd
		            (progn (message (concat "rsync finished, running "
					                        post-cmd))
			            (mah/firestarter-do-post host post-cmd rsync-buff))
	              (message "rsync finshed")))
	      (t (if post-cmd
		         (progn (message (concat "rsync didn't finish normally, "
					                     "running anyway.  Check "
					                     mah/rsync-buff-name))
			         (mah/firestarter-do-post host post-cmd rsync-buff))
		         (message "rsync finshed with errors")))))))

I just compiled emacs from master and it did not exhibit the same behavior

In GNU Emacs 28.0.50 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.5, cairo version 1.16.0)
 of 2021-01-28 built on silk
Repository revision: 0e250276d2445b258edcb5cb12796d626e5421dc (This is b8d3ae78c5 with a patch to revert 32c6732d16385f242b1109517f25e9aefd6caa5c applied to it.)
Repository branch: feature/native-comp
Windowing system distributor 'The X.Org Foundation', version 11.0.12004000
System Description: Debian GNU/Linux 10 (buster)

Configured using:
 'configure --with-modules --with-xwidgets --with-gconf --with-cairo
 --with-json --with-nativecomp --with-imagemagick CFLAGS=-O2'

Configured features:
ACL CAIRO DBUS FREETYPE GCONF GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ
IMAGEMAGICK JPEG JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2
M17N_FLT MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SOUND
THREADS TIFF TOOLKIT_SCROLL_BARS X11 XDBE XIM XPM XWIDGETS GTK3 ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Memory information:
((conses 16 1072892 320443)
 (symbols 48 54985 10)
 (strings 32 316990 71161)
 (string-bytes 1 10029517)
 (vectors 16 120122)
 (vector-slots 8 3853812 409822)
 (floats 8 1440 2041)
 (intervals 56 1385 1047)
 (buffers 984 21))

-- 
http://hexmode.com/

I cannot remember the books I've read any more than the meals I have eaten;
even so, they have made me.
            -- Ralph Waldo Emerson