tracing cljsbuild error

81 views
Skip to first unread message

Murtaza Husain

unread,
May 14, 2012, 1:48:56 AM5/14/12
to clo...@googlegroups.com
Hi,

While compiling using cljsbuild I get the error below. How do I trace it back to the source file that caused this error ?

Thanks,
Murtaza

Compiling "resources/public/cljs/client.js" failed:
Exception in thread "main" java.util.concurrent.ExecutionException: java.lang.NullPointerException
    at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)
    at java.util.concurrent.FutureTask.get(FutureTask.java:111)
    at clojure.core$future_call$reify__6110.deref(core.clj:6156)
    at clojure.core$deref.invoke(core.clj:2080)
    at clojure.core$map$fn__4087.invoke(core.clj:2434)
    at clojure.lang.LazySeq.sval(LazySeq.java:42)
    at clojure.lang.LazySeq.seq(LazySeq.java:60)
    at clojure.lang.RT.seq(RT.java:473)
    at clojure.core$seq.invoke(core.clj:133)
    at clojure.core$dorun.invoke(core.clj:2725)
    at clojure.core$doall.invoke(core.clj:2741)
    at cljsbuild.util$in_threads.invoke(util.clj:31)
    at user$eval2364.invoke(NO_SOURCE_FILE:1)
    at clojure.lang.Compiler.eval(Compiler.java:6511)
    at clojure.lang.Compiler.eval(Compiler.java:6501)
    at clojure.lang.Compiler.eval(Compiler.java:6500)
    at clojure.lang.Compiler.eval(Compiler.java:6501)
    at clojure.lang.Compiler.eval(Compiler.java:6477)
    at clojure.core$eval.invoke(core.clj:2797)
    at clojure.main$eval_opt.invoke(main.clj:297)
    at clojure.main$initialize.invoke(main.clj:316)
    at clojure.main$null_opt.invoke(main.clj:349)
    at clojure.main$main.doInvoke(main.clj:427)
    at clojure.lang.RestFn.invoke(RestFn.java:421)
    at clojure.lang.Var.invoke(Var.java:419)
    at clojure.lang.AFn.applyToHelper(AFn.java:163)
    at clojure.lang.Var.applyTo(Var.java:532)
    at clojure.main.main(main.java:37)
Caused by: java.lang.NullPointerException
    at java.util.regex.Matcher.getTextLength(Matcher.java:1233)
    at java.util.regex.Matcher.reset(Matcher.java:308)
    at java.util.regex.Matcher.<init>(Matcher.java:228)
    at java.util.regex.Pattern.matcher(Pattern.java:1088)
    at clj_stacktrace.utils$re_gsub.invoke(utils.clj:6)
    at clj_stacktrace.core$clojure_ns.invoke(core.clj:14)
    at clj_stacktrace.core$parse_trace_elem.invoke(core.clj:68)
    at clojure.core$map$fn__4087.invoke(core.clj:2434)
    at clojure.lang.LazySeq.sval(LazySeq.java:42)
    at clojure.lang.LazySeq.seq(LazySeq.java:60)
    at clojure.lang.RT.seq(RT.java:473)
    at clojure.core$seq.invoke(core.clj:133)
    at clojure.core$map$fn__4087.invoke(core.clj:2426)
    at clojure.lang.LazySeq.sval(LazySeq.java:42)
    at clojure.lang.LazySeq.seq(LazySeq.java:60)
    at clojure.lang.RT.seq(RT.java:473)
    at clojure.core$seq.invoke(core.clj:133)
    at clojure.core$map$fn__4087.invoke(core.clj:2426)
    at clojure.lang.LazySeq.sval(LazySeq.java:42)
    at clojure.lang.LazySeq.seq(LazySeq.java:60)
    at clojure.lang.Cons.next(Cons.java:39)
    at clojure.lang.RT.length(RT.java:1625)
    at clojure.lang.RT.seqToArray(RT.java:1566)
    at clojure.lang.LazySeq.toArray(LazySeq.java:140)
    at clojure.lang.RT.toArray(RT.java:1544)
    at clojure.core$to_array.invoke(core.clj:326)
    at clojure.core$sort.invoke(core.clj:2699)
    at clojure.core$sort.invoke(core.clj:2696)
    at clj_stacktrace.repl$find_source_width.invoke(repl.clj:98)
    at clj_stacktrace.repl$pst_on.invoke(repl.clj:107)
    at clj_stacktrace.repl$pst_PLUS_.doInvoke(repl.clj:129)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at cljsbuild.compiler$compile_cljs.invoke(compiler.clj:71)
    at cljsbuild.compiler$run_compiler.invoke(compiler.clj:85)
    at user$eval2364$fn__2367.invoke(NO_SOURCE_FILE:1)
    at cljsbuild.util$in_threads$fn__2232$fn__2233.invoke(util.clj:31)
    at clojure.core$binding_conveyor_fn$fn__3989.invoke(core.clj:1819)
    at clojure.lang.AFn.call(AFn.java:18)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

Herwig Hochleitner

unread,
May 14, 2012, 6:36:58 AM5/14/12
to clo...@googlegroups.com
From the stacktrace and some source reading, it seems clj-stacktrace
passes null as class-name in clj-stacktrace.core/clojure-ns, which
passes it to a regex function.
That should not even be possible, because it passes the same value to
clj-stacktrace.core/clojure-code?, which would already throw, a few
lines before.
Also, the null value originates from StackTraceElement.getClassName()
which I'm not even sure is allowed to be null.

Maybe it was some funky state you got your JVM into. Can you reproduce
the error?

Herwig Hochleitner

unread,
May 14, 2012, 6:37:48 AM5/14/12
to clo...@googlegroups.com
Also, are you running the latest version of clj-stacktrace?

Murtaza Husain

unread,
May 14, 2012, 8:17:38 AM5/14/12
to clo...@googlegroups.com

Herwig thanks for your comments.

I was able to solve the problem by doing the following. I created a new source directory and changed the src path for lein-cljsbuild to the new src dir. Then I started saving one file after another to the dir. All this while I had lein cljsbuild running as auto. The instance I saved the file having faulty code to the new dir, the error stacktrace showed up in the terminal running cljsbuild.

It did solve my problem, however is there a better way to do it then the trial and error method ?

Thanks,
Murtaza
Reply all
Reply to author
Forward
0 new messages