calva icon indicating copy to clipboard operation
calva copied to clipboard

Not seeing full output when using `with-out-str`

Open mrkam2 opened this issue 2 years ago • 9 comments

For me, when I run this test in Calva I'm only getting Hello1 printed.

(deftest print-test []
  (println (with-out-str (clojure.pprint/pprint "Hello1")))
  (println (with-out-str (clojure.pprint/pprint "Hello2"))))

And even this shorter one was producing the same output for me:

(deftest print-test []
  (println (with-out-str (clojure.pprint/pprint "Hello1")))
  (println "Hello2"))

NOTE: Today it worked, but 18 days ago it wasn't (as well as on many occasions earlier).

Discussion in Calva channel here: https://clojurians.slack.com/archives/CBE668G4R/p1659634488364589.

mrkam2 avatar Apr 25 '23 16:04 mrkam2

Was this just with tests or did it happen outside of tests?

bpringe avatar May 01 '23 01:05 bpringe

Was this just with tests or did it happen outside of tests?

I can't say for sure now, today I tried this in both test and non-test environments and it worked both times. So it is either fixed or depends on something else.

mrkam2 avatar May 05 '23 02:05 mrkam2

Well, we haven't fixed anything around this on purpose, and other changes have been quite unrelated.

Did you run it with the Calva test runner, or from the REPL?

PEZ avatar May 05 '23 05:05 PEZ

In all cases I run it either with "evaluate selection/top level form" or using one of "run current test", "run all tests from the current namespace" commands. Or it was evaluating of an expression in calva repl window. I can't say for sure now. When I reproduce it again, what additional debug info should I collect? What else should I try?

On Thu, May 4, 2023, 10:55 PM Peter Strömberg @.***> wrote:

Well, we haven't fixed anything around this on purpose, and other changes have been quite unrelated.

Did you run it with the Calva test runner, or from the REPL?

— Reply to this email directly, view it on GitHub https://github.com/BetterThanTomorrow/calva/issues/2172#issuecomment-1535733640, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGXVI5XRCPA72HY4JF6IVELXESI3JANCNFSM6AAAAAAXLISYNM . You are receiving this because you authored the thread.Message ID: @.***>

mrkam2 avatar May 05 '23 15:05 mrkam2

When I reproduce it again, what additional debug info should I collect? What else should I try?

There's a command for enabling a printout of a log with messages sent and recieved by our nREPL client:

image

I really doubt that the error should be there, but would be good to confirm.

PEZ avatar May 05 '23 19:05 PEZ

Just reproduced it again by evaluating an expression in the Calva output window (using Option-Enter in it). My expression is a one line macro call that generates two println statements but only the first one is printed in the repl window:

(override-delegate {} Connection Statement)
["type methods" Connection ()]
; Syntax error (ClassFormatError) compiling reify* at (.calva/output-window/output.calva-repl:357:1).
; Duplicate method name "isWrapperFor" with signature "(Ljava.lang.Class;)Z" in class file company/reify$eval8473$reify__8574

The second message is shown in the log but not on the screen: ["type methods" Statement ()].

Could it be a race condition between processing an event from the output stream vs. the error stream?

I tried to reproduce the original example to see if this state was persistent and this simpler version didn't reproduce the issue:

clj꞉reify꞉> 
(defn print-test []
  (println (with-out-str (clojure.pprint/pprint "Hello1")))
  (println "Hello2"))
#'reify/print-test
clj:reify꞉> 
(print-test)
"Hello1"

Hello2
nil

I then created a test and used "Run the current test" command (all in the calva output window):

(deftest print-test []
  (println (with-out-str (clojure.pprint/pprint "Hello1")))
  (println (with-out-str (clojure.pprint/pprint "Hello2"))))

I got the output window only show "Hello1" and then nothing. It appeared stuck but it wasn't, I was able to execute more commands after it and even run the test again a few times and it was printing both messages properly on subsequent attempts.

clj꞉reify꞉> 
; Running test: print-test…
"Hello1"

