Not switching to next track in queue with gapless playback to Icecast

Hello,

tl;dr after configuring gapless playback, Mopidy broke and stopped switching to the next track in queue, instead it keeps playing either the same track on next track in the current one.

I’m working on internet radio for me and my friends’ gaming sessions, since Discord lately is too laggy.
I’ve set up a Debian 10 VM (Hyper-V), installed Mopidy from packages (with Iris from pip) and configured it to use IceCast, configured to use local library.
Then I went and configured fallback for Mopidy’s mount in Icecast and noticed that I’m listening to the same track for like half an hour: Now Playing shows old track selected and it’s playing past its duration (4 minute track is playing for 8+ minutes).
I’ve switched web front-ends, but they all exhibit same behavior,

This seems to be caused by streaming in OGG/Vorbis.
Source is FLAC. output is audioresample ! audioconvert ! vorbisenc quality=0.85 ! oggmux ! shout2send async=false mount=mopidy ip=127.0.0.1 port=8000 password=some-password max-bitrate=0

Upon more testing: streaming using Vorbis causes issues, streaming using LAME works fine.
Steps to reproduce:

  1. Set audio/output to audioresample ! audioconvert ! vorbisenc quality=0.85 ! oggmux ! shout2send async=false mount=mopidy ip=127.0.0.1 port=8000 password=your-password max-bitrate=0
  2. Configure IceCast to receive stream from Mopidy
  3. Add some tracks to the queue and let them play
  4. Stuff should break when seeking and/or switching tracks

Edit: (ir)relevant logs that happen on track switch

Feb 24 01:23:56 amp.gendalph.local mopidy[4078]: DEBUG    [HttpServer] mopidy.http.handlers Received WebSocket message from 127.0.0.1: '{"method":"core.playback.get_time_position","params":{},"jsonrpc":"2.0","id":778}'
Feb 24 01:23:56 amp.gendalph.local mopidy[4078]: DEBUG    [HttpServer] mopidy.http.handlers Sent WebSocket message to 127.0.0.1: '{"jsonrpc": "2.0", "id": 778, "result": 220280}'
Feb 24 01:24:00 amp.gendalph.local mopidy[4078]: DEBUG    [Dummy-11] mopidy.audio.gst Got about-to-finish event.
Feb 24 01:24:00 amp.gendalph.local mopidy[4078]: DEBUG    [Dummy-11] mopidy.audio.actor Running about-to-finish callback.
Feb 24 01:24:00 amp.gendalph.local mopidy[4078]: DEBUG    [SoftwareMixer-1] mopidy.mixer Mixer event: volume_changed(volume=100)
Feb 24 01:24:00 amp.gendalph.local mopidy[4078]: DEBUG    [SoftwareMixer-1] mopidy.listener Sending volume_changed to MixerListener: {'volume': 100}
Feb 24 01:24:00 amp.gendalph.local mopidy[4078]: DEBUG    [Core-6] mopidy.listener Sending volume_changed to CoreListener: {'volume': 100}
Feb 24 01:24:00 amp.gendalph.local mopidy[4078]: DEBUG    [Dummy-11] mopidy.audio.gst Got source-setup signal: element=GstFileSrc
Feb 24 01:24:01 amp.gendalph.local mopidy[4078]: DEBUG    [HttpServer] mopidy.http.handlers Received WebSocket message from 127.0.0.1: '{"method":"core.playback.get_time_position","params":{},"jsonrpc":"2.0","id":779}'
Feb 24 01:24:01 amp.gendalph.local mopidy[4078]: DEBUG    [HttpServer] mopidy.http.handlers Sent WebSocket message to 127.0.0.1: '{"jsonrpc": "2.0", "id": 779, "result": 225197}'
Feb 24 01:24:03 amp.gendalph.local mopidy[4078]: DEBUG    [Dummy-10] mopidy.audio.gst Got SEGMENT pad event: rate=1.0 format=time start=0 stop=18446744073709551615 position=0
Feb 24 01:24:03 amp.gendalph.local mopidy[4078]: DEBUG    [Dummy-10] mopidy.audio.actor Audio event: position_changed(position=0)
Feb 24 01:24:03 amp.gendalph.local mopidy[4078]: DEBUG    [Dummy-10] mopidy.listener Sending position_changed to AudioListener: {'position': 0}
Feb 24 01:24:06 amp.gendalph.local mopidy[4078]: DEBUG    [HttpServer] mopidy.http.handlers Received WebSocket message from 127.0.0.1: '{"method":"core.playback.get_time_position","params":{},"jsonrpc":"2.0","id":780}'
Feb 24 01:24:06 amp.gendalph.local mopidy[4078]: DEBUG    [HttpServer] mopidy.http.handlers Sent WebSocket message to 127.0.0.1: '{"jsonrpc": "2.0", "id": 780, "result": 230004}'