dape icon indicating copy to clipboard operation
dape copied to clipboard

Timeout for Regal debugger

Open hochata opened this issue 1 year ago • 3 comments

Hi! Thanks for this package, it is incredible!

I tried to get Regal debugger to work but I can't get past the initialization. The debugger is not very documented so I apologize if the error is not with Dape.

Sample code file

package rules.examples

import rego.v1

id := "basic_rule"

Dape config

M-x dape RET launch command-cwd dape-cwd command "regal" command-args ("debug" "--verbose") :type "opa-debug" :command "eval" :query "id"

Events buffer

[jsonrpc] e[20:10:05.392] --> initialize[1] {"type":"request","seq":1,"command":"initialize","arguments":{"clientID":"dape","adapterID":"opa-debug","pathFormat":"path","linesStartAt1":true,"columnsStartAt1":true,"supportsRunInTerminalRequest":true,"supportsProgressReporting":true,"supportsStartDebuggingRequest":true}}
[jsonrpc] i[20:10:15.398] [1] timed-out request 'initialize'
[jsonrpc] e[20:10:15.400] --> disconnect[2] {"type":"request","seq":2,"command":"disconnect","arguments":{"restart":false}}
[jsonrpc] D[20:10:15.410] Connection state change: `finished
'

----------b---y---e---b---y---e----------

Connection output

time="2024-09-23T20:10:05-06:00" level=debug msg="Waiting for message..."
time="2024-09-23T20:10:05-06:00" level=debug msg="Received *dap.InitializeRequest\n{\"seq\":1,\"type\":\"request\",\"command\":\"initialize\",\"arguments\":{\"clientID\":\"dape\",\"adapterID\":\"opa-debug\",\"linesStartAt1\":true,\"columnsStartAt1\":true,\"pathFormat\":\"path\",\"supportsRunInTerminalRequest\":true,\"supportsProgressReporting\":true,\"supportsStartDebuggingRequest\":true}}"
time="2024-09-23T20:10:05-06:00" level=info msg="Initializing: {\"clientID\":\"dape\",\"adapterID\":\"opa-debug\",\"linesStartAt1\":true,\"columnsStartAt1\":true,\"pathFormat\":\"path\",\"supportsRunInTerminalRequest\":true,\"supportsProgressReporting\":true,\"supportsStartDebuggingRequest\":true}"
time="2024-09-23T20:10:05-06:00" level=debug msg="Waiting for message..."
time="2024-09-23T20:10:05-06:00" level=debug msg="Sending *dap.InitializeResponse\n{\"seq\":1,\"type\":\"response\",\"request_seq\":1,\"success\":true,\"command\":\"initialize\",\"body\":{\"supportsConfigurationDoneRequest\":true,\"supportTerminateDebuggee\":true,\"supportSuspendDebuggee\":true,\"supportsTerminateRequest\":true,\"supportsCancelRequest\":true,\"supportsBreakpointLocationsRequest\":true,\"supportsSingleThreadExecutionRequests\":true}}"
Content-Length: 340

{"seq":1,"type":"response","request_seq":1,"success":true,"command":"initialize","body":{"supportsConfigurationDoneRequest":true,"supportTerminateDebuggee":true,"supportSuspendDebuggee":true,"supportsTerminateRequest":true,"supportsCancelRequest":true,"supportsBreakpointLocationsRequest":true,"supportsSingleThreadExecutionRequests":true}}

time="2024-09-23T20:10:15-06:00" level=debug msg="Received *dap.DisconnectRequest\n{\"seq\":2,\"type\":\"request\",\"command\":\"disconnect\",\"arguments\":{}}"

Dape repl

* Welcome to Dape REPL! *
Available Dape commands: debug, next, continue, pause, step, out, up, down, restart, kill, disconnect, quit
Empty input will rerun last command.

* Adapter started with "regal debug --verbose" *
* Command initialize timed out after 10 seconds, the timeout period is configurable with `dape-request-timeout' *
Initialize failed due to: Request timeout
* Adapter connection shutdown without successfully initializing *
Configuration:
  modes nil
  command-cwd "<project/root>"
  ensure (lambda (config) (unless (plist-get config 'command) (user-error "Missing `command' property")))
  :request "launch"
  command "regal"
  command-args ("debug" "--verbose")
  :type "opa-debug"
  :command "eval"
  :query "id"
time="2024-09-23T20:10:05-06:00" level=debug msg="Waiting for message..."
time="2024-09-23T20:10:05-06:00" level=debug msg="Received *dap.InitializeRequest\n{\"seq\":1,\"type\":\"request\",\"command\":\"initialize\",\"arguments\":{\"clientID\":\"dape\",\"adapterID\":\"opa-debug\",\"linesStartAt1\":true,\"columnsStartAt1\":true,\"pathFormat\":\"path\",\"supportsRunInTerminalRequest\":true,\"supportsProgressReporting\":true,\"supportsStartDebuggingRequest\":true}}"
time="2024-09-23T20:10:05-06:00" level=info msg="Initializing: {\"clientID\":\"dape\",\"adapterID\":\"opa-debug\",\"linesStartAt1\":true,\"columnsStartAt1\":true,\"pathFormat\":\"path\",\"supportsRunInTerminalRequest\":true,\"supportsProgressReporting\":true,\"supportsStartDebuggingRequest\":true}"
time="2024-09-23T20:10:05-06:00" level=debug msg="Waiting for message..."
time="2024-09-23T20:10:05-06:00" level=debug msg="Sending *dap.InitializeResponse\n{\"seq\":1,\"type\":\"response\",\"request_seq\":1,\"success\":true,\"command\":\"initialize\",\"body\":{\"supportsConfigurationDoneRequest\":true,\"supportTerminateDebuggee\":true,\"supportSuspendDebuggee\":true,\"supportsTerminateRequest\":true,\"supportsCancelRequest\":true,\"supportsBreakpointLocationsRequest\":true,\"supportsSingleThreadExecutionRequests\":true}}"
Content-Length: 340

{"seq":1,"type":"response","request_seq":1,"success":true,"command":"initialize","body":{"supportsConfigurationDoneRequest":true,"supportTerminateDebuggee":true,"supportSuspendDebuggee":true,"supportsTerminateRequest":true,"supportsCancelRequest":true,"supportsBreakpointLocationsRequest":true,"supportsSingleThreadExecutionRequests":true}}

time="2024-09-23T20:10:15-06:00" level=debug msg="Received *dap.DisconnectRequest\n{\"seq\":2,\"type\":\"request\",\"command\":\"disconnect\",\"arguments\":{}}"
> 

So I think the server is returning the initialization response, but for some reason Dape doesn't received it, and the connection times out. Any help is welcomed!

hochata avatar Sep 24 '24 02:09 hochata

Hey! I got the following "working", seams like regals stdout com breaks jsonrpc parsing.

(add-to-list 'dape-configs
             '(regal
               command "regal"
               command-args ("debug" "--server" "--address" "127.0.0.1::autoport")
               port :autoport
               :bundlePaths (lambda () (vector (dape-command-cwd)))
               :command "eval"
               :query "data"
               :stopOnEntry t
               :stopOnFail t
               :stopOnResult t
               :enablePrint t))

As I am not familiar with regal so I can't verify how well it works :)

svaante avatar Sep 24 '24 19:09 svaante

It works perfectly! Thanks a lot.

How exactly does regal break the parsing? I'll try to report it upstream.

hochata avatar Sep 24 '24 20:09 hochata

I am not really sure, but I would guess that is hat something with it echoing out received message as follows:

time="2024-09-28T13:02:54+02:00" level=info msg="Initializing: {\"clientID\":\"dape\",\"adapterID\":\"\",\"linesStartAt1\":true,\"columnsStartAt1\":true,\"pathFormat\":\"path\",\"supportsRunInTerminalRequest\":true,\"supportsProgressReporting\":true,\"supportsStartDebuggingRequest\":true}"
Content-Length: 340

{"seq":1,"type":"response","request_seq":1,"success":true,"command":"initialize","body":{"supportsConfigurationDoneRequest":true,"supportTerminateDebuggee":true,"supportSuspendDebuggee":true,"supportsTerminateRequest":true,"supportsCancelRequest":true,"supportsBreakpointLocationsRequest":true,"supportsSingleThreadExecutionRequests":true}}

svaante avatar Sep 28 '24 11:09 svaante