The following program causes `(@ (system vm program) print-program)' to throw an exception when run in Guile 2.1.3.104-8f2f8:
(use-modules (system foreign)) (format #t "~S~%" (pointer->procedure double (dynamic-func "sqrt" (dynamic-link)) (list double))) print-program tries to access fields of the procedure's debug info record even if find-program-debug-info fails and returns #f. The following patch fixes the problem. >From 0ec7bff9e71f1c1c46fa3c1d2bdbc43f5db3588c Mon Sep 17 00:00:00 2001 From: Robin Templeton <ro...@terpri.org> Date: Sat, 27 Aug 2016 13:42:10 -0400 Subject: [PATCH] Check for missing debug info in print-program * module/system/vm/program.scm (print-program): Check the return value of find-program-debug-info. --- module/system/vm/program.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/system/vm/program.scm b/module/system/vm/program.scm index 9f5b764..32c96f2 100644 --- a/module/system/vm/program.scm +++ b/module/system/vm/program.scm @@ -265,7 +265,7 @@ lists." ;; It could be the procedure had its name property set via the ;; procedure property interface. (name (or (and program (procedure-name program)) - (program-debug-info-name pdi))) + (and pdi (program-debug-info-name pdi)))) (source (match (find-program-sources addr) (() #f) ((source . _) source))) -- 2.9.3