undoio / delve

Fork of go-delve debugger with UndoDB support.
MIT License
5 stars 0 forks source link

Assertion failure: m_pass_signals.has_value() in udbserver startup #28

Closed gareth-rees closed 3 years ago

gareth-rees commented 3 years ago

Here's a typical case:

$ go run scripts/make.go test -v -r TestCheckpoints -s terminal -b undo
=== RUN   TestCheckpoints
live-record: Maximum event log size is 1G
Hello, World!
live-record: Saving to '/tmp/undo927159640'...
live-record: Termination recording written to /tmp/undo927159640
live-record: Detaching...
6.6.0-dev.03f01cf48c99-dirty udbserver
using inferred keyfile: /home/grees/core/release-x64/key
Listening on port 40507
Connection established
**************************************************************
Assertion failure (ignored): m_pass_signals.has_value()
Additional information:  
Location: src/apps/udbserver/server.cpp:4225:handle_undodb_command [21973:21973]
**************************************************************
--- PASS: TestCheckpoints (1.97s)

This doesn't cause any test failures but indicates that something's wrong with Delve's use of the GDB serial protocol or udbserver's implementation of it.

udbserver is expecting a QPassSignals command to occur before any reverse-execution or time-travel operation: the assertion failure indicates that this didn't happen, and so udbserver uses a default set of passed signals. By contrast, gdbserver does not expect a QPassSignals command, and does not use a default set of passed signals (all signals stop the debuggee). So I think this is a bug in udbserver.

gareth-rees commented 3 years ago

Closed as this needs to be fixed in the core repository, not here. See Undo/core#18934.