Hi Robert, Thanks for your reply! Very interesting. I see what you're saying. But, your code results in a OutOfMemoryError, rather than a StackOverflow.
At least, that's what I see on my machine. Are you seeing the same? Is there some way that this same concept could lead to a StackOverflow? Thanks, Kyle On Jan 18, 6:36 am, kirschkernkissen <robert.ste...@gmail.com> wrote: > Hi Kyle! > > I encountered the same problem: > > (defn stack-fail > "returns an empty lazy seq" > [l i] > (if (> i 0) > (recur (remove #{1} (concat l '(1))) (dec i)) > l)) > > (def foo (stack-fail () 1000)) > > foo > ; Evaluation aborted. > > if you call a non-lazy function (e.g. doall) on the collection from > time to time this wont happen. > > Rgds, Robert > > On 15 Jan., 00:05, mudphone <kyle...@gmail.com> wrote: > > > > > Is it possible that the Clojure core seq function can cause a stack > > overflow (since it calls itself)? > > > Or is there some other manner in which misuse of a lazy seq could > > cause this? In the stack trace below, I'm seeing repeated calls to > > "seq" in clojure core, until the stack is blown. > > > Thanks, > > Kyle > > > Exception in thread "main" java.lang.StackOverflowError > > (session_master_boot.clj:19) > > at clojure.lang.Compiler.eval(Compiler.java:4617) > > at clojure.lang.Compiler.eval(Compiler.java:4593) > > at clojure.lang.Compiler.load(Compiler.java:4931) > > at clojure.lang.Compiler.loadFile(Compiler.java:4898) > > at clojure.main$load_script__6637.invoke(main.clj:210) > > at clojure.main$init_opt__6640.invoke(main.clj:215) > > at clojure.main$initialize__6650.invoke(main.clj:243) > > at clojure.main$null_opt__6672.invoke(main.clj:268) > > at clojure.main$legacy_script__6687.invoke(main.clj:299) > > at clojure.lang.Var.invoke(Var.java:359) > > at clojure.main.legacy_script(main.java:32) > > at clojure.lang.Script.main(Script.java:20) > > Caused by: java.lang.StackOverflowError > > at clojure.core$seq__3835.invoke(core.clj:103) > > at clojure.core$concat__3960$fn__3970.invoke(core.clj:427) > > at clojure.lang.LazySeq.sval(LazySeq.java:42) > > at clojure.lang.LazySeq.seq(LazySeq.java:56) > > at clojure.lang.RT.seq(RT.java:440) > > at clojure.core$seq__3835.invoke(core.clj:103) > > at clojure.core$concat__3960$fn__3970.invoke(core.clj:427) > > at clojure.lang.LazySeq.sval(LazySeq.java:42) > > at clojure.lang.LazySeq.seq(LazySeq.java:56) > > at clojure.lang.RT.seq(RT.java:440) > > at clojure.core$seq__3835.invoke(core.clj:103) > > at clojure.core$concat__3960$fn__3970.invoke(core.clj:427) > > at clojure.lang.LazySeq.sval(LazySeq.java:42) > > at clojure.lang.LazySeq.seq(LazySeq.java:56) > > at clojure.lang.RT.seq(RT.java:440) > > at clojure.core$seq__3835.invoke(core.clj:103) > > at clojure.core$concat__3960$fn__3970.invoke(core.clj:427) > > at clojure.lang.LazySeq.sval(LazySeq.java:42) > > at clojure.lang.LazySeq.seq(LazySeq.java:56) > > at clojure.lang.RT.seq(RT.java:440)
-- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en