Maybe some other extension is messing with Calva? How can I debug this further?

Here is a complete log (of the first issue):

-> sent
{
  id: '438',
  op: 'eval',
  session: '1b26af0e-8a7b-43d0-9b24-0df0eb70335a',
  code: '(override-delegate {} Connection Statement)',
  file: '/Users/username/src/company/.calva/output-window/output.calva-repl',
  line: 357,
  column: 1,
  stdout: [Function: stdout],
  stderr: [Function: stderr],
  pprint: false
}

<- received
{
  id: '438',
  out: '["type methods" Connection ()]\n\n',
  session: '1b26af0e-8a7b-43d0-9b24-0df0eb70335a'
}

<- received
{
  id: '438',
  out: '["type methods" Statement ()]\n\n',
  session: '1b26af0e-8a7b-43d0-9b24-0df0eb70335a'
}

<- received
{
  err: 'Syntax error (ClassFormatError) compiling reify* at (.calva/output-window/output.calva-repl:357:1).\n' +
    'Duplicate method name "isWrapperFor" with signature "(Ljava.lang.Class;)Z" in class file company/reify$eval8473$reify__8574\n',
  id: '438',
  session: '1b26af0e-8a7b-43d0-9b24-0df0eb70335a'
}

<- received
{
  ex: 'class clojure.lang.Compiler$CompilerException',
  id: '438',
  'root-ex': 'class clojure.lang.Compiler$CompilerException',
  session: '1b26af0e-8a7b-43d0-9b24-0df0eb70335a',
  status: [ 'eval-error' ]
}

<- received
{
  id: '438',
  session: '1b26af0e-8a7b-43d0-9b24-0df0eb70335a',
  status: [ 'done' ]
}

-> sent
{
  op: 'stacktrace',
  id: '439',
  session: '1b26af0e-8a7b-43d0-9b24-0df0eb70335a'
}

<- received
{
  'changed-namespaces': {},
  id: '438',
  'repl-type': 'clj',
  session: '1b26af0e-8a7b-43d0-9b24-0df0eb70335a',
  status: [ 'state' ]
}

