Subject: Compiling geiser doc.scm failure.

From: Dale Smith <[email-masked]>
Date: Wed, 5 Oct 2011 15:43:33 -0400

I was having some difficulty using geiser with a recent guile, and
noticed an error in my *geiser messages* buffer:

INFO: RETORT: ((error (key . retort-syntax)) (output . ";;; note:
auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;;       or pass the --no-auto-compile argument to disable.
;;; compiling /usr/local/share/geiser/guile/geiser/emacs.scm
;;; compiling /usr/local/share/geiser/guile/geiser/evaluation.scm
;;; compiling /usr/local/share/geiser/guile/geiser/modules.scm
;;; compiling /usr/local/share/geiser/guile/geiser/utils.scm
;;; compiled /home/dsmith/.cache/guile/ccache/2.0-LE-4-2.0/usr/local/share/geiser/guile/geiser/utils.scm.go
;;; compiled /home/dsmith/.cache/guile/ccache/2.0-LE-4-2.0/usr/local/share/geiser/guile/geiser/modules.scm.go
;;; compiled /home/dsmith/.cache/guile/ccache/2.0-LE-4-2.0/usr/local/share/geiser/guile/geiser/evaluation.scm.go
;;; compiling /usr/local/share/geiser/guile/geiser/completion.scm
;;; compiled /home/dsmith/.cache/guile/ccache/2.0-LE-4-2.0/usr/local/share/geiser/guile/geiser/completion.scm.go
;;; compiling /usr/local/share/geiser/guile/geiser/xref.scm
;;; compiling /usr/local/share/geiser/guile/geiser/doc.scm
;;; WARNING: compilation of /usr/local/share/geiser/guile/geiser/doc.scm failed:
;;; ERROR: In procedure scm_hash_fn_create_handle_x: Wrong type
argument in position 1 (expecting hash-table): #f
;;; compiled /home/dsmith/.cache/guile/ccache/2.0-LE-4-2.0/usr/local/share/geiser/guile/geiser/xref.scm.go
;;; compiled /home/dsmith/.cache/guile/ccache/2.0-LE-4-2.0/usr/local/share/geiser/guile/geiser/emacs.scm.go
$1 = done

The message wasn't that helpful in locating the problem, so I tried
compiling the file directly:

wrote `/home/dsmith/.cache/guile/ccache/2.0-LE-4-2.0/home/dsmith/src/mainline/scheme/guile/geiser/completion.scm.go'
Backtrace:
In ice-9/boot-9.scm:
 170: 19 [catch #t #<catch-closure 8986e00> ...]
In unknown file:
   ?: 18 [catch-closure]
In ice-9/boot-9.scm:
  62: 17 [call-with-prompt prompt0 ...]
In ice-9/eval.scm:
 389: 16 [eval # #]
In /usr/local/bin/guild:
  68: 15 [main ("/usr/local/bin/guild" "compile" "-L" ...)]
In srfi/srfi-1.scm:
 619: 14 [for-each #<procedure 8a1ea80 at scripts/compile.scm:171:14 (file)> #]
In scripts/compile.scm:
 174: 13 [#<procedure 8a1ea80 at scripts/compile.scm:171:14 (file)>
"geiser/doc.scm"]
In system/base/compile.scm:
 148: 12 [compile-file "geiser/doc.scm" #:output-file ...]
  43: 11 [call-once #<procedure 8a1e920 at system/base/compile.scm:56:5 ()>]
In ice-9/boot-9.scm:
 184: 10 [with-throw-handler #t ...]
In system/base/compile.scm:
  59: 9 [#<procedure 8a1e900 at system/base/compile.scm:58:9 ()>]
 151: 8 [#<procedure 8a1e940 at system/base/compile.scm:149:8 (port)>
#<input-output:
/home/dsmith/.cache/guile/ccache/2.0-LE-4-2.0/home/dsmith/src/mainline/scheme/guile/geiser/doc.scm.go.M4UXyy
41>]
 200: 7 [read-and-compile #<input: geiser/doc.scm 40> #:from ...]
 232: 6 [compile # # # ...]
 178: 5 [lp # # # ...]
In language/tree-il/compile-glil.scm:
  64: 4 [compile-glil # # #]
In language/tree-il/analyze.scm:
 536: 3 [analyze-lexicals #]
 394: 2 [allocate! # #f 0]
In unknown file:
   ?: 1 [hashq-set! #f # #]
In ice-9/boot-9.scm:
 119: 0 [#<procedure 89da0a0 at ice-9/boot-9.scm:110:6 (thrown-k .
args)> wrong-type-arg ...]

ice-9/boot-9.scm:119:20: In procedure #<procedure 89da0a0 at
ice-9/boot-9.scm:110:6 (thrown-k . args)>:
ice-9/boot-9.scm:119:20: In procedure scm_hash_fn_create_handle_x:
Wrong type argument in position 1 (expecting hash-table): #f

That looks more like a problem with guile than geiser so I did a
bisect from the 2.0.2 release:

40be30c97459e1baf8a9997c1c116a67f153cfef is the first bad commit
commit 40be30c97459e1baf8a9997c1c116a67f153cfef
Author: Andy Wingo <[email-masked]>
Date:   Tue Sep 27 23:21:53 2011 +0200

    peval: more effective binding pruning

    * module/language/tree-il/optimize.scm (peval): Factor prune-bindings
      out of `let' and company.  Have it process unreferenced bindings in
      effect context instead of always residualizing non-constant
      expressions.

:040000 040000 ba7e3a49bef54cbb529f07970219f5a2b16a3036
74128c8f9e22b846ddcf9d7f4e9e7dd8b77f4cbf M      module
:040000 040000 10e88d61baaf6072fc4051c8f6530ad24b4baaa3
c513a2d03b1b8308ffb4915517fe3b7994b6e88e M      test-suite
bisect run success