Re: GStreamer sndio sink fails s ilently_in_jails_– no fallback to OSS

From: Alexandre Ratchov <alex_at_caoua.org>
Date: Fri, 17 Apr 2026 10:50:53 UTC
On Fri, Apr 17, 2026 at 05:17:42AM +0200, ftimmer wrote:
> Hello,
> 
> I would like to report a usability issue with GStreamer's sndio sink in
> FreeBSD jails.
> 
> System: FreeBSD 15.0-RELEASE-p1 (amd64)
> Affected package: audio/gstreamer1-plugins-bad (sndio plugin)
> 
> ## Problem
> 
> In a jail without access to the sndio socket (/tmp/sndio/sock0),
> GStreamer selects GstSndioSink as the default audio sink. Since the
> socket is not available inside the jail, playback fails with:
> 
>   sink not negotiated
>   ../gst-libs/gst/audio/gstaudiobasesink.c(1193):
>   gst_audio_base_sink_preroll(): GstSndioSink: sink not negotiated.
> 
> This affects OGG/Vorbis files. Interestingly, MP3 playback works,
> apparently because it follows a different decoder pipeline that ends up
> using OSS instead.
> 
> GStreamer does not fall back to OSS (osssink) automatically when sndio
> is unavailable. This makes audio completely broken in jails without
> explicit configuration.
> 
> ## Workaround
> 
> The issue can be resolved in two ways:
> 
> 1. Disable the sndio sink via environment variable:
>    export GST_PLUGIN_FEATURE_RANK=sndiosink:NONE
> 
> 2. Mount the sndio socket directory into the jail:
>    - Start sndiod on the host (sysrc sndiod_enable="YES")
>    - Mount /tmp/sndio into the jail via nullfs
>    - Add to /etc/jail.conf:
>      exec.prestart += "mkdir -p /path/to/jail/tmp/sndio";
>      mount += "/tmp/sndio /path/to/jail/tmp/sndio nullfs rw 0 0";
>

The $HOME/.sndio directory is also necessary for the sndio plugin to
work, it contains the authentication cookie (similar to X11's one). Do
you know how similar client/server plugins work in jails, like,
ex. ximagesink ?