<- received
{
  class: 'clojure.lang.Compiler$CompilerException',
  column: 1,
  data: '#:clojure.error{:phase :compile-syntax-check, :line 357, :column 1, :source "/Users/username/src/company/.calva/output-window/output.calva-repl", :symbol reify*}',
  file: '/Users/username/src/company/.calva/output-window/output.calva-repl',
  'file-url': 'file:/Users/username/src/company/.calva/output-window/output.calva-repl',
  id: '439',
  line: 357,
  location: {
    'clojure.error/column': 1,
    'clojure.error/line': 357,
    'clojure.error/phase': 'compile-syntax-check',
    'clojure.error/source': '/Users/username/src/company/.calva/output-window/output.calva-repl',
    'clojure.error/symbol': 'reify*'
  },
  message: 'Syntax error compiling reify* at (/Users/username/src/company/.calva/output-window/output.calva-repl:357:1).',
  path: '.calva/output-window/output.calva-repl',
  session: '1b26af0e-8a7b-43d0-9b24-0df0eb70335a',
  stacktrace: [
    {
      class: 'clojure.lang.Compiler',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 7132,
      method: 'analyzeSeq',
      name: 'clojure.lang.Compiler/analyzeSeq',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 6806,
      method: 'analyze',
      name: 'clojure.lang.Compiler/analyze',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 7112,
      method: 'analyzeSeq',
      name: 'clojure.lang.Compiler/analyzeSeq',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 6806,
      method: 'analyze',
      name: 'clojure.lang.Compiler/analyze',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 6762,
      method: 'analyze',
      name: 'clojure.lang.Compiler/analyze',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler$BodyExpr$Parser',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 6137,
      method: 'parse',
      name: 'clojure.lang.Compiler$BodyExpr$Parser/parse',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler$LetExpr$Parser',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 6453,
      method: 'parse',
      name: 'clojure.lang.Compiler$LetExpr$Parser/parse',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 7124,
      method: 'analyzeSeq',
      name: 'clojure.lang.Compiler/analyzeSeq',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 6806,
      method: 'analyze',
      name: 'clojure.lang.Compiler/analyze',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 6762,
      method: 'analyze',
      name: 'clojure.lang.Compiler/analyze',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler$BodyExpr$Parser',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 6137,
      method: 'parse',
      name: 'clojure.lang.Compiler$BodyExpr$Parser/parse',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler$FnMethod',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 5479,
      method: 'parse',
      name: 'clojure.lang.Compiler$FnMethod/parse',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler$FnExpr',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 4041,
      method: 'parse',
      name: 'clojure.lang.Compiler$FnExpr/parse',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 7122,
      method: 'analyzeSeq',
      name: 'clojure.lang.Compiler/analyzeSeq',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 6806,
      method: 'analyze',
      name: 'clojure.lang.Compiler/analyze',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 7191,
      method: 'eval',
      name: 'clojure.lang.Compiler/eval',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 7149,
      method: 'eval',
      name: 'clojure.lang.Compiler/eval',
      type: 'java'
    },
    {
      class: 'clojure.core$eval',
      file: 'core.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/core.clj',
      flags: [Array],
      fn: 'eval',
      line: 3215,
      method: 'invokeStatic',
      name: 'clojure.core$eval/invokeStatic',
      ns: 'clojure.core',
      type: 'clj',
      var: 'clojure.core/eval'
    },
    {
      class: 'clojure.core$eval',
      file: 'core.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/core.clj',
      flags: [Array],
      fn: 'eval',
      line: 3211,
      method: 'invoke',
      name: 'clojure.core$eval/invoke',
      ns: 'clojure.core',
      type: 'clj',
      var: 'clojure.core/eval'
    },
    {
      class: 'nrepl.middleware.interruptible_eval$evaluate$fn__1265$fn__1266',
      file: 'interruptible_eval.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/interruptible_eval.clj',
      flags: [Array],
      fn: 'evaluate/fn/fn',
      line: 87,
      method: 'invoke',
      name: 'nrepl.middleware.interruptible_eval$evaluate$fn__1265$fn__1266/invoke',
      ns: 'nrepl.middleware.interruptible-eval',
      type: 'clj',
      var: 'nrepl.middleware.interruptible-eval/evaluate'
    },
    {
      class: 'clojure.lang.AFn',
      file: 'AFn.java',
      'file-url': [],
      flags: [Array],
      line: 152,
      method: 'applyToHelper',
      name: 'clojure.lang.AFn/applyToHelper',
      type: 'java'
    },
    {
      class: 'clojure.lang.AFn',
      file: 'AFn.java',
      'file-url': [],
      flags: [Array],
      line: 144,
      method: 'applyTo',
      name: 'clojure.lang.AFn/applyTo',
      type: 'java'
    },
    {
      class: 'clojure.core$apply',
      file: 'core.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/core.clj',
      flags: [Array],
      fn: 'apply',
      line: 667,
      method: 'invokeStatic',
      name: 'clojure.core$apply/invokeStatic',
      ns: 'clojure.core',
      type: 'clj',
      var: 'clojure.core/apply'
    },
    {
      class: 'clojure.core$with_bindings_STAR_',
      file: 'core.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/core.clj',
      flags: [Array],
      fn: 'with-bindings*',
      line: 1990,
      method: 'invokeStatic',
      name: 'clojure.core$with_bindings_STAR_/invokeStatic',
      ns: 'clojure.core',
      type: 'clj',
      var: 'clojure.core/with-bindings*'
    },
    {
      class: 'clojure.core$with_bindings_STAR_',
      file: 'core.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/core.clj',
      flags: [Array],
      fn: 'with-bindings*',
      line: 1990,
      method: 'doInvoke',
      name: 'clojure.core$with_bindings_STAR_/doInvoke',
      ns: 'clojure.core',
      type: 'clj',
      var: 'clojure.core/with-bindings*'
    },
    {
      class: 'clojure.lang.RestFn',
      file: 'RestFn.java',
      'file-url': [],
      flags: [Array],
      line: 425,
      method: 'invoke',
      name: 'clojure.lang.RestFn/invoke',
      type: 'java'
    },
    {
      class: 'nrepl.middleware.interruptible_eval$evaluate$fn__1265',
      file: 'interruptible_eval.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/interruptible_eval.clj',
      flags: [Array],
      fn: 'evaluate/fn',
      line: 87,
      method: 'invoke',
      name: 'nrepl.middleware.interruptible_eval$evaluate$fn__1265/invoke',
      ns: 'nrepl.middleware.interruptible-eval',
      type: 'clj',
      var: 'nrepl.middleware.interruptible-eval/evaluate'
    },
    {
      class: 'clojure.main$repl$read_eval_print__9206$fn__9209',
      file: 'main.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/main.clj',
      flags: [Array],
      fn: 'repl/read-eval-print/fn',
      line: 437,
      method: 'invoke',
      name: 'clojure.main$repl$read_eval_print__9206$fn__9209/invoke',
      ns: 'clojure.main',
      type: 'clj',
      var: 'clojure.main/repl'
    },
    {
      class: 'clojure.main$repl$read_eval_print__9206',
      file: 'main.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/main.clj',
      flags: [Array],
      fn: 'repl/read-eval-print',
      line: 437,
      method: 'invoke',
      name: 'clojure.main$repl$read_eval_print__9206/invoke',
      ns: 'clojure.main',
      type: 'clj',
      var: 'clojure.main/repl'
    },
    {
      class: 'clojure.main$repl$fn__9215',
      file: 'main.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/main.clj',
      flags: [Array],
      fn: 'repl/fn',
      line: 458,
      method: 'invoke',
      name: 'clojure.main$repl$fn__9215/invoke',
      ns: 'clojure.main',
      type: 'clj',
      var: 'clojure.main/repl'
    },
    {
      class: 'clojure.main$repl',
      file: 'main.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/main.clj',
      flags: [Array],
      fn: 'repl',
      line: 458,
      method: 'invokeStatic',
      name: 'clojure.main$repl/invokeStatic',
      ns: 'clojure.main',
      type: 'clj',
      var: 'clojure.main/repl'
    },
    {
      class: 'clojure.main$repl',
      file: 'main.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/main.clj',
      flags: [Array],
      fn: 'repl',
      line: 368,
      method: 'doInvoke',
      name: 'clojure.main$repl/doInvoke',
      ns: 'clojure.main',
      type: 'clj',
      var: 'clojure.main/repl'
    },
    {
      class: 'clojure.lang.RestFn',
      file: 'RestFn.java',
      'file-url': [],
      flags: [Array],
      line: 1523,
      method: 'invoke',
      name: 'clojure.lang.RestFn/invoke',
      type: 'java'
    },
    {
      class: 'nrepl.middleware.interruptible_eval$evaluate',
      file: 'interruptible_eval.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/interruptible_eval.clj',
      flags: [Array],
      fn: 'evaluate',
      line: 84,
      method: 'invokeStatic',
      name: 'nrepl.middleware.interruptible_eval$evaluate/invokeStatic',
      ns: 'nrepl.middleware.interruptible-eval',
      type: 'clj',
      var: 'nrepl.middleware.interruptible-eval/evaluate'
    },
    {
      class: 'nrepl.middleware.interruptible_eval$evaluate',
      file: 'interruptible_eval.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/interruptible_eval.clj',
      flags: [Array],
      fn: 'evaluate',
      line: 56,
      method: 'invoke',
      name: 'nrepl.middleware.interruptible_eval$evaluate/invoke',
      ns: 'nrepl.middleware.interruptible-eval',
      type: 'clj',
      var: 'nrepl.middleware.interruptible-eval/evaluate'
    },
    {
      class: 'nrepl.middleware.interruptible_eval$interruptible_eval$fn__1298$fn__1302',
      file: 'interruptible_eval.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/interruptible_eval.clj',
      flags: [Array],
      fn: 'interruptible-eval/fn/fn',
      line: 152,
      method: 'invoke',
      name: 'nrepl.middleware.interruptible_eval$interruptible_eval$fn__1298$fn__1302/invoke',
      ns: 'nrepl.middleware.interruptible-eval',
      type: 'clj',
      var: 'nrepl.middleware.interruptible-eval/interruptible-eval'
    },
    {
      class: 'clojure.lang.AFn',
      file: 'AFn.java',
      'file-url': [],
      flags: [Array],
      line: 22,
      method: 'run',
      name: 'clojure.lang.AFn/run',
      type: 'java'
    },
    {
      class: 'nrepl.middleware.session$session_exec$main_loop__1368$fn__1372',
      file: 'session.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/session.clj',
      flags: [Array],
      fn: 'session-exec/main-loop/fn',
      line: 218,
      method: 'invoke',
      name: 'nrepl.middleware.session$session_exec$main_loop__1368$fn__1372/invoke',
      ns: 'nrepl.middleware.session',
      type: 'clj',
      var: 'nrepl.middleware.session/session-exec'
    },
    {
      class: 'nrepl.middleware.session$session_exec$main_loop__1368',
      file: 'session.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/session.clj',
      flags: [Array],
      fn: 'session-exec/main-loop',
      line: 217,
      method: 'invoke',
      name: 'nrepl.middleware.session$session_exec$main_loop__1368/invoke',
      ns: 'nrepl.middleware.session',
      type: 'clj',
      var: 'nrepl.middleware.session/session-exec'
    },
    {
      class: 'clojure.lang.AFn',
      file: 'AFn.java',
      'file-url': [],
      flags: [Array],
      line: 22,
      method: 'run',
      name: 'clojure.lang.AFn/run',
      type: 'java'
    },
    {
      class: 'java.lang.Thread',
      file: 'Thread.java',
      'file-url': [],
      flags: [Array],
      line: 833,
      method: 'run',
      name: 'java.lang.Thread/run',
      type: 'java'
    }
  ]
}

