Skip to content

[lldb-dap] Revisit runInTerminal process communication #147792

Open
@ashgti

Description

@ashgti

When using runInTerminal, lldb-dap uses a fifo to communicate between the lldb-dap process and the launched process.

This communication is flaky on some platforms, for example on arm CI hosts we disable this test and I've seen this be unstable in some cases as well.

Additionally, we've got some implementation quirks like the fact we leak std::future objects when a timeout occurs:

// Indeed this is a leak, but it's intentional. "future" obj destructor
// will block on waiting for the worker thread to join. And the worker
// thread might be stuck in blocking I/O. Intentionally leaking the obj
// as a hack to avoid blocking main thread, and adding annotation to
// supress static code inspection warnings
// coverity[leaked_storage]
return createStringError(inconvertibleErrorCode(),

I think it might be worth revisiting this approach, for example we could use a socket instead of a fifo.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions