Subject: Re: bug#60996: 29.0.60; Native compile fails to remove temp file for trampoline

From: Andrea Corallo <[email-masked]>
Date: Thu, 26 Jan 2023 16:50:59 +0000

Eli Zaretskii <[email-masked]> writes:

>> Cc: [email-masked]
>> From: Andrea Corallo <[email-masked]>
>> Date: Mon, 23 Jan 2023 17:04:30 +0000
>> 
>> yes I confirm that's a trampoline compilation.  The file starts with
>> "lambda" as the mechanism is the same used for compiling function not
>> not defined in source files.
>
> Thanks.  Could the problem be caused by the fact that we nowadays
> compile trampolines in the same session where it is needed, instead of
> in a separate sub-process?  IOW, could this cause a situation where we
> are still using the renamed .eln.tmp trampoline when we want to delete
> it?

I don't know, still I've to understand why we try to delete this
trampoline.

What I've understood from the trace is that `comp--native-compile' is
trying to delete the trampoline that was just compiled.

This is not expected in normal conditions so we have to understand why.

The only case where we might do that AFAIR is when
`inhibit-automatic-native-compilation' is used.  This was the infamous
mechanism that was installed by Lars where, if I'm not wrong, we are
supposed to compile a trampoline, load it, and remove it to pretend we
didn't compiled anything :x

If (as I understand) in Windows we can't delete a mapped file we have a
problem more to solve.

Andrew do you happen to have `inhibit-automatic-native-compilation' set?

If not could we debug why we reach delete-file in this piece of code at
the end of `comp--native-compile'?

        (when (and (not (stringp function-or-file))
                   comp-ctxt
                   (comp-ctxt-output comp-ctxt)
                   (file-exists-p (comp-ctxt-output comp-ctxt)))
          (delete-file (comp-ctxt-output comp-ctxt)))

Thanks

  Andrea