nvim-dap-ruby icon indicating copy to clipboard operation
nvim-dap-ruby copied to clipboard

Backtrace when trying to run spec for the current line

Open timofurrer opened this issue 2 years ago • 2 comments

Disclaimer: I'm not ruby expert 🙈

My nvim-dap-ruby setup generally works - verified using some very dummy project. However, with a larger code base (GitLab rails in this case), which takes several seconds to spawn the rspec the following happens:

Ruby REPL: You can run any Ruby expression here.
Note that output to the STDOUT/ERR printed on the TERMINAL.
[experimental]
  `,COMMAND` runs `COMMAND` debug command (ex: `,info`).
  `,help` to list all debug commands.

Run options: include {:focus=>true, :locations=>{"./ee/spec/services/clusters/agent_tokens/create_service_audit_log_spec.rb"=>[27]}}

[["/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server_dap.rb:215:in `write'""/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server_dap.rb:215:in `write'",,

  "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server_dap.rb:215:in `send'","/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server_dap.rb:215:in `send'",
 
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server_dap.rb:239:in `send_event'","/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server_dap.rb:239:in `send_event'",
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server_dap.rb:463:in `ensure in process'",
 
"/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server_dap.rb:463:in `process'",
  "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server.rb:73:in `block (3 levels) in activate'",
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server.rb:271:in `setup_interrupt'",
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server_dap.rb:463:in `process'""/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server.rb:71:in `block (2 levels) in activate'",,
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server.rb:34:in `accept'",
 
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server.rb:421:in `accept'",
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server.rb:49:in `block in activate'""/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server.rb:73:in `block (3 levels) in activate'"],

 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server.rb:271:in `setup_interrupt'",
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server.rb:71:in `block (2 levels) in activate'",
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server.rb:34:in `accept'",
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server.rb:421:in `accept'",
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server.rb:49:in `block in activate'"]
["/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server_dap.rb:215:in `write'"[,"/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server_dap.rb:215:in `write'"
 ,"/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server_dap.rb:215:in `send'",
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server_dap.rb:215:in `send'"
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server_dap.rb:239:in `send_event'",
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server_dap.rb:463:in `process'",
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server.rb:73:in `block (3 levels) in activate'",
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server.rb:271:in `setup_interrupt'",
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server.rb:71:in `block (2 levels) in activate'",
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server.rb:34:in `accept'",
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server.rb:421:in `accept'",
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server.rb:49:in `block in activate'"]

["/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server_dap.rb:215:in `write'"
,

 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server_dap.rb:215:in `send'",
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server_dap.rb:239:in `send_event'",
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server_dap.rb:463:in `process'",
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server.rb:73:in `block (3 levels) in activate'",
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server.rb:271:in `setup_interrupt'",
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server.rb:71:in `block (2 levels) in activate'",
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server.rb:34:in `accept'",
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server.rb:421:in `accept'",
 "/Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server.rb:49:in `block in activate'"]


An error occurred in a `before(:suite)` hook.
Failure/Error: sock.write "Content-Length: #{str.bytesize}\r\n\r\n#{str}"

IOError:
  closed stream
# /Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server_dap.rb:215:in `write'
# /Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server_dap.rb:215:in `send'
# /Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server_dap.rb:241:in `send_event'
# /Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/server_dap.rb:487:in `event'
# /Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/session.rb:1725:in `on_load'
# /Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/session.rb:270:in `process_event'
# /Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/session.rb:235:in `session_server_main'
# /Users/timo/.asdf/installs/ruby/3.0.5/lib/ruby/gems/3.0.0/gems/debug-1.7.1/lib/debug/session.rb:197:in `block in activate'
# 
#   Showing full backtrace because every line was filtered out.
#   See docs for RSpec::Configuration#backtrace_exclusion_patterns and
#   RSpec::Configuration#backtrace_inclusion_patterns for more information.



Finished in 1.83 seconds (files took 18.84 seconds to load)
0 examples, 0 failures, 1 error occurred outside of examples

What's going wrong here and how can I fix it?

Is this because of this waiting configuration:

https://github.com/suketa/nvim-dap-ruby/blob/0a18182c6e5ee62b690b0c6ace155e4bbc4cd37f/lua/dap-ruby.lua#L168

... which would interrupt the session after a second?

timofurrer avatar Feb 19 '23 17:02 timofurrer

I'm not sure, but...

nvim-dap-ruby invokes rdbg process which run your spec and try to connect to rdbg process after waiting milliseconds.

But, nvim-dap-ruby might fail to connect the rdbg process because the larger code base takes more time to finish starting process.

It might work if waiting is larger.

I don't know smarter way to wait rdbg process started.

suketa avatar Feb 25 '23 07:02 suketa

It might work if waiting is larger.

What do you think about making that waiting value configurable on a per workspace basis?

timofurrer avatar Feb 26 '23 09:02 timofurrer