Skip to content

Double-slash typo in editor causes StringIndexOutOfBoundsException #3857

@metayan

Description

@metayan

CIDER 1.21.0-snapshot
nREPL 1.5.2
Clojure 1.12.4
Java 25.0.1+8-27

To trigger the error, it's enough to write something like this:

user//what

The two slashes do the magic.
Yes, it is "bad user input", caused by clumsy fingers or some other problem between chair and keyboard, but this seems like an overly drastic way of handling it (and the error is usually signalled twice):

With Emacs 30.2 on macOS 10.15.7

  This is a CIDER middleware error.
  It may be a due to a bug, or perhaps simply to bad user input.
  If you believe it's a bug, please submit an issue report via `M-x cider-report-bug`.

  If these stacktraces are occurring frequently, consider using the
  button(s) below to suppress these types of errors for the duration of
  your current CIDER session. The stacktrace buffer will still be
  generated, but it will "pop under" your current buffer instead of
  "popping over". The button toggles this behavior.

 Suppress eldoc-error 


1. Unhandled java.lang.StringIndexOutOfBoundsException
   Index 0 out of bounds for length 0
        Preconditions.java:   55  jdk.internal.util.Preconditions$1/apply
        Preconditions.java:   52  jdk.internal.util.Preconditions$1/apply
        Preconditions.java:  213  jdk.internal.util.Preconditions$4/apply
        Preconditions.java:  210  jdk.internal.util.Preconditions$4/apply
        Preconditions.java:   98  jdk.internal.util.Preconditions/outOfBounds
        Preconditions.java:  106  jdk.internal.util.Preconditions/outOfBoundsCheckIndex
        Preconditions.java:  302  jdk.internal.util.Preconditions/checkIndex
               String.java: 4904  java.lang.String/checkIndex
         StringLatin1.java:   45  java.lang.StringLatin1/charAt
               String.java: 1624  java.lang.String/charAt
             Compiler.java: 8023  clojure.lang.Compiler/maybeResolveIn
                  core.clj: 4396  clojure.core/ns-resolve
                  core.clj: 4385  clojure.core/ns-resolve
                  core.clj: 4385  clojure.core/ns-resolve
                  meta.clj:  138  orchard.meta/resolve-munged-printed-var
                  meta.clj:  122  orchard.meta/resolve-munged-printed-var
                  info.clj:   67  orchard.info/clj-meta
                  info.clj:   53  orchard.info/clj-meta
                  info.clj:  152  orchard.info/info*
