Skip to content

Svc/ComQueue: a buffer or packet that does not fit the message queue is dropped without an event #6119

Description

@binh-lgtm
F´ Version v4.3.0; unchanged on devel (4b58f36)
Affected Component Svc/ComQueue

Problem Description

When ComQueue's message queue is full, bufferQueueIn (async ... hook) hands the buffer back on bufferReturnOut from bufferQueueIn_overflowHook. It emits no event and counts nothing. The sender cannot tell that buffer apart from one that was sent: CfdpManager treats it as a sent PDU, so file data disappears from the downlink with no trace on board or on the ground. comPacketQueueIn is drop, so telemetry and events are lost silently in the same condition.

Context / Environment

Operating System: Linux
CPU Architecture: x86_64
Python version: 3.14.6
CMake version: 3.26.0
Pip packages:
    fprime-tools==4.3.0
    fprime-gds==4.3.0
    fprime-fpp==3.3.0

How to Reproduce

  1. Wire CfdpManager's dataOut to ComQueue.bufferQueueIn and keep the default ComCcsdsConfig.QueueSizes.comQueue (50).
  2. Set channel max_outgoing_pdus_per_cycle to 64 and downlink a file through PollDirectory (Class 1).
  3. Compare CfdpManager's sent-PDU count with the frames the framer produced. In our run it was 312 sent and 300 framed, with no event. The Class 1 download then fails its checksum on the ground.

Expected Behavior

A buffer that ComQueue cannot queue is reported: a throttled warning event from bufferQueueIn_overflowHook, a telemetry count of dropped buffers, or both, and the same for comPacketQueueIn drops.

AI Usage

Drafted with Claude; reproduced and reviewed by the author.

Activity

  1. thomas-bc commented on Oct 9, 2026

    @thomas-bc
    Collaborator

    The dilemma is that if the input queue of ComQueue is full, attempting to emit an event will try to enqueue yet another thing, which will either add pressure or be dropped anyways.

  2. thomas-bc commented on Oct 9, 2026

    @thomas-bc
    Collaborator

    CCB: can put a counter in the overflow hook, and have a telemetry channel for it. Each FIFO's could have one too

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    C++C++ developmentbug

    Type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions