Subject: tracepointing and backtracing in the REPL sometime hang
From: Adriano Peluso <[email-masked]>
To: [email-masked]
Date: Fri, 14 May 2021 09:02:14 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

in Guile 3.0.5 installed with Guix (as a package manager on top of
Ubuntu)

In a file I have this simple procedure

(define (f n)
  (if (< n 3)
      n
      (+ (f (- n 1))
	 (* 2 (f (- n 2)))
	 (* 3 (f (- n 3))))))

it's a variation of the one calculating the Fibonacci numbers, from an
exercise of the SICP (1.11)

At the REPL, I load the file normally

scheme@(guile-user)> (load "1.11.scm")

Now, I can trace this procedure

scheme@(guile-user)> ,trace (f 4)
trace: |  (f 4)
trace: |  |  (f 3)
trace: |  |  |  (f 2)
trace: |  |  |  2
trace: |  |  |  (f 1)
trace: |  |  |  1
trace: |  |  |  (f 0)
trace: |  |  |  0
trace: |  |  4
trace: |  |  (f 2)
trace: |  |  2
trace: |  |  (f 1)
trace: |  |  1
trace: |  11

But I can't tracepoint it

scheme@(guile-user)> ,tp f
Trap 0: Tracepoint at #<procedure f (n)>.
scheme@(guile-user)> (f 4)
Trap 0: (f 4)
Trap 0: |  (f 3)
Trap 0: |  |  (f 2)
ice-9/boot-9.scm:1669:16: In procedure raise-exception:
Wrong number of arguments to #<procedure return-handler (frame depth
values)>

Entering a new prompt.  Type `,bt' for a backtrace or `,q' to continue.
scheme@(guile-user) [1]> 

and now I can't even print a backtrace

scheme@(guile-user)> (f 4)
Trap 0: (f 4)
Trap 0: |  (f 3)
Trap 0: |  |  (f 2)
ice-9/boot-9.scm:1669:16: In procedure raise-exception:
Wrong number of arguments to #<procedure return-handler (frame depth
values)>

Entering a new prompt.  Type `,bt' for a backtrace or `,q' to continue.
scheme@(guile-user) [1]> ,bt
In /home/adriano/Documenti/SICP/1.11.scm:
     64:9  4 (f 4)
     64:9  3 (f 3)
While executing meta-command:
In procedure frame-local-ref: Argument 2 out of range: 1
scheme@(guile-user) [1]> 

and now I can't even trace no more

scheme@(guile-user) [1]> ,q
scheme@(guile-user)> ,trace (f 4)
While executing meta-command:
Wrong number of arguments to #<procedure return-handler (frame depth
values)>
scheme@(guile-user)>