Occasionally a deep stacktrace
1. Unhandled java.lang.StringIndexOutOfBoundsException
   Index 0 out of bounds for length 0
        Preconditions.java:   55  jdk.internal.util.Preconditions$1/apply
        Preconditions.java:   52  jdk.internal.util.Preconditions$1/apply
        Preconditions.java:  213  jdk.internal.util.Preconditions$4/apply
        Preconditions.java:  210  jdk.internal.util.Preconditions$4/apply
        Preconditions.java:   98  jdk.internal.util.Preconditions/outOfBounds
        Preconditions.java:  106  jdk.internal.util.Preconditions/outOfBoundsCheckIndex
        Preconditions.java:  302  jdk.internal.util.Preconditions/checkIndex
               String.java: 4904  java.lang.String/checkIndex
         StringLatin1.java:   45  java.lang.StringLatin1/charAt
               String.java: 1624  java.lang.String/charAt
             Compiler.java: 8023  clojure.lang.Compiler/maybeResolveIn
                  core.clj: 4396  clojure.core/ns-resolve
                  core.clj: 4385  clojure.core/ns-resolve
                  core.clj: 4385  clojure.core/ns-resolve
                  meta.clj:  138  orchard.meta/resolve-munged-printed-var
                  meta.clj:  122  orchard.meta/resolve-munged-printed-var
                  info.clj:   67  orchard.info/clj-meta
                  info.clj:   53  orchard.info/clj-meta
                  info.clj:  152  orchard.info/info*
                  info.clj:  137  orchard.info/info*
                  info.clj:  145  cider.nrepl.middleware.info/info
                  info.clj:   99  cider.nrepl.middleware.info/info
                  info.clj:  156  cider.nrepl.middleware.info/eldoc-reply
                  info.clj:  154  cider.nrepl.middleware.info/eldoc-reply
        error_handling.clj:  140  cider.nrepl.middleware.util.error-handling/eval5948/fn
              MultiFn.java:  234  clojure.lang.MultiFn/invoke
                  info.clj:  170  cider.nrepl.middleware.info/handle-info
                  info.clj:  169  cider.nrepl.middleware.info/handle-info
                  Var.java:  390  clojure.lang.Var/invoke
                 nrepl.clj:  279  cider.nrepl/wrap-info/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
                 nrepl.clj:  189  cider.nrepl/wrap-complete/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
                 nrepl.clj:  666  cider.nrepl/wrap-resource/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
                 nrepl.clj:  552  cider.nrepl/wrap-ns/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
                 nrepl.clj:  780  cider.nrepl/wrap-version/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
                 nrepl.clj:  620  cider.nrepl/wrap-refresh/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
            completion.clj:   52  nrepl.middleware.completion/wrap-completion/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
                 nrepl.clj:  167  cider.nrepl/wrap-slurp/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
                 nrepl.clj:  645  cider.nrepl/wrap-reload/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
                 nrepl.clj:  244  cider.nrepl/wrap-format/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
        dynamic_loader.clj:   95  nrepl.middleware.dynamic-loader/wrap-dynamic-loader/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
                 nrepl.clj:  692  cider.nrepl/wrap-stacktrace/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
    interruptible_eval.clj:  183  nrepl.middleware.interruptible-eval/interruptible-eval/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
                    io.clj:   28  nrepl.middleware.io/wrap-out/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
                 nrepl.clj:  538  cider.nrepl/wrap-macroexpand/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
                 nrepl.clj:  310  cider.nrepl/wrap-inspect/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
                 nrepl.clj:  588  cider.nrepl/wrap-out/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
                 nrepl.clj:  213  cider.nrepl/wrap-debug/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
             load_file.clj:   75  nrepl.middleware.load-file/wrap-load-file/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
                 nrepl.clj:  240  cider.nrepl/wrap-enlighten/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
                 nrepl.clj:  153  cider.nrepl/wrap-content-type/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
                caught.clj:   93  nrepl.middleware.caught/wrap-caught/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
                 print.clj:  188  nrepl.middleware.print/wrap-print/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
                 nrepl.clj:  676  cider.nrepl/wrap-spec/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
                 nrepl.clj:  790  cider.nrepl/wrap-xref/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
                 nrepl.clj:  597  cider.nrepl/wrap-profile/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
                 nrepl.clj:  758  cider.nrepl/wrap-tracker/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
               session.clj:  448  nrepl.middleware.session/add-stdin/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
               session.clj:  392  nrepl.middleware.session/session/fn
            middleware.clj:   24  nrepl.middleware/wrap-conj-descriptor/fn
                server.clj:  158  nrepl.server/default-handler/fn
                server.clj:   27  nrepl.server/handle*
                server.clj:   24  nrepl.server/handle*
                server.clj:   47  nrepl.server/handle/reify
            Executors.java:  545  java.util.concurrent.Executors$RunnableAdapter/call
           FutureTask.java:  328  java.util.concurrent.FutureTask/run
   ThreadPoolExecutor.java: 1090  java.util.concurrent.ThreadPoolExecutor/runWorker
   ThreadPoolExecutor.java:  614  java.util.concurrent.ThreadPoolExecutor$Worker/run
               Thread.java: 1474  java.lang.Thread/run

With Emacs 28.2 on Devuan Linux

  This is a CIDER middleware error.
  It may be a due to a bug, or perhaps simply to bad user input.
  If you believe it's a bug, please submit an issue report via `M-x cider-report-bug`.

  If these stacktraces are occurring frequently, consider using the
  button(s) below to suppress these types of errors for the duration of
  your current CIDER session. The stacktrace buffer will still be
  generated, but it will "pop under" your current buffer instead of
  "popping over". The button toggles this behavior.

 Suppress eldoc-error

1. Unhandled java.lang.StringIndexOutOfBoundsException
   String index out of range: 0
         StringLatin1.java:   48  java.lang.StringLatin1/charAt
               String.java: 1517  java.lang.String/charAt
                  core.clj: 4396  clojure.core/ns-resolve
                  meta.clj:  138  orchard.meta/resolve-munged-printed-var
                  info.clj:   67  orchard.info/clj-meta
                  info.clj:  152  orchard.info/info*

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions