Files
conjurer/conjurer_musician
gitea 8ed9025b71 radio: stop a dead PulseAudio from crash-looping the whole radio
Field report: the radio died and kept restarting. The log chain is
unambiguous - 'Daemon startup failed' (pulse), then Connection refused on
input.pulseaudio_0 / buffer.consumer_0 / pulse_out, then 'Shutdown
started!', then round again.

Three fixes:

* Clear stale pulse runtime state before starting the daemon. /run is part
  of the container's writable layer, so  (and the loop that
  restart:unless-stopped produces) preserves /run/pulse/pid from the killed
  daemon; the next start then refuses with 'Daemon startup failed', which is
  what makes the loop self-sustaining. We only remove it when no pulseaudio
  process is actually alive.

* When pulse still won't start, say so loudly and explain the consequence
  and the way out (Icecast needs no sound device; comment the pulse tor out),
  instead of a one-line WARNING that gets lost above the traceback.

* output.pulseaudio(fallible=true): the local monitor output can now fail
  without failing its clock and tearing down the radio. The mic input stays
  a hard dependency - documented inline, since removing it changes audio
  behaviour and can't be verified without a liquidsoap runtime.

Also: RADIO_FORCE_SCRIPT=1 re-seeds radio_conjurer.liq from the image
(keeping a .bak). The live script is deliberately never overwritten so hand
edits win - but that also means image fixes never reached volumes seeded
long ago, which is why a running radio can still hold a stale script.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-12 17:07:31 +02:00
..
2024-04-17 20:40:43 +02:00
2025-01-08 12:01:01 +01:00
2024-07-07 19:46:45 +02:00
2024-04-17 20:40:43 +02:00
2025-05-02 19:01:51 +02:00
2024-04-17 20:40:43 +02:00
2025-04-17 22:59:47 +02:00
2025-04-26 13:18:02 +02:00
2025-04-26 13:18:02 +02:00
FX
2025-08-23 17:44:08 +02:00
2025-04-26 13:18:02 +02:00
2024-04-24 20:31:35 +02:00
2024-11-06 19:35:52 +01:00