tools.nrepl

nrepl.middleware.interruptible_eval/interruptible_eval raises a stack inconsistence Exception if the call to clojure.main/repl fails

Details

  • Type: Defect Defect
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Completed
  • Affects Version/s: 0.2.0
  • Fix Version/s: None
  • Component/s: None
  • Labels:
  • Environment:
    clojure 1.4.0-beta5, Android (?)

Description

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".

Activity

Hide
Chas Emerick added a comment -

Fixed in 0.2.0-beta6. Please give it a try and see how it works on Android.

Show
Chas Emerick added a comment - Fixed in 0.2.0-beta6. Please give it a try and see how it works on Android.
Hide
Alexander Yakushev added a comment -

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.
Thanks for you help!

Show
Alexander Yakushev added a comment - 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. Thanks for you help!

People

Vote (0)
Watch (0)

Dates

  • Created:
    Updated:
    Resolved: