Subject: bug#68895: Difference between trace behavior in guix repl and guile

From: Maxim Cournoyer <[email-masked]>
Date: Tue, 21 Jan 2025 23:15:03 +0900

Hello,

Suhail Singh <[email-masked]> writes:

> Suhail Singh <[email-masked]> writes:
>
>>> It looks like this isn't the only REPL command that doesn't work in
>>> `guix repl`. I haven't done anything close to a full investigation (I am
>>> new to using Guile!), but many other commands simply don't work.
>>
>> Thank you for your investigation.  I am cc-ing guix-devel in case they
>> have insight regarding these.
>
> Whoops, sent too quickly.  Current (probably inexhaustive) list:
>
> - trace
> - tracepoint
> - break

Perhaps Guix configures Guile to use the no-debug VM even for the REPL?
Se the '--no-debug' documentation in info '(guile) Command-line
Options':

   ‘--debug’
        Start with the debugging virtual machine (VM) engine.  Using the
        debugging VM will enable support for VM hooks, which are needed for
        tracing, breakpoints, and accurate call counts when profiling.  The
        debugging VM is slower than the regular VM, though, by about ten
        percent.  *Note VM Hooks::, for more information.

        By default, the debugging VM engine is only used when entering an
        interactive session.  When executing a script with ‘-s’ or ‘-c’,
        the normal, faster VM is used by default.

Indeed, if you look at the shebang of scripts/guix.in, which is the
template for the 'guix' entry point script, it uses the '-s' argument.

I'm not sure if there's a way to enable the debug VM after Guile was
started in the equivalent of --no-debug.

-- 
Thanks,
Maxim