<- received
{
  class: 'java.lang.ClassFormatError',
  id: '439',
  message: 'Duplicate method name "isWrapperFor" with signature "(Ljava.lang.Class;)Z" in class file company/reify$eval8473$reify__8574',
  session: '1b26af0e-8a7b-43d0-9b24-0df0eb70335a',
  stacktrace: [
    {
      class: 'java.lang.ClassLoader',
      file: 'ClassLoader.java',
      'file-url': [],
      flags: [Array],
      line: -2,
      method: 'defineClass1',
      name: 'java.lang.ClassLoader/defineClass1',
      type: 'java'
    },
    {
      class: 'java.lang.ClassLoader',
      file: 'ClassLoader.java',
      'file-url': [],
      flags: [Array],
      line: 1012,
      method: 'defineClass',
      name: 'java.lang.ClassLoader/defineClass',
      type: 'java'
    },
    {
      class: 'java.lang.ClassLoader',
      file: 'ClassLoader.java',
      'file-url': [],
      flags: [Array],
      line: 874,
      method: 'defineClass',
      name: 'java.lang.ClassLoader/defineClass',
      type: 'java'
    },
    {
      class: 'clojure.lang.DynamicClassLoader',
      file: 'DynamicClassLoader.java',
      'file-url': [],
      flags: [Array],
      line: 46,
      method: 'defineClass',
      name: 'clojure.lang.DynamicClassLoader/defineClass',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler$ObjExpr',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 4998,
      method: 'getCompiledClass',
      name: 'clojure.lang.Compiler$ObjExpr/getCompiledClass',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler$NewInstanceExpr',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 8105,
      method: 'build',
      name: 'clojure.lang.Compiler$NewInstanceExpr/build',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler$NewInstanceExpr$ReifyParser',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 7977,
      method: 'parse',
      name: 'clojure.lang.Compiler$NewInstanceExpr$ReifyParser/parse',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 7124,
      method: 'analyzeSeq',
      name: 'clojure.lang.Compiler/analyzeSeq',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 6806,
      method: 'analyze',
      name: 'clojure.lang.Compiler/analyze',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 7112,
      method: 'analyzeSeq',
      name: 'clojure.lang.Compiler/analyzeSeq',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 6806,
      method: 'analyze',
      name: 'clojure.lang.Compiler/analyze',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 6762,
      method: 'analyze',
      name: 'clojure.lang.Compiler/analyze',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler$BodyExpr$Parser',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 6137,
      method: 'parse',
      name: 'clojure.lang.Compiler$BodyExpr$Parser/parse',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler$LetExpr$Parser',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 6453,
      method: 'parse',
      name: 'clojure.lang.Compiler$LetExpr$Parser/parse',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 7124,
      method: 'analyzeSeq',
      name: 'clojure.lang.Compiler/analyzeSeq',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 6806,
      method: 'analyze',
      name: 'clojure.lang.Compiler/analyze',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 6762,
      method: 'analyze',
      name: 'clojure.lang.Compiler/analyze',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler$BodyExpr$Parser',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 6137,
      method: 'parse',
      name: 'clojure.lang.Compiler$BodyExpr$Parser/parse',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler$FnMethod',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 5479,
      method: 'parse',
      name: 'clojure.lang.Compiler$FnMethod/parse',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler$FnExpr',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 4041,
      method: 'parse',
      name: 'clojure.lang.Compiler$FnExpr/parse',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 7122,
      method: 'analyzeSeq',
      name: 'clojure.lang.Compiler/analyzeSeq',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 6806,
      method: 'analyze',
      name: 'clojure.lang.Compiler/analyze',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 7191,
      method: 'eval',
      name: 'clojure.lang.Compiler/eval',
      type: 'java'
    },
    {
      class: 'clojure.lang.Compiler',
      file: 'Compiler.java',
      'file-url': [],
      flags: [Array],
      line: 7149,
      method: 'eval',
      name: 'clojure.lang.Compiler/eval',
      type: 'java'
    },
    {
      class: 'clojure.core$eval',
      file: 'core.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/core.clj',
      flags: [Array],
      fn: 'eval',
      line: 3215,
      method: 'invokeStatic',
      name: 'clojure.core$eval/invokeStatic',
      ns: 'clojure.core',
      type: 'clj',
      var: 'clojure.core/eval'
    },
    {
      class: 'clojure.core$eval',
      file: 'core.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/core.clj',
      flags: [Array],
      fn: 'eval',
      line: 3211,
      method: 'invoke',
      name: 'clojure.core$eval/invoke',
      ns: 'clojure.core',
      type: 'clj',
      var: 'clojure.core/eval'
    },
    {
      class: 'nrepl.middleware.interruptible_eval$evaluate$fn__1265$fn__1266',
      file: 'interruptible_eval.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/interruptible_eval.clj',
      flags: [Array],
      fn: 'evaluate/fn/fn',
      line: 87,
      method: 'invoke',
      name: 'nrepl.middleware.interruptible_eval$evaluate$fn__1265$fn__1266/invoke',
      ns: 'nrepl.middleware.interruptible-eval',
      type: 'clj',
      var: 'nrepl.middleware.interruptible-eval/evaluate'
    },
    {
      class: 'clojure.lang.AFn',
      file: 'AFn.java',
      'file-url': [],
      flags: [Array],
      line: 152,
      method: 'applyToHelper',
      name: 'clojure.lang.AFn/applyToHelper',
      type: 'java'
    },
    {
      class: 'clojure.lang.AFn',
      file: 'AFn.java',
      'file-url': [],
      flags: [Array],
      line: 144,
      method: 'applyTo',
      name: 'clojure.lang.AFn/applyTo',
      type: 'java'
    },
    {
      class: 'clojure.core$apply',
      file: 'core.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/core.clj',
      flags: [Array],
      fn: 'apply',
      line: 667,
      method: 'invokeStatic',
      name: 'clojure.core$apply/invokeStatic',
      ns: 'clojure.core',
      type: 'clj',
      var: 'clojure.core/apply'
    },
    {
      class: 'clojure.core$with_bindings_STAR_',
      file: 'core.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/core.clj',
      flags: [Array],
      fn: 'with-bindings*',
      line: 1990,
      method: 'invokeStatic',
      name: 'clojure.core$with_bindings_STAR_/invokeStatic',
      ns: 'clojure.core',
      type: 'clj',
      var: 'clojure.core/with-bindings*'
    },
    {
      class: 'clojure.core$with_bindings_STAR_',
      file: 'core.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/core.clj',
      flags: [Array],
      fn: 'with-bindings*',
      line: 1990,
      method: 'doInvoke',
      name: 'clojure.core$with_bindings_STAR_/doInvoke',
      ns: 'clojure.core',
      type: 'clj',
      var: 'clojure.core/with-bindings*'
    },
    {
      class: 'clojure.lang.RestFn',
      file: 'RestFn.java',
      'file-url': [],
      flags: [Array],
      line: 425,
      method: 'invoke',
      name: 'clojure.lang.RestFn/invoke',
      type: 'java'
    },
    {
      class: 'nrepl.middleware.interruptible_eval$evaluate$fn__1265',
      file: 'interruptible_eval.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/interruptible_eval.clj',
      flags: [Array],
      fn: 'evaluate/fn',
      line: 87,
      method: 'invoke',
      name: 'nrepl.middleware.interruptible_eval$evaluate$fn__1265/invoke',
      ns: 'nrepl.middleware.interruptible-eval',
      type: 'clj',
      var: 'nrepl.middleware.interruptible-eval/evaluate'
    },
    {
      class: 'clojure.main$repl$read_eval_print__9206$fn__9209',
      file: 'main.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/main.clj',
      flags: [Array],
      fn: 'repl/read-eval-print/fn',
      line: 437,
      method: 'invoke',
      name: 'clojure.main$repl$read_eval_print__9206$fn__9209/invoke',
      ns: 'clojure.main',
      type: 'clj',
      var: 'clojure.main/repl'
    },
    {
      class: 'clojure.main$repl$read_eval_print__9206',
      file: 'main.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/main.clj',
      flags: [Array],
      fn: 'repl/read-eval-print',
      line: 437,
      method: 'invoke',
      name: 'clojure.main$repl$read_eval_print__9206/invoke',
      ns: 'clojure.main',
      type: 'clj',
      var: 'clojure.main/repl'
    },
    {
      class: 'clojure.main$repl$fn__9215',
      file: 'main.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/main.clj',
      flags: [Array],
      fn: 'repl/fn',
      line: 458,
      method: 'invoke',
      name: 'clojure.main$repl$fn__9215/invoke',
      ns: 'clojure.main',
      type: 'clj',
      var: 'clojure.main/repl'
    },
    {
      class: 'clojure.main$repl',
      file: 'main.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/main.clj',
      flags: [Array],
      fn: 'repl',
      line: 458,
      method: 'invokeStatic',
      name: 'clojure.main$repl/invokeStatic',
      ns: 'clojure.main',
      type: 'clj',
      var: 'clojure.main/repl'
    },
    {
      class: 'clojure.main$repl',
      file: 'main.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/main.clj',
      flags: [Array],
      fn: 'repl',
      line: 368,
      method: 'doInvoke',
      name: 'clojure.main$repl/doInvoke',
      ns: 'clojure.main',
      type: 'clj',
      var: 'clojure.main/repl'
    },
    {
      class: 'clojure.lang.RestFn',
      file: 'RestFn.java',
      'file-url': [],
      flags: [Array],
      line: 1523,
      method: 'invoke',
      name: 'clojure.lang.RestFn/invoke',
      type: 'java'
    },
    {
      class: 'nrepl.middleware.interruptible_eval$evaluate',
      file: 'interruptible_eval.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/interruptible_eval.clj',
      flags: [Array],
      fn: 'evaluate',
      line: 84,
      method: 'invokeStatic',
      name: 'nrepl.middleware.interruptible_eval$evaluate/invokeStatic',
      ns: 'nrepl.middleware.interruptible-eval',
      type: 'clj',
      var: 'nrepl.middleware.interruptible-eval/evaluate'
    },
    {
      class: 'nrepl.middleware.interruptible_eval$evaluate',
      file: 'interruptible_eval.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/interruptible_eval.clj',
      flags: [Array],
      fn: 'evaluate',
      line: 56,
      method: 'invoke',
      name: 'nrepl.middleware.interruptible_eval$evaluate/invoke',
      ns: 'nrepl.middleware.interruptible-eval',
      type: 'clj',
      var: 'nrepl.middleware.interruptible-eval/evaluate'
    },
    {
      class: 'nrepl.middleware.interruptible_eval$interruptible_eval$fn__1298$fn__1302',
      file: 'interruptible_eval.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/interruptible_eval.clj',
      flags: [Array],
      fn: 'interruptible-eval/fn/fn',
      line: 152,
      method: 'invoke',
      name: 'nrepl.middleware.interruptible_eval$interruptible_eval$fn__1298$fn__1302/invoke',
      ns: 'nrepl.middleware.interruptible-eval',
      type: 'clj',
      var: 'nrepl.middleware.interruptible-eval/interruptible-eval'
    },
    {
      class: 'clojure.lang.AFn',
      file: 'AFn.java',
      'file-url': [],
      flags: [Array],
      line: 22,
      method: 'run',
      name: 'clojure.lang.AFn/run',
      type: 'java'
    },
    {
      class: 'nrepl.middleware.session$session_exec$main_loop__1368$fn__1372',
      file: 'session.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/session.clj',
      flags: [Array],
      fn: 'session-exec/main-loop/fn',
      line: 218,
      method: 'invoke',
      name: 'nrepl.middleware.session$session_exec$main_loop__1368$fn__1372/invoke',
      ns: 'nrepl.middleware.session',
      type: 'clj',
      var: 'nrepl.middleware.session/session-exec'
    },
    {
      class: 'nrepl.middleware.session$session_exec$main_loop__1368',
      file: 'session.clj',
      'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/session.clj',
      flags: [Array],
      fn: 'session-exec/main-loop',
      line: 217,
      method: 'invoke',
      name: 'nrepl.middleware.session$session_exec$main_loop__1368/invoke',
      ns: 'nrepl.middleware.session',
      type: 'clj',
      var: 'nrepl.middleware.session/session-exec'
    },
    {
      class: 'clojure.lang.AFn',
      file: 'AFn.java',
      'file-url': [],
      flags: [Array],
      line: 22,
      method: 'run',
      name: 'clojure.lang.AFn/run',
      type: 'java'
    },
    {
      class: 'java.lang.Thread',
      file: 'Thread.java',
      'file-url': [],
      flags: [Array],
      line: 833,
      method: 'run',
      name: 'java.lang.Thread/run',
      type: 'java'
    }
  ]
}

<- received
{
  id: '439',
  session: '1b26af0e-8a7b-43d0-9b24-0df0eb70335a',
  status: [ 'done' ]
}

mrkam2 avatar May 15 '23 23:05 mrkam2

Thanks for those logs. I don't see anything telling in them.

Maybe some other extension is messing with Calva? How can I debug this further?

There's an extension bisect feature in VS Code which helps you disable extensions to find the one causing the problem.

image

bpringe avatar May 16 '23 01:05 bpringe

Do you know if it is possible to keep Calva extension? It removed Calva on its first iteration :-)

mrkam2 avatar May 16 '23 02:05 mrkam2

🤔 I haven't used this feature myself. @PEZ Do you know to answer to the above question?

bpringe avatar May 23 '23 21:05 bpringe