Description
38.5-minute recording (14:01:52 → 14:40:24 UTC). During it, the pipeline froze 16 times:
- Video: 16
Wall-clock-confirmed forward jump events, total_forward_skew_secs="222.033" (~10% of the recording missing)
- Mic: 6 silence insertions,
total_silence_ms=64429
- System audio: 172 silence insertions,
total_silence_ms=69615, plus dropping frames due to full channel
Evidence that the whole process stalls, not just capture
The periodic memory snapshot normally fires at :25 every minute. During the stalls it fires late:
- 14:06:32 (+6.4 s), 14:19:37 (+12 s), 14:21:42 (+16.5 s), 14:28:32 (+6.5 s)
There are also windows with no log lines at all from any thread:
- 14:13:57.7 → 14:14:22.2 (24.5 s)
- 14:15:57.4 → 14:16:20.1 (22.6 s)
- 14:19:15.3 → 14:19:37.9 (22.6 s)
- 14:21:17.9 → 14:21:42.4 (24.5 s)
- 14:28:07.8 → 14:28:32.4 (24.6 s)
Mic and system-audio drops happen exactly in these windows: the sources keep producing data, but consumers are not draining the channels.
Suspicious pattern
The longest video gaps are almost identical: 21.33, 21.35, 21.47, 21.23, 21.44, 21.77 s. This looks like a fixed timeout somewhere rather than random I/O latency.
Hypothesis (unverified)
Blocking file I/O on the shared async runtime. If the output volume (an SD card here) has a write-latency spike, all runtime workers block, including the muxers and timers. A recorder should absorb storage hiccups with buffering instead of dropping audio.
Other observations from the same log
VideoToolbox zero-copy input unavailable ... scaling 4112x2658 -> 4096x2648 requires the software input path, but the encoder is then initialized at 4112×2658. These messages contradict each other, and the software path adds load for no apparent reason.
System audio dropping frames WARN is re-logged every 5 s even when the dropped counter does not change, producing hundreds of redundant warnings.
- At recording start:
Recording upload state could not be read; files retained error=No such file or directory (state is read before it is created).
Full log attached- cap-desktop.log
Additional Context
- Cap version: 0.6.0
- Operating system, version: 26.2 (25C56)
- Device (optional): MacBook Pro M1 Pro, 16 GB RAM
Description
38.5-minute recording (14:01:52 → 14:40:24 UTC). During it, the pipeline froze 16 times:
Wall-clock-confirmed forward jumpevents,total_forward_skew_secs="222.033"(~10% of the recording missing)total_silence_ms=64429total_silence_ms=69615, plusdropping frames due to full channelEvidence that the whole process stalls, not just capture
The periodic memory snapshot normally fires at :25 every minute. During the stalls it fires late:
There are also windows with no log lines at all from any thread:
Mic and system-audio drops happen exactly in these windows: the sources keep producing data, but consumers are not draining the channels.
Suspicious pattern
The longest video gaps are almost identical: 21.33, 21.35, 21.47, 21.23, 21.44, 21.77 s. This looks like a fixed timeout somewhere rather than random I/O latency.
Hypothesis (unverified)
Blocking file I/O on the shared async runtime. If the output volume (an SD card here) has a write-latency spike, all runtime workers block, including the muxers and timers. A recorder should absorb storage hiccups with buffering instead of dropping audio.
Other observations from the same log
VideoToolbox zero-copy input unavailable ... scaling 4112x2658 -> 4096x2648 requires the software input path, but the encoder is then initialized at 4112×2658. These messages contradict each other, and the software path adds load for no apparent reason.System audio dropping framesWARN is re-logged every 5 s even when thedroppedcounter does not change, producing hundreds of redundant warnings.Recording upload state could not be read; files retained error=No such file or directory(state is read before it is created).Full log attached- cap-desktop.log
Additional Context