[NREPL-16] nrepl.middleware.interruptible_eval/interruptible_eval raises a stack inconsistence Exception if the call to clojure.main/repl fails Created: 12/Apr/12 Updated: 20/Apr/12 Resolved: 16/Apr/12
|Reporter:||Alexander Yakushev||Assignee:||Chas Emerick|
clojure 1.4.0-beta5, Android
If the call to clojure.main/repl in `evaluate' raises an exception before the :init part gets evaluated (so the expression `(push-thread-bindings @bindings)' is executed) then nREPL crashes with the following exception:
java.lang.IllegalStateException: Pop without matching push
It happens because after the underlining exception in clojure.main/repl is caught by the try block in `evaluate', the `finally' black calls (pop-thread-bindings) which were not actually "pushed".
|Comment by Chas Emerick [ 16/Apr/12 5:34 PM ]|
Fixed in 0.2.0-beta6. Please give it a try and see how it works on Android.
|Comment by Alexander Yakushev [ 20/Apr/12 1:40 PM ]|
It is OK now. OK in a sense that if something wrong happens inside the clojure.main/repl function then the stacktrace points there after the application dies.