tailrecursion / boot

A Clojure build tool
Eclipse Public License 1.0
111 stars 18 forks source link

Stack Overflow when using pprint #40

Open jeremyheiler opened 9 years ago

jeremyheiler commented 9 years ago

There is no error when the call to pprint is removed.

#!/usr/bin/env boot
#tailrecursion.boot.core/version "2.5.1"

(require '[clojure.pprint :refer [pprint]])

(defn -main [& args]
  (pprint {:a 1 :b 2 :c 3})
  (System/exit 0))
boot-pprint:$ boot :v
{:cclojure.lang.Compiler$CompilerException: java.lang.StackOverflowError [...]
 at clojure.lang.Compiler.load (Compiler.java:7142)
    clojure.lang.Compiler.loadFile (Compiler.java:7086)
    clojure.lang.RT$3.invoke (RT.java:318)
    tailrecursion.boot$_main.doInvoke (boot.clj:117)
    clojure.lang.RestFn.invoke (RestFn.java:467)
    clojure.lang.Var.invoke (Var.java:394)
    clojure.lang.AFn.applyToHelper (AFn.java:165)
    clojure.lang.Var.applyTo (Var.java:700)
    clojure.core$apply.invoke (core.clj:630)
    tailrecursion.boot.loader$_main.doInvoke (loader.clj:190)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    tailrecursion.boot.loader.main (:-1)
Caused by: java.lang.StackOverflowError: null
 at clojure.lang.AFn.applyToHelper (AFn.java:148)
    clojure.lang.RestFn.applyTo (RestFn.java:132)
    clojure.lang.Ref.alter (Ref.java:171)
    clojure.core$alter.doInvoke (core.clj:2316)
    clojure.lang.RestFn.invoke (RestFn.java:464)
    clojure.pprint$set_field.invoke (column_writer.clj:29)
    clojure.pprint$column_writer$fn__7421$fn__7425.invoke (column_writer.clj:73)
    clojure.lang.AFn.call (AFn.java:18)
    clojure.lang.LockingTransaction.runInTransaction (LockingTransaction.java:235)
    clojure.pprint$column_writer$fn__7421.invoke (column_writer.clj:72)
    clojure.pprint.proxy$java.io.Writer$IDeref$e595a7c1.write (:-1)
micha commented 9 years ago

This is a really weird problem. If you have any idea what could cause pprint to do this I'm all ears!