Skip to content

qrexec-agent: avoid blocking on incomplete trigger requests - #238

Closed
iasds wants to merge 1 commit into
QubesOS:release4.3from
iasds:fix/nonblocking-trigger-reads
Closed

qrexec-agent: avoid blocking on incomplete trigger requests#238
iasds wants to merge 1 commit into
QubesOS:release4.3from
iasds:fix/nonblocking-trigger-reads

Conversation

@iasds

@iasds iasds commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Summary

  • accept local trigger clients without blocking the agent event loop
  • track incomplete trigger requests and read their header and body incrementally via ppoll
  • bound incomplete requests with a timeout and evict the oldest pending client at capacity
  • add socket regression tests for a competing valid request and fragmented request framing

Test plan

  • Reproduced the original issue in an AppVM: baseline 0.01s, blocked 3.01s (exit 124), recovered 0.01s.
  • gcc -fsyntax-only for agent/qrexec-agent.c using the project include paths and a minimal libvchan API stub; the AppVM lacks the real libvchan development package.
  • python3 -m py_compile qrexec/tests/socket/agent.py
  • git diff --check

Fixes QubesOS/qubes-issues#11010

@iasds
iasds force-pushed the fix/nonblocking-trigger-reads branch from 6bb2a1e to 78fa23f Compare July 24, 2026 05:09
@iasds

iasds commented Jul 24, 2026

Copy link
Copy Markdown
Contributor Author

Closing this direct release4.3 PR in favor of #239, which targets main. Recent project history shows fixes are merged through main first; maintainers can select an appropriate stable-branch backport after review.

@iasds iasds closed this Jul 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant