ReaderThreadError: wrong number of arguments (given 0, expected 1)
還沒有人認領這個 Issue。
評估
研究方向
Start with the stack trace at debug/server_dap.rb:504 and follow the greeting and connection flow through debug/server.rb:156 and debug/server.rb:54-56. Reproduce with Ruby 3.3.6, debug 1.9.2, and the nested-breakpoint scenario if possible, then verify that continuing or disconnecting no longer leaves the debugger or Rails request hung and does not emit the ReaderThreadError.
由索引模型根據 Issue 內容生成。
描述
Your environment
ruby -v: 3.3.6rdbg -v: 1.9.2- Inside docker (docker image
ruby:3.3.6-slim-bookworm@sha256:7a89be75c6768a888f70c90f4626366de90909c4e4d62729775ea3b64672547cto be exact) - Process started like:
bundle exec rdbg -O -n --session-name='web' -c -- bin/rails server -b 0.0.0.0 -p 3000RUBY_DEBUG_SOCK_DIR=/app/tmp(Rails root being/appinside container,/app/tmpis a volume mounted into container so socket can be attached to from outside container)
Describe the bug
Quite often during the course of debugging the debugger process seems to becomes in a paused state but unable to display the current thread or breakpoint. Rails requests hang even if disconnecting from the remote debugger (VSCode connecting via a socket).
After that point the main process becomes unresponsive and the only way to continue is to restart the parent process (which in our case means restarting the docker container).
To Reproduce
We have seen this arise sporadically. The following is one way we've been able to reproduce it but we have seen it occur even when avoiding the below:
-
When paused at a breakpoint, calling another method manually (or in a watch) which has its own breakpoints set will cause execution to run to and pause at the nested breakpoint, but continuing from there will break the debugger.
class Foo def a puts "hello" # BP 1 <= active 1 + 1 end def b 42 # BP 2 end end Foo.new.aGiven the following file with breakpoints set above, when stopped at
BP 1, callingbwill re-break atBP 2, but continuing from there seems to break the debugger and leave some thread in a hung state.
Again, this is just one cause but we have been able to reproduce it at times without any manual execution of methods with BPs. However, we do not have a reproduction case for this.
Expected behavior
The debugger doesn't hang
Additional context
When this is encountered, I disconnected VSCode's debugger and manually attached to the same debugger instance via rdbg -A socket. When doing so the debugger output shows:
root@b032c5a1c83b:/app> rdbg -A tmp/rdbg-7-web
(unknown) "Content-Length: 154\r\n"
(unknown) "\r\n"
(unknown) "{\"type\":\"event\",\"event\":\"output\",\"body\":{\"category\":\"console\",\"output\":\"DEBUGGER (client): Connected. PID:7, $0:bin/rails, session_name:web\\n\"},\"seq\":434}"
root@b032c5a1c83b:/app> # ^ exits
The application logs show:
DEBUGGER: Connected.
DEBUGGER: ReaderThreadError: wrong number of arguments (given 0, expected 1)
["/usr/local/lib/ruby/gems/3.3.0/gems/debug-1.9.2/lib/debug/server_dap.rb:504:in `puts'",
"/usr/local/lib/ruby/gems/3.3.0/gems/debug-1.9.2/lib/debug/server.rb:156:in `greeting'",
"/usr/local/lib/ruby/gems/3.3.0/gems/debug-1.9.2/lib/debug/server.rb:56:in `block (3 levels) in activate'",
"/usr/local/lib/ruby/gems/3.3.0/gems/debug-1.9.2/lib/debug/server.rb:54:in `synchronize'",
"/usr/local/lib/ruby/gems/3.3.0/gems/debug-1.9.2/lib/debug/server.rb:54:in `block (2 levels) in activate'",
"/usr/local/lib/ruby/gems/3.3.0/gems/debug-1.9.2/lib/debug/server.rb:506:in `block in accept'",
"/usr/local/lib/ruby/3.3.0/socket.rb:815:in `block (2 levels) in accept_loop'",
"/usr/local/lib/ruby/3.3.0/socket.rb:812:in `each'",
"/usr/local/lib/ruby/3.3.0/socket.rb:812:in `block in accept_loop'",
"<internal:kernel>:187:in `loop'",
"/usr/local/lib/ruby/3.3.0/socket.rb:810:in `accept_loop'",
"/usr/local/lib/ruby/3.3.0/socket.rb:1170:in `block in unix_server_loop'",
"/usr/local/lib/ruby/3.3.0/socket.rb:1124:in `unix_server_socket'",
"/usr/local/lib/ruby/3.3.0/socket.rb:1169:in `unix_server_loop'",
"/usr/local/lib/ruby/gems/3.3.0/gems/debug-1.9.2/lib/debug/server.rb:502:in `accept'",
"/usr/local/lib/ruby/gems/3.3.0/gems/debug-1.9.2/lib/debug/server.rb:49:in `block in activate'"]
DEBUGGER: Disconnected.
- 主要語言
- Ruby
- 星號
- 1.3k
- 分支
- 146
- PR 合併指標
- 30 天內沒有已合併 PR
環境準備
- 沒有 Dockerfile 或 Docker Compose 檔案
- 有 Pull Request 範本
- 閱讀貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
ruby/debug 的其他 Issue
-
難度 3/5 1-2 天 新手友好度 68/100
-
Support exceptionOptions in setExceptionBreakpoints to catch arbitrary exception classes via DAP可能已有人在做 @rira100000000 於 63 天前認領。 未關閉
難度 4/5 3-5 天 新手友好度 55/100
-
難度 3/5 1-2 天 新手友好度 45/100
-
Missing DAP OutputEvents for debuggee stdout/stderr可能已有人在做 @vitallium 於 284 天前認領。 未關閉
難度 4/5 3-5 天 新手友好度 52/100
-
難度 4/5 3-5 天 新手友好度 35/100
相似的 Issue
-
難度 2/5 1-3 小時 新手友好度 74/100
rubys/roundhouse#571 ·
維護者通常 1 天內回覆
-
area/web interface
難度 2/5 1-3 小時 新手友好度 78/100
mastodon/mastodon#40924 · 1 則留言 ·
維護者通常 1 天內回覆
-
area: cli enhancement
難度 2/5 1-3 小時 新手友好度 78/100
維護者通常 1 天內回覆
-
mail processing verified
難度 2/5 1-3 小時 新手友好度 88/100
維護者通常 7 天內回覆
-
L: github:actions L: php:composer
難度 2/5 1-3 小時 新手友好度 88/100
dependabot/dependabot-core#16493 ·
維護者通常 1 天內回覆