#1152537 lldb-22: SymbolLocatorDebuginfod download failure aborts the host lldb process (CachedFileStream was not committed)

Package:
lldb-22
Source:
lldb-22
Description:
Next generation, high-performance debugger
Submitter:
LiRvs-Miria
Date:
2026-10-30 10:05:02 UTC
Severity:
normal
Tags:
#1152537#5
Date:
2026-10-30 10:02:25 UTC
From:
To:
Dear Maintainer,

lldb aborts (the host lldb process itself dies with SIGABRT) when the
SymbolLocatorDebuginfod plugin fails to download an artifact — server
slow, unreachable, or transfer timeout. On the package default
configuration this makes lldb unusable for any binary without local
debug info but with a valid build-id, and each such session first
appears to hang for ~90 s (default debuginfod timeout).

Reproducer (no setup needed; the package default for
plugin.symbol-locator.debuginfod.server-urls is
https://debuginfod.debian.net/):

  $ lldb -b -o run -- /bin/true
  # ~90 s pause, then:
  LLVM ERROR: CachedFileStream was not committed.
  PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ ...
  LLVM ERROR: CachedFileStream was not committed.
  Aborted

Mechanism: the download-failure path leaves a llvm::CachedFileStream
un-committed; llvm/include/llvm/Support/Caching.h:55 then calls
report_fatal_error("CachedFileStream was not committed.") from its
destructor, inside a liblldb thread-pool task, aborting the whole
debugger instead of only giving up on the lookup. Release/stripped
binaries (no local debug info, valid build-id) hit this on every
default-config session.

Fixed upstream after this version:

- issue: https://github.com/llvm/llvm-project/issues/184728
  (closed as completed 2026-10-16; #222325 closed as duplicate)
- fix: https://github.com/llvm/llvm-project/pull/232038
  ("[debuginfod] Abort cached file stream if request fails")
- backported to release/23.x: https://github.com/llvm/llvm-project/pull/232693
- not present in 22.1.8 (reproduced here) nor in the release/22.x
  branch as of 2026-10-30.

Workaround (verified stable, 3/3 runs each):

  settings set plugin.symbol-locator.debuginfod.timeout 1

or, to skip the lookup entirely:

  settings set plugin.symbol-locator.debuginfod.server-urls ""

Note: DEBUGINFOD_TIMEOUT=1 was NOT sufficient in testing (still
aborted, only faster), and symbols.enable-lldb-index-cache is
unrelated (default false).

Please consider backporting the upstream fix to llvm-toolchain-22 for
a Debian 13 (trixie) point update.

Full unsymbolized crash backtrace (liblldb thread-pool frames +
report_fatal_error) and an LLDB diagnostics bundle (/tmp/diagnostics-*)
are available on request.