Subject: Re: bug#67141: 30.0.50; Missing element in the backtrace

From: Andrea Corallo <[email-masked]>
Date: Fri, 17 Nov 2023 15:48:28 -0500

Stefan Monnier <[email-masked]> writes:

>>> mmmh, my crystal ball suggests that some (native compiled) code is
>>> calling directly a primitive (eval) without going through funcall, as a
>>> consequence no backtrace is recorded.  AFAIR that's what happen with
>>> byte compiled code with primitves with assigned (byte)op-code as well.
>>
>> PS and indeed similarly what happen calling a primitive from other C
>> code.
>
> But C code can choose whether it calls `F<foo>` directly or goes through
> `Ffuncall`, whereas for ELisp code there is no such control.

Yes, still already with bytecode only in some case in Elisp code it goes
through funcall and in some it doesn't.

> It impacts debugging and profiling, in my experience.

I see, the outcome for me is that we should offer a way for the user to
force the use of funcall.  Unfortunatelly ATM if one writes like
(funcall 'eval ...) it gets optimized.  Maybe even a funcall wrapper
written in Elisp would be sufficient?

  Andrea