savonet / liquidsoap

Liquidsoap is a statically typed scripting general-purpose language with dedicated operators and backend for all thing media, streaming, file generation, automation, HTTP backend and more.
http://liquidsoap.info
GNU General Public License v2.0
1.39k stars 128 forks source link

POST request issue with docker #4065

Closed gAlleb closed 1 month ago

gAlleb commented 1 month ago

Description

When sending data in a way showing below - LS 2.3.x restarts every 30-200 seconds.

Steps to reproduce

s = playlist("/home/radio/playlist/icecast-playlist-lofi2.m3u")

def send_mq_event(payload)

  def handle_http_error(error)
    log.important(
      "Unable to send mq event. #{error.message}",
      label="http"
    )
  end

  def handle_http_response(result)
    if result.status_code != 200 then
      log.important(
        "Unable to send mq event. #{result.status_code} #{result.status_message} \
         #{string.quote(result)}",
        label="http"
      )
    end
  end

auth = string.base64.encode("user:pass")

data = payload

 response = 
 try

    http.post(
    "http://api:9999/liq",
    data=data,
    headers=[
      ("Content-Type", "application/json"),
      ("Authorization", "Basic #{auth}"),
    ],
    )
 catch error do
 handle_http_error(error)
 null()
 end
ignore(null.map(handle_http_response, response))
()
end

def write_json_nowplaying(s)

  def write_data()

  def null_list(key, _list)
    list.assoc.mem(key, _list) ? list.assoc(key, _list) : ""
  end

  m = s.last_metadata() ?? []

  artist = null_list("artist", m)

  np = {artist = artist}

if (m["jingle_mode"] != "true") then
 send_mq_event(json.stringify(np, compact=true))
end

 end

  thread.run(write_data, every=1.0, fast=false)
end
write_json_nowplaying(s)

output.dummy(mksafe(s))

Expected behavior

LS shouldn't restart.

Liquidsoap version

2.3.x rolilng release Alpine Docker.

Liquidsoap build config

 * Liquidsoap version  : 2.3.0+git@10453cf85

 * Compilation options
   - Release build       : false
   - Git SHA             : 10453cf85
   - OCaml version       : 4.14.2
   - OS type             : Unix
   - Libs versions       : alsa=0.3.0 angstrom=0.16.0 ao=0.2.4 asetmap=0.8.1 asn1-combinators=0.2.6 astring=0.8.5 base=v0.16.3 base.base_internalhash_types=v0.16.3 base.caml=v0.16.3 base.shadow_stdlib=v0.16.3 base64=3.5.1 bigarray=[distributed with Ocaml] bigarray-compat=1.1.0 bigstringaf=0.9.1 bjack=0.1.6 bos=0.2.1 bytes=[distributed with OCaml 4.02 or above] ca-certs=v0.2.3 camlp-streams camomile.lib=2.0 cohttp=5.3.1 cohttp-lwt=5.3.0 cohttp-lwt-unix=5.3.0 conduit=6.2.2 conduit-lwt=6.2.2 conduit-lwt-unix=6.2.2 cry=1.0.3 cstruct=6.2.0 ctypes=0.22.0 ctypes-foreign=0.22.0 ctypes.stubs=0.22.0 curl=0.9.2 domain-name=0.4.0 domain_shims dssi=0.1.5 dtools=0.4.5 dune-build-info=3.15.3 dune-private-libs.dune-section=3.15.3 dune-site=3.15.3 dune-site.private=3.15.3 duppy=0.9.4 eqaf=0.9 eqaf.bigstring=0.9 eqaf.cstruct=0.9 faad=0.5.2 fdkaac=0.3.3 ffmpeg-av=1.2.0 ffmpeg-avcodec=1.2.0 ffmpeg-avdevice=1.2.0 ffmpeg-avfilter=1.2.0 ffmpeg-avutil=1.2.0 ffmpeg-swresample=1.2.0 ffmpeg-swscale=1.2.0 fileutils=0.6.4 flac=0.5.1 flac.decoder=0.5.1 flac.ogg=0.5.1 fmt=0.9.0 fpath=0.7.3 frei0r=0.1.2 gen=1.1 gmap=0.3.0 hkdf=1.0.4 inotify=2.0-62-g5e58536 integers ipaddr=5.6.0 ipaddr-sexp=5.6.0 ipaddr.unix=5.6.0 irc-client irc-client-unix ladspa=0.2.2 lame=0.3.7 lastfm=0.3.4 lilv=0.2.0 liquidsoap-lang=2.3.0 liquidsoap-lang.console=2.3.0 liquidsoap_alsa=c721555-dirty liquidsoap_ao=c721555-dirty liquidsoap_bjack=c721555-dirty liquidsoap_builtins=c721555-dirty liquidsoap_core=c721555-dirty liquidsoap_dssi=c721555-dirty liquidsoap_faad=c721555-dirty liquidsoap_fdkaac=c721555-dirty liquidsoap_ffmpeg=c721555-dirty liquidsoap_flac=c721555-dirty liquidsoap_frei0r=c721555-dirty liquidsoap_irc=c721555-dirty liquidsoap_ladspa=c721555-dirty liquidsoap_lame=c721555-dirty liquidsoap_lastfm=c721555-dirty liquidsoap_lilv=c721555-dirty liquidsoap_lo=c721555-dirty liquidsoap_mad=c721555-dirty liquidsoap_ogg=c721555-dirty liquidsoap_ogg_flac=c721555-dirty liquidsoap_optionals=c721555-dirty liquidsoap_opus=c721555-dirty liquidsoap_osc=c721555-dirty liquidsoap_oss=c721555-dirty liquidsoap_portaudio=c721555-dirty liquidsoap_posix_time=c721555-dirty liquidsoap_prometheus=c721555-dirty liquidsoap_pulseaudio=c721555-dirty liquidsoap_runtime=c721555-dirty liquidsoap_samplerate=c721555-dirty liquidsoap_sdl=c721555-dirty liquidsoap_sdl_log_level=c721555-dirty liquidsoap_shine=c721555-dirty liquidsoap_soundtouch=c721555-dirty liquidsoap_speex=c721555-dirty liquidsoap_sqlite=c721555-dirty liquidsoap_srt=c721555-dirty liquidsoap_ssl=c721555-dirty liquidsoap_stdlib=c721555-dirty liquidsoap_stereotool=c721555-dirty liquidsoap_taglib=c721555-dirty liquidsoap_theora=c721555-dirty liquidsoap_tls=c721555-dirty liquidsoap_vorbis=c721555-dirty liquidsoap_xmlplaylist=c721555-dirty liquidsoap_yaml=c721555-dirty lo=0.2.0 logs=0.7.0 logs.fmt=0.7.0 logs.lwt=0.7.0 lwt=5.7.0 lwt.unix=5.7.0 macaddr=5.6.0 mad=0.5.3 magic-mime=1.3.1 mem_usage=0.1.1 memtrace=0.2.3 menhirLib=20231231 metadata=0.3.0 mirage-crypto=0.11.3 mirage-crypto-ec=0.11.3 mirage-crypto-pk=0.11.3 mirage-crypto-rng=0.11.3 mirage-crypto-rng.unix=0.11.3 mm=0.8.5 mm.audio=0.8.5 mm.base=0.8.5 mm.image=0.8.5 mm.midi=0.8.5 mm.video=0.8.5 ocplib-endian ocplib-endian.bigstring ogg=0.7.4 ogg.decoder=0.7.4 opus=0.2.3 opus.decoder=0.2.3 osc osc-unix parsexp=v0.16.0 pbkdf portaudio=0.2.3 posix-base=5a7f328 posix-socket=5a7f328 posix-socket.constants=5a7f328 posix-socket.stubs=5a7f328 posix-socket.types=5a7f328 posix-time2=5a7f328 posix-time2.constants=5a7f328 posix-time2.stubs=5a7f328 posix-time2.types=5a7f328 posix-types=5a7f328 posix-types.constants=5a7f328 ppx_compare.runtime-lib=v0.16.0 ppx_hash.runtime-lib=v0.16.0 ppx_sexp_conv.runtime-lib=v0.16.0 prometheus=1.2 prometheus-app=1.2 ptime=1.1.0 ptime.clock.os=1.1.0 pulseaudio=0.1.6 re=1.11.0 result=1.5 rresult=0.7.0 samplerate=0.1.7 saturn_lockfree=0.4.1 sedlex=3.2 seq=[distributed with OCaml 4.07 or above] sexplib=v0.16.0 sexplib0=v0.16.0 shine=0.2.3 soundtouch=0.1.9 speex=0.4.2 speex.decoder=0.4.2 sqlite3=5.1.0 srt=0.3.1 srt.constants=0.3.1 srt.stubs=0.3.1 srt.stubs.locked=0.3.1 srt.types=0.3.1 ssl=0.7.0 stdlib-shims=0.3.0 stereotool=c721555-dirty str=[distributed with Ocaml] stringext=1.6.0 taglib=0.3.10 theora=0.4.1 theora.decoder=0.4.1 threads=[distributed with Ocaml] threads.posix=[internal] tls=0.17.4 tsdl=v1.0.0 tsdl-image=0.5 tsdl-ttf=0.6 unix=[distributed with Ocaml] unix-errno=52c6ecb unix-errno.errno_bindings=52c6ecb unix-errno.errno_types=52c6ecb unix-errno.errno_types_detected=52c6ecb unix-errno.unix=52c6ecb uri=4.4.0 uri-sexp=4.4.0 uri.services=4.4.0 vorbis=0.8.1 vorbis.decoder=0.8.1 x509=0.16.5 xmlm=1.4.0 xmlplaylist=0.1.5 yaml=3.2.0 yaml.bindings=3.2.0 yaml.bindings.types=3.2.0 yaml.c=3.2.0 yaml.ffi=3.2.0 yaml.types=3.2.0 zarith=1.13
   - architecture        : amd64
   - host                : x86_64-pc-linux-musl
   - target              : x86_64-pc-linux-musl
   - system              : linux
   - ocamlopt_cflags     : -O2 -fno-strict-aliasing -fwrapv -pthread -fPIC
   - native_c_compiler   : gcc -O2 -fno-strict-aliasing -fwrapv -pthread -fPIC -D_FILE_OFFSET_BITS=64
   - native_c_libraries  : -lm

 * Configured paths
   - mode              : posix
   - standard library  : /usr/share/liquidsoap/libs
   - scripted binaries : /usr/share/liquidsoap/bin
   - rundir            : /var/run/liquidsoap
   - logdir            : /var/log/liquidsoap
   - user cache        : $HOME/.cache/liquidsoap (override with $LIQ_CACHE_USER_DIR)
   - system cache      : /var/cache/liquidsoap (override with $LIQ_CACHE_SYSTEM_DIR)
   - camomile files    : /usr/share/liquidsoap/camomile

 * Supported input formats
   - MP3               : yes
   - AAC               : yes
   - Ffmpeg            : yes
   - Flac (native)     : yes
   - Flac (ogg)        : yes
   - Opus              : yes
   - Speex             : yes
   - Theora            : yes
   - Vorbis            : yes

 * Supported output formats
   - FDK-AAC           : yes
   - Ffmpeg            : yes
   - MP3               : yes
   - MP3 (fixed-point) : yes
   - Flac (native)     : yes
   - Flac (ogg)        : yes
   - Opus              : yes
   - Speex             : yes
   - Theora            : yes
   - Vorbis            : yes

 * Tags
   - Taglib (ID3 tags) : yes
   - Vorbis            : yes

 * Input / output
   - ALSA              : yes
   - AO                : yes
   - FFmpeg            : yes
   - JACK              : yes
   - OSS               : yes
   - Portaudio         : yes
   - Pulseaudio        : yes
   - SRT               : yes

 * Audio manipulation
   - FFmpeg            : yes
   - LADSPA            : yes
   - Lilv              : yes
   - Samplerate        : yes
   - SoundTouch        : yes
   - StereoTool        : yes

 * Video manipulation
   - camlimages        : no (requires camlimages)
   - FFmpeg            : yes
   - frei0r            : yes
   - ImageLib          : no (requires imagelib)
   - SDL               : yes

 * MIDI manipulation
   - DSSI              : yes

 * Visualization
   - GD                : no (requires gd)
   - Graphics          : no (requires graphics)
   - SDL               : yes

 * Additional libraries
   - FFmpeg filters    : yes
   - FFmpeg devices    : yes
   - inotify           : yes
   - irc               : yes
   - jemalloc          : no (requires jemalloc)
   - lastfm            : yes
   - lo                : yes
   - memtrace          : no (requires memtrace)
   - osc               : yes
   - ssl               : yes
   - sqlite3           : yes
   - tls               : yes
   - posix-time2       : yes
   - windows service   : no (requires winsvc)
   - YAML support      : yes
   - XML playlists     : yes

 * Monitoring
   - Prometheus        : yes

Installation method

From official container image

Additional Info

No response

gAlleb commented 1 month ago

Aha! I got it. It happens only when I make a network for containers and use networks: for LS container (and http://omfmapi:9999 endpoint in the script). LS restarts with 0 or 139 code.

services:
  omfmapi:
    build:
      context: ./
      dockerfile: ./docker/omfmapi/Dockerfile
    # depends_on:
    #   - centrifugo
    environment:
      - "TZ=Europe/Moscow"
    user: node:node
    volumes:
      - ./docker/omfmapi/app/playlist:/home/node/app/playlist
      - ./docker/omfmapi/app/db:/home/node/app/db
    restart: always
    # network_mode: "host"
    ports:
       - 9999:9999
    networks:
       - omfm-network
    logging:
      driver: "json-file"
      options:
        max-size: "1m"
        max-file: "3"

  centrifugo:
    container_name: centrifugo
    restart: always
    image: centrifugo/centrifugo:latest
    volumes:
      - ./config.json:/centrifugo/config.json
    command: centrifugo -c config.json
    ports:
       - 9998:9998
    networks:
       - omfm-network
    ulimits:
      nofile:
        soft: 65535
        hard: 65535
    logging:
      driver: "json-file"
      options:
        max-size: "1m"
        max-file: "3"

  liquidsoap:
     build:
       context: ./
       dockerfile: ./docker/liquidsoap/Dockerfile
       args:
         - "USER_UID=${USER_UID:-1000}"
         - "USER_GID=${USER_GID:-1000}"
    user: 1000:1000
    environment:
      - "TZ=Europe/Moscow"
    command:
      - /home/radio/liquidsoap/omfm/index.liq
    volumes:
      - /mnt/GoogleDrive:/mnt/GoogleDrive:ro
    networks:
      - omfm-network
    #network_mode: "host"
    # depends_on:
    #   - omfmapi
    restart: always
    logging:
      driver: "json-file"
      options:
        max-size: "1m"
        max-file: "3"

networks:
  omfm-network:
    driver: bridge

If I change LS container to network_mode: "host" and use http://localhost:9999 endpoint for API - then everything works allright! Could somebody explain?

@vitoyucepi, Hi! Can I do anything with it? Thanks!

toots commented 1 month ago

Do you have any log?

gAlleb commented 1 month ago

Nothing special in the logs. It happens like this.

liquidsoap-1  | 2024/08/01 17:29:18 [decoder.ffmpeg:3] Requested content-type for "/mnt/GoogleDrive/music/Meditative/Anugama/15 - 1995 - Shamanic Dream/02. Chakra-Journey.mp3": {audio=pcm(stereo)}
liquidsoap-1  | 2024/08/01 17:29:18 [decoder.ffmpeg:3] FFmpeg recognizes "/mnt/GoogleDrive/music/Meditative/Anugama/15 - 1995 - Shamanic Dream/02. Chakra-Journey.mp3" as audio: {codec: mp3, 44100Hz, 2 channel(s)}, video: {codec: mjpeg, 358x350, yuvj420p}
liquidsoap-1  | 2024/08/01 17:29:18 [decoder.ffmpeg:3] Decoded content-type for "/mnt/GoogleDrive/music/Meditative/Anugama/15 - 1995 - Shamanic Dream/02. Chakra-Journey.mp3": {audio=pcm(stereo)}
liquidsoap-1 exited with code 139
liquidsoap-1  | 2024/08/01 17:29:31 >>> LOG START
liquidsoap-1  | 2024/08/01 17:29:25 [ffmpeg.filter.bitstream:3] No valid mode found for filter pgs_frame_merge!
liquidsoap-1  | 2024/08/01 17:29:25 [main:3] Liquidsoap 2.3.0+git@10453cf85

or

liquidsoap-1  | 2024/08/01 12:07:30 [decoder.ffmpeg:3] Requested content-type for "/mnt/GoogleDrive/radio/music/OMFM/mantra-night/13_Ravindra_Sathe_-_Om_www_oum_ru.mp3": {audio=pcm(stereo)}
liquidsoap-1  | 2024/08/01 12:07:30 [decoder.ffmpeg:3] FFmpeg recognizes "/mnt/GoogleDrive/radio/music/OMFM/mantra-night/13_Ravindra_Sathe_-_Om_www_oum_ru.mp3" as audio: {codec: mp3, 44100Hz, 2 channel(s)}
liquidsoap-1  | 2024/08/01 12:07:30 [decoder.ffmpeg:3] Decoded content-type for "/mnt/GoogleDrive/radio/music/OMFM/mantra-night/13_Ravindra_Sathe_-_Om_www_oum_ru.mp3": {audio=pcm(stereo)}
liquidsoap-1 exited with code 0
liquidsoap-1  | 2024/08/01 12:08:23 >>> LOG START
liquidsoap-1  | 2024/08/01 12:08:22 [ffmpeg.filter.bitstream:3] No valid mode found for filter pgs_frame_merge!
liquidsoap-1  | 2024/08/01 12:08:22 [main:3] Liquidsoap 2.3.0+git@10453cf85

If I change LS container to network_mode: "host" and use http://localhost:9999 endpoint for API in the script - then everything works all right.

vitoyucepi commented 1 month ago

Hi @gAlleb, It may sound rough from my side, but would you kindly fill out the form as requested? The liquidsoap --version and liquidsoap --build-config exist for a reason. They will allow me to determine the opam version, ocaml modules, and basic system info. I noticed you're using dockerfile: ./docker/liquidsoap/Dockerfile. Pasting it will help a lot.

gAlleb commented 1 month ago

Thanks, Vito. My bad.

Build config:

 * Liquidsoap version  : 2.3.0+git@10453cf85

 * Compilation options
   - Release build       : false
   - Git SHA             : 10453cf85
   - OCaml version       : 4.14.2
   - OS type             : Unix
   - Libs versions       : alsa=0.3.0 angstrom=0.16.0 ao=0.2.4 asetmap=0.8.1 asn1-combinators=0.2.6 astring=0.8.5 base=v0.16.3 base.base_internalhash_types=v0.16.3 base.caml=v0.16.3 base.shadow_stdlib=v0.16.3 base64=3.5.1 bigarray=[distributed with Ocaml] bigarray-compat=1.1.0 bigstringaf=0.9.1 bjack=0.1.6 bos=0.2.1 bytes=[distributed with OCaml 4.02 or above] ca-certs=v0.2.3 camlp-streams camomile.lib=2.0 cohttp=5.3.1 cohttp-lwt=5.3.0 cohttp-lwt-unix=5.3.0 conduit=6.2.2 conduit-lwt=6.2.2 conduit-lwt-unix=6.2.2 cry=1.0.3 cstruct=6.2.0 ctypes=0.22.0 ctypes-foreign=0.22.0 ctypes.stubs=0.22.0 curl=0.9.2 domain-name=0.4.0 domain_shims dssi=0.1.5 dtools=0.4.5 dune-build-info=3.15.3 dune-private-libs.dune-section=3.15.3 dune-site=3.15.3 dune-site.private=3.15.3 duppy=0.9.4 eqaf=0.9 eqaf.bigstring=0.9 eqaf.cstruct=0.9 faad=0.5.2 fdkaac=0.3.3 ffmpeg-av=1.2.0 ffmpeg-avcodec=1.2.0 ffmpeg-avdevice=1.2.0 ffmpeg-avfilter=1.2.0 ffmpeg-avutil=1.2.0 ffmpeg-swresample=1.2.0 ffmpeg-swscale=1.2.0 fileutils=0.6.4 flac=0.5.1 flac.decoder=0.5.1 flac.ogg=0.5.1 fmt=0.9.0 fpath=0.7.3 frei0r=0.1.2 gen=1.1 gmap=0.3.0 hkdf=1.0.4 inotify=2.0-62-g5e58536 integers ipaddr=5.6.0 ipaddr-sexp=5.6.0 ipaddr.unix=5.6.0 irc-client irc-client-unix ladspa=0.2.2 lame=0.3.7 lastfm=0.3.4 lilv=0.2.0 liquidsoap-lang=2.3.0 liquidsoap-lang.console=2.3.0 liquidsoap_alsa=c721555-dirty liquidsoap_ao=c721555-dirty liquidsoap_bjack=c721555-dirty liquidsoap_builtins=c721555-dirty liquidsoap_core=c721555-dirty liquidsoap_dssi=c721555-dirty liquidsoap_faad=c721555-dirty liquidsoap_fdkaac=c721555-dirty liquidsoap_ffmpeg=c721555-dirty liquidsoap_flac=c721555-dirty liquidsoap_frei0r=c721555-dirty liquidsoap_irc=c721555-dirty liquidsoap_ladspa=c721555-dirty liquidsoap_lame=c721555-dirty liquidsoap_lastfm=c721555-dirty liquidsoap_lilv=c721555-dirty liquidsoap_lo=c721555-dirty liquidsoap_mad=c721555-dirty liquidsoap_ogg=c721555-dirty liquidsoap_ogg_flac=c721555-dirty liquidsoap_optionals=c721555-dirty liquidsoap_opus=c721555-dirty liquidsoap_osc=c721555-dirty liquidsoap_oss=c721555-dirty liquidsoap_portaudio=c721555-dirty liquidsoap_posix_time=c721555-dirty liquidsoap_prometheus=c721555-dirty liquidsoap_pulseaudio=c721555-dirty liquidsoap_runtime=c721555-dirty liquidsoap_samplerate=c721555-dirty liquidsoap_sdl=c721555-dirty liquidsoap_sdl_log_level=c721555-dirty liquidsoap_shine=c721555-dirty liquidsoap_soundtouch=c721555-dirty liquidsoap_speex=c721555-dirty liquidsoap_sqlite=c721555-dirty liquidsoap_srt=c721555-dirty liquidsoap_ssl=c721555-dirty liquidsoap_stdlib=c721555-dirty liquidsoap_stereotool=c721555-dirty liquidsoap_taglib=c721555-dirty liquidsoap_theora=c721555-dirty liquidsoap_tls=c721555-dirty liquidsoap_vorbis=c721555-dirty liquidsoap_xmlplaylist=c721555-dirty liquidsoap_yaml=c721555-dirty lo=0.2.0 logs=0.7.0 logs.fmt=0.7.0 logs.lwt=0.7.0 lwt=5.7.0 lwt.unix=5.7.0 macaddr=5.6.0 mad=0.5.3 magic-mime=1.3.1 mem_usage=0.1.1 memtrace=0.2.3 menhirLib=20231231 metadata=0.3.0 mirage-crypto=0.11.3 mirage-crypto-ec=0.11.3 mirage-crypto-pk=0.11.3 mirage-crypto-rng=0.11.3 mirage-crypto-rng.unix=0.11.3 mm=0.8.5 mm.audio=0.8.5 mm.base=0.8.5 mm.image=0.8.5 mm.midi=0.8.5 mm.video=0.8.5 ocplib-endian ocplib-endian.bigstring ogg=0.7.4 ogg.decoder=0.7.4 opus=0.2.3 opus.decoder=0.2.3 osc osc-unix parsexp=v0.16.0 pbkdf portaudio=0.2.3 posix-base=5a7f328 posix-socket=5a7f328 posix-socket.constants=5a7f328 posix-socket.stubs=5a7f328 posix-socket.types=5a7f328 posix-time2=5a7f328 posix-time2.constants=5a7f328 posix-time2.stubs=5a7f328 posix-time2.types=5a7f328 posix-types=5a7f328 posix-types.constants=5a7f328 ppx_compare.runtime-lib=v0.16.0 ppx_hash.runtime-lib=v0.16.0 ppx_sexp_conv.runtime-lib=v0.16.0 prometheus=1.2 prometheus-app=1.2 ptime=1.1.0 ptime.clock.os=1.1.0 pulseaudio=0.1.6 re=1.11.0 result=1.5 rresult=0.7.0 samplerate=0.1.7 saturn_lockfree=0.4.1 sedlex=3.2 seq=[distributed with OCaml 4.07 or above] sexplib=v0.16.0 sexplib0=v0.16.0 shine=0.2.3 soundtouch=0.1.9 speex=0.4.2 speex.decoder=0.4.2 sqlite3=5.1.0 srt=0.3.1 srt.constants=0.3.1 srt.stubs=0.3.1 srt.stubs.locked=0.3.1 srt.types=0.3.1 ssl=0.7.0 stdlib-shims=0.3.0 stereotool=c721555-dirty str=[distributed with Ocaml] stringext=1.6.0 taglib=0.3.10 theora=0.4.1 theora.decoder=0.4.1 threads=[distributed with Ocaml] threads.posix=[internal] tls=0.17.4 tsdl=v1.0.0 tsdl-image=0.5 tsdl-ttf=0.6 unix=[distributed with Ocaml] unix-errno=52c6ecb unix-errno.errno_bindings=52c6ecb unix-errno.errno_types=52c6ecb unix-errno.errno_types_detected=52c6ecb unix-errno.unix=52c6ecb uri=4.4.0 uri-sexp=4.4.0 uri.services=4.4.0 vorbis=0.8.1 vorbis.decoder=0.8.1 x509=0.16.5 xmlm=1.4.0 xmlplaylist=0.1.5 yaml=3.2.0 yaml.bindings=3.2.0 yaml.bindings.types=3.2.0 yaml.c=3.2.0 yaml.ffi=3.2.0 yaml.types=3.2.0 zarith=1.13
   - architecture        : amd64
   - host                : x86_64-pc-linux-musl
   - target              : x86_64-pc-linux-musl
   - system              : linux
   - ocamlopt_cflags     : -O2 -fno-strict-aliasing -fwrapv -pthread -fPIC
   - native_c_compiler   : gcc -O2 -fno-strict-aliasing -fwrapv -pthread -fPIC -D_FILE_OFFSET_BITS=64
   - native_c_libraries  : -lm

 * Configured paths
   - mode              : posix
   - standard library  : /usr/share/liquidsoap/libs
   - scripted binaries : /usr/share/liquidsoap/bin
   - rundir            : /var/run/liquidsoap
   - logdir            : /var/log/liquidsoap
   - user cache        : $HOME/.cache/liquidsoap (override with $LIQ_CACHE_USER_DIR)
   - system cache      : /var/cache/liquidsoap (override with $LIQ_CACHE_SYSTEM_DIR)
   - camomile files    : /usr/share/liquidsoap/camomile

 * Supported input formats
   - MP3               : yes
   - AAC               : yes
   - Ffmpeg            : yes
   - Flac (native)     : yes
   - Flac (ogg)        : yes
   - Opus              : yes
   - Speex             : yes
   - Theora            : yes
   - Vorbis            : yes

 * Supported output formats
   - FDK-AAC           : yes
   - Ffmpeg            : yes
   - MP3               : yes
   - MP3 (fixed-point) : yes
   - Flac (native)     : yes
   - Flac (ogg)        : yes
   - Opus              : yes
   - Speex             : yes
   - Theora            : yes
   - Vorbis            : yes

 * Tags
   - Taglib (ID3 tags) : yes
   - Vorbis            : yes

 * Input / output
   - ALSA              : yes
   - AO                : yes
   - FFmpeg            : yes
   - JACK              : yes
   - OSS               : yes
   - Portaudio         : yes
   - Pulseaudio        : yes
   - SRT               : yes

 * Audio manipulation
   - FFmpeg            : yes
   - LADSPA            : yes
   - Lilv              : yes
   - Samplerate        : yes
   - SoundTouch        : yes
   - StereoTool        : yes

 * Video manipulation
   - camlimages        : no (requires camlimages)
   - FFmpeg            : yes
   - frei0r            : yes
   - ImageLib          : no (requires imagelib)
   - SDL               : yes

 * MIDI manipulation
   - DSSI              : yes

 * Visualization
   - GD                : no (requires gd)
   - Graphics          : no (requires graphics)
   - SDL               : yes

 * Additional libraries
   - FFmpeg filters    : yes
   - FFmpeg devices    : yes
   - inotify           : yes
   - irc               : yes
   - jemalloc          : no (requires jemalloc)
   - lastfm            : yes
   - lo                : yes
   - memtrace          : no (requires memtrace)
   - osc               : yes
   - ssl               : yes
   - sqlite3           : yes
   - tls               : yes
   - posix-time2       : yes
   - windows service   : no (requires winsvc)
   - YAML support      : yes
   - XML playlists     : yes

 * Monitoring
   - Prometheus        : yes

Version: Liquidsoap 2.3.0+git@10453cf85

Dockerfile:

FROM savonet/liquidsoap-alpine:rolling-release-v2.3.x

ARG USER_UID
ARG USER_GID

USER root

ENV TZ=UTC

RUN addgroup -g "${USER_GID}" radio && adduser -u "${USER_UID}" -G radio -S radio

RUN    apk add --no-cache --allow-untrusted \
      ffmpeg \
      python3 \
      py3-mutagen \
      tzdata \
      curl \ 
      bash \
    ;

COPY ./docker/liquidsoap/rootfs /

RUN chown -R radio:radio /home/radio

USER radio

# Your alpine entrypoint
ENTRYPOINT [ "entrypoint" ]

Thing is this happens with the above image, also with just an official Alpine image and with official Alpine image with 2.3.0+git@383d1d8 release only when creating network within docker-compose.yaml and sending payload to http:omfmapi:9999. If I change LS container to network_mode: "host" and use http://localhost:9999/ endpoint for API in the script - then everything works all right.

vitoyucepi commented 1 month ago

I've figured out how to collect the trace.

  1. index.js

    const express = require('express')
    const app = express()
    const port = 3000
    
    app.post('/', (req, res) => {
     res.send('Hello World!')
    })
    
    app.listen(port, () => {
     console.log(`Example app listening on port ${port}`)
    })
  2. npm init
  3. npm install express
  4. build/Dockerfile

    FROM savonet/liquidsoap-alpine:rolling-release-v2.3.x
    
    USER root
    RUN apk add gdb
    USER liquidsoap
    
    ENTRYPOINT [ "gdb" ]
    CMD [ "-ex", "run /tmp/test/main.liq", "-ex", "thread apply all bt", "-ex", "quit", "liquidsoap" ]
  5. main.liq

    s = playlist("/tmp/test/music")
    
    thread.run({ignore(http.post("http://omfmapi:3000/"))}, every=0.01, fast=false)
    
    output.dummy(s, fallible=true)
  6. compose.yaml
    services:
     omfmapi:
       image: node:20-alpine
       command: node /tmp/test
       volumes:
         - ./:/tmp/test
     liquidsoap:
       build:
         context: ./build
         dockerfile: Dockerfile
       volumes:
         - ./:/tmp/test
  7. mkdir music
  8. for i in $(seq 1 3);do ffmpeg -f lavfi -i "sine=frequency=${i}000:duration=1" -c:a libmp3lame -b:a 128k -metadata title=music_$i -y music/$i.mp3;done
  9. docker compose up --build
Trace ```gdb Thread 4 "liquidsoap" received signal SIGSEGV, Segmentation fault. [Switching to LWP 19] get_meta (p=p@entry=0x79b0cb61bad0 ) at src/malloc/mallocng/meta.h:141 Thread 8 (LWP 23 "liquidsoap"): #0 __cp_end () at src/thread/x86_64/syscall_cp.s:29 #1 0x000079b0d544d617 in __syscall_cp_c (nr=202, u=, v=, w=, x=, y=, z=0) at src/thread/pthread_cancel.c:33 #2 0x000079b0d544cb49 in __futex4_cp (to=, val=2, op=128, addr=0x79b0c5dff0d4) at src/thread/__timedwait.c:24 #3 __timedwait_cp (addr=addr@entry=0x79b0c5dff0d4, val=val@entry=2, clk=clk@entry=0, at=at@entry=0x0, priv=128, priv@entry=1) at src/thread/__timedwait.c:52 #4 0x000079b0d544d9af in __pthread_cond_timedwait (c=0x632c15a50c90, m=0x632c15a50c60, ts=0x0) at src/thread/pthread_cond_timedwait.c:100 #5 0x0000632c14f04a92 in ?? () #6 0x0000632c14f1be36 in caml_leave_blocking_section () #7 0x0000632c14f04068 in caml_poll () #8 0x0000632c14d05f00 in camlDuppy__poll_590 () #9 0x0000632c14d070a0 in camlDuppy__f_1033 () #10 0x0000632c14d06c9c in camlDuppy__process_1023 () #11 0x0000632c14d07a8d in camlDuppy__f_1158 () #12 0x0000632c14d077d1 in camlDuppy__queue_inner_3044 () #13 0x0000632c14907ac3 in camlTutils__process_1199 () #14 0x0000632c14d32f25 in camlThread__fun_850 () #15 0x0000632c14f3becd in caml_start_program () #16 0x0000632c14f31f6d in caml_callback_exn () #17 0x0000632c14f053b0 in ?? () #18 0x000079b0d544e349 in start (p=0x79b0c5dff620) at src/thread/pthread_create.c:207 #19 0x000079b0d545095f in __clone () at src/thread/x86_64/clone.s:22 Backtrace stopped: frame did not save the PC Thread 7 (LWP 22 "liquidsoap"): #0 __cp_end () at src/thread/x86_64/syscall_cp.s:29 #1 0x000079b0d544d617 in __syscall_cp_c (nr=202, u=, v=, w=, x=, y=, z=0) at src/thread/pthread_cancel.c:33 #2 0x000079b0d544cb49 in __futex4_cp (to=, val=2, op=128, addr=0x79b0c71ff2a4) at src/thread/__timedwait.c:24 #3 __timedwait_cp (addr=addr@entry=0x79b0c71ff2a4, val=val@entry=2, clk=clk@entry=0, at=at@entry=0x0, priv=128, priv@entry=1) at src/thread/__timedwait.c:52 #4 0x000079b0d544d9af in __pthread_cond_timedwait (c=0x79b0ccb3aac0, m=0x79b0d030be00, ts=0x0) at src/thread/pthread_cond_timedwait.c:100 #5 0x0000632c14f05ec4 in caml_condition_wait () #6 0x0000632c14d07bb1 in camlDuppy__f_1158 () #7 0x0000632c14d077d1 in camlDuppy__queue_inner_3044 () #8 0x0000632c14907ac3 in camlTutils__process_1199 () #9 0x0000632c14d32f25 in camlThread__fun_850 () #10 0x0000632c14f3becd in caml_start_program () #11 0x0000632c14f31f6d in caml_callback_exn () #12 0x0000632c14f053b0 in ?? () #13 0x000079b0d544e349 in start (p=0x79b0c71ff620) at src/thread/pthread_create.c:207 #14 0x000079b0d545095f in __clone () at src/thread/x86_64/clone.s:22 Backtrace stopped: frame did not save the PC Thread 6 (LWP 21 "liquidsoap"): #0 __cp_end () at src/thread/x86_64/syscall_cp.s:29 #1 0x000079b0d544d617 in __syscall_cp_c (nr=202, u=, v=, w=, x=, y=, z=0) at src/thread/pthread_cancel.c:33 #2 0x000079b0d544cb49 in __futex4_cp (to=, val=2, op=128, addr=0x79b0c81ff2a4) at src/thread/__timedwait.c:24 #3 __timedwait_cp (addr=addr@entry=0x79b0c81ff2a4, val=val@entry=2, clk=clk@entry=0, at=at@entry=0x0, priv=128, priv@entry=1) at src/thread/__timedwait.c:52 #4 0x000079b0d544d9af in __pthread_cond_timedwait (c=0x79b0ccb3a650, m=0x79b0d030be00, ts=0x0) at src/thread/pthread_cond_timedwait.c:100 #5 0x0000632c14f05ec4 in caml_condition_wait () #6 0x0000632c14d07bb1 in camlDuppy__f_1158 () #7 0x0000632c14d077d1 in camlDuppy__queue_inner_3044 () #8 0x0000632c14907ac3 in camlTutils__process_1199 () #9 0x0000632c14d32f25 in camlThread__fun_850 () #10 0x0000632c14f3becd in caml_start_program () #11 0x0000632c14f31f6d in caml_callback_exn () #12 0x0000632c14f053b0 in ?? () #13 0x000079b0d544e349 in start (p=0x79b0c81ff620) at src/thread/pthread_create.c:207 #14 0x000079b0d545095f in __clone () at src/thread/x86_64/clone.s:22 Backtrace stopped: frame did not save the PC Thread 5 (LWP 20 "liquidsoap"): #0 __cp_end () at src/thread/x86_64/syscall_cp.s:29 #1 0x000079b0d544d617 in __syscall_cp_c (nr=202, u=, v=, w=, x=, y=, z=0) at src/thread/pthread_cancel.c:33 #2 0x000079b0d544cb49 in __futex4_cp (to=, val=2, op=128, addr=0x79b0c8dff2a4) at src/thread/__timedwait.c:24 #3 __timedwait_cp (addr=addr@entry=0x79b0c8dff2a4, val=val@entry=2, clk=clk@entry=0, at=at@entry=0x0, priv=128, priv@entry=1) at src/thread/__timedwait.c:52 #4 0x000079b0d544d9af in __pthread_cond_timedwait (c=0x79b0ccb3a740, m=0x79b0d030be00, ts=0x0) at src/thread/pthread_cond_timedwait.c:100 #5 0x0000632c14f05ec4 in caml_condition_wait () #6 0x0000632c14d07bb1 in camlDuppy__f_1158 () #7 0x0000632c14d077d1 in camlDuppy__queue_inner_3044 () #8 0x0000632c14907ac3 in camlTutils__process_1199 () #9 0x0000632c14d32f25 in camlThread__fun_850 () #10 0x0000632c14f3becd in caml_start_program () #11 0x0000632c14f31f6d in caml_callback_exn () #12 0x0000632c14f053b0 in ?? () #13 0x000079b0d544e349 in start (p=0x79b0c8dff620) at src/thread/pthread_create.c:207 #14 0x000079b0d545095f in __clone () at src/thread/x86_64/clone.s:22 Backtrace stopped: frame did not save the PC Thread 4 (LWP 19 "liquidsoap"): #0 get_meta (p=p@entry=0x79b0cb61bad0 ) at src/malloc/mallocng/meta.h:141 #1 0x000079b0d5416db3 in __libc_free (p=0x79b0cb61bad0) at src/malloc/mallocng/free.c:105 #2 0x000079b0d2c1cf7a in av_channel_layout_uninit () from /usr/lib/libavutil.so.58 #3 0x000079b0d2c20c52 in av_channel_layout_copy () from /usr/lib/libavutil.so.58 #4 0x0000632c14ee0966 in value_of_channel_layout () #5 0x0000632c14ee0f56 in ocaml_avutil_get_default_channel_layout () #6 0x0000632c148d3363 in camlAvutil__fun_1729 () #7 0x0000632c148a5816 in camlFfmpeg_internal_decoder__fun_2320 () #8 0x0000632c148a8fda in camlFfmpeg_decoder__f_2913 () #9 0x0000632c14913789 in camlDecoder__fread_2334 () #10 0x0000632c1496fae4 in camlRequest_dynamic__fun_3022 () #11 0x0000632c1496fa4a in camlRequest_dynamic__fun_3029 () #12 0x0000632c1496e04d in camlRequest_dynamic__fun_3066 () #13 0x0000632c1496fc70 in camlRequest_dynamic__fill_1726 () #14 0x0000632c1496df5c in camlRequest_dynamic__fun_3069 () #15 0x0000632c1491be43 in camlSource__fun_4443 () #16 0x0000632c14921e55 in camlSource__fun_4236 () #17 0x0000632c1491ced3 in camlSource__fun_4278 () #18 0x0000632c1491cdf3 in camlSource__fun_4283 () #19 0x0000632c1494c42e in camlOutput__fun_2622 () #20 0x0000632c1490b71a in camlClock__fun_2207 () #21 0x0000632c14d72a40 in camlStdlib__List__iter_507 () #22 0x0000632c1490b4b9 in camlClock___tick_1227 () #23 0x0000632c1490bcbb in camlClock__fun_2265 () #24 0x0000632c14907ac3 in camlTutils__process_1199 () #25 0x0000632c14d32f25 in camlThread__fun_850 () #26 0x0000632c14f3becd in caml_start_program () #27 0x0000632c14f31f6d in caml_callback_exn () #28 0x0000632c14f053b0 in ?? () #29 0x000079b0d544e349 in start (p=0x79b0c93ff620) at src/thread/pthread_create.c:207 #30 0x000079b0d545095f in __clone () at src/thread/x86_64/clone.s:22 Backtrace stopped: frame did not save the PC Thread 3 (LWP 18 "liquidsoap"): #0 __cp_end () at src/thread/x86_64/syscall_cp.s:29 #1 0x000079b0d544d617 in __syscall_cp_c (nr=23, u=, v=, w=, x=, y=, z=0) at src/thread/pthread_cancel.c:33 #2 0x000079b0d543f605 in select (n=, rfds=, wfds=, efds=, tv=) at src/select/select.c:39 #3 0x0000632c14f046f4 in ?? () #4 0x000079b0d544e349 in start (p=0x79b0c9fff620) at src/thread/pthread_create.c:207 #5 0x000079b0d545095f in __clone () at src/thread/x86_64/clone.s:22 Backtrace stopped: frame did not save the PC Thread 2 (LWP 17 "liquidsoap"): #0 __cp_end () at src/thread/x86_64/syscall_cp.s:29 #1 0x000079b0d544d617 in __syscall_cp_c (nr=202, u=, v=, w=, x=, y=, z=0) at src/thread/pthread_cancel.c:33 #2 0x000079b0d544cb49 in __futex4_cp (to=, val=2, op=128, addr=0x79b0ca7e8314) at src/thread/__timedwait.c:24 #3 __timedwait_cp (addr=addr@entry=0x79b0ca7e8314, val=val@entry=2, clk=clk@entry=0, at=at@entry=0x0, priv=128, priv@entry=1) at src/thread/__timedwait.c:52 #4 0x000079b0d544d9af in __pthread_cond_timedwait (c=0x79b0d5494f90, m=0x79b0ccb8cd30, ts=0x0) at src/thread/pthread_cond_timedwait.c:100 #5 0x0000632c14f05ec4 in caml_condition_wait () #6 0x0000632c14d2c8e2 in camlDtools__Dtools_impl__fun_2862 () #7 0x0000632c14d2c77b in camlDtools__Dtools_impl__mutexify_1631 () #8 0x0000632c14d2c874 in camlDtools__Dtools_impl__f_1643 () #9 0x0000632c14d32f25 in camlThread__fun_850 () #10 0x0000632c14f3becd in caml_start_program () #11 0x0000632c14f31f6d in caml_callback_exn () #12 0x0000632c14f053b0 in ?? () #13 0x000079b0d544e349 in start (p=0x79b0ca7e8620) at src/thread/pthread_create.c:207 #14 0x000079b0d545095f in __clone () at src/thread/x86_64/clone.s:22 Backtrace stopped: frame did not save the PC Thread 1 (LWP 13 "liquidsoap"): #0 __cp_end () at src/thread/x86_64/syscall_cp.s:29 #1 0x000079b0d544d617 in __syscall_cp_c (nr=7, u=, v=, w=, x=, y=, z=0) at src/thread/pthread_cancel.c:33 #2 0x000079b0d543f4dc in poll (fds=, n=, timeout=) at src/select/poll.c:9 #3 0x0000632c14f04061 in caml_poll () #4 0x0000632c14d05f00 in camlDuppy__poll_590 () #5 0x0000632c14907782 in camlTutils__wait_for_done_1139 () #6 0x0000632c1490766e in camlTutils__wait_done_1137 () #7 0x0000632c14908f4f in camlTutils__main_1692 () #8 0x0000632c14d72a40 in camlStdlib__List__iter_507 () #9 0x0000632c148f0eb8 in camlLifecycle__action_449 () #10 0x0000632c14d72a40 in camlStdlib__List__iter_507 () #11 0x0000632c14d72a40 in camlStdlib__List__iter_507 () #12 0x0000632c14d72a40 in camlStdlib__List__iter_507 () #13 0x0000632c1455e20c in camlDune__exe__Liquidsoap__entry () #14 0x0000632c14553609 in caml_program () #15 0x0000632c14f3becd in caml_start_program () #16 0x0000632c14f1abdc in caml_startup_common () #17 0x0000632c14f1ac5b in caml_main () #18 0x0000632c1454e37c in main () ```
gAlleb commented 1 month ago

Oh, nice. Thanks, Vito!

So what does it mean? Any ideas?

Should we stick with network_mode: "host" for now?

vitoyucepi commented 1 month ago

So what does it mean? Any ideas?

It could be alpine:edge or ffmpeg.

gAlleb commented 1 month ago

While I was trying to collect the trace - bumped 3 times into https://github.com/savonet/liquidsoap/issues/4068 issue again.

Got the trace:

liquidsoap-1  | 
liquidsoap-1  | Thread 4 "liquidsoap" received signal SIGSEGV, Segmentation fault.
liquidsoap-1  | [Switching to LWP 25]
liquidsoap-1  | get_meta (p=p@entry=0x761530f85500 "\200\226\241,\025v")
liquidsoap-1  |     at src/malloc/mallocng/meta.h:141
liquidsoap-1  | warning: 141    src/malloc/mallocng/meta.h: No such file or directory
liquidsoap-1  | 
liquidsoap-1  | Thread 8 (LWP 29 "liquidsoap"):
liquidsoap-1  | #0  __cp_end () at src/thread/x86_64/syscall_cp.s:29
liquidsoap-1  | #1  0x00007615362e9617 in __syscall_cp_c (nr=7, u=<optimized out>, v=<optimized out>, w=<optimized out>, x=<optimized out>, y=<optimized out>, z=0) at src/thread/pthread_cancel.c:33
liquidsoap-1  | #2  0x00007615362db4dc in poll (fds=<optimized out>, n=<optimized out>, timeout=<optimized out>) at src/select/poll.c:9
liquidsoap-1  | #3  0x0000625b8f89d061 in caml_poll ()
liquidsoap-1  | #4  0x0000625b8f69ef00 in camlDuppy__poll_590 ()
liquidsoap-1  | #5  0x0000625b8f6a00a0 in camlDuppy__f_1033 ()
liquidsoap-1  | #6  0x0000625b8f69fc9c in camlDuppy__process_1023 ()
liquidsoap-1  | #7  0x0000625b8f6a0a8d in camlDuppy__f_1158 ()
liquidsoap-1  | #8  0x0000625b8f6a07d1 in camlDuppy__queue_inner_3044 ()
liquidsoap-1  | #9  0x0000625b8f2a0ac3 in camlTutils__process_1199 ()
liquidsoap-1  | #10 0x0000625b8f6cbf25 in camlThread__fun_850 ()
liquidsoap-1  | #11 0x0000625b8f8d4ecd in caml_start_program ()
liquidsoap-1  | #12 0x0000625b8f8caf6d in caml_callback_exn ()
liquidsoap-1  | #13 0x0000625b8f89e3b0 in ?? ()
liquidsoap-1  | #14 0x00007615362ea349 in start (p=0x761526dff620) at src/thread/pthread_create.c:207
liquidsoap-1  | #15 0x00007615362ec95f in __clone () at src/thread/x86_64/clone.s:22
liquidsoap-1  | Backtrace stopped: frame did not save the PC
liquidsoap-1  | 
liquidsoap-1  | Thread 7 (LWP 28 "liquidsoap"):
liquidsoap-1  | #0  __cp_end () at src/thread/x86_64/syscall_cp.s:29
liquidsoap-1  | #1  0x00007615362e9617 in __syscall_cp_c (nr=202, u=<optimized out>, v=<optimized out>, w=<optimized out>, x=<optimized out>, y=<optimized out>, z=0) at src/thread/pthread_cancel.c:33
liquidsoap-1  | #2  0x00007615362e8b49 in __futex4_cp (to=<optimized out>, val=2, op=128, addr=0x7615281ff2a4) at src/thread/__timedwait.c:24
liquidsoap-1  | #3  __timedwait_cp (addr=addr@entry=0x7615281ff2a4, val=val@entry=2, clk=clk@entry=0, at=at@entry=0x0, priv=128, priv@entry=1) at src/thread/__timedwait.c:52
liquidsoap-1  | #4  0x00007615362e99af in __pthread_cond_timedwait (c=0x76152ca23a80, m=0x761530624f50, ts=0x0) at src/thread/pthread_cond_timedwait.c:100
liquidsoap-1  | #5  0x0000625b8f89eec4 in caml_condition_wait ()
liquidsoap-1  | #6  0x0000625b8f6a0bb1 in camlDuppy__f_1158 ()
liquidsoap-1  | #7  0x0000625b8f6a07d1 in camlDuppy__queue_inner_3044 ()
liquidsoap-1  | #8  0x0000625b8f2a0ac3 in camlTutils__process_1199 ()
liquidsoap-1  | #9  0x0000625b8f6cbf25 in camlThread__fun_850 ()
liquidsoap-1  | #10 0x0000625b8f8d4ecd in caml_start_program ()
liquidsoap-1  | #11 0x0000625b8f8caf6d in caml_callback_exn ()
liquidsoap-1  | #12 0x0000625b8f89e3b0 in ?? ()
liquidsoap-1  | #13 0x00007615362ea349 in start (p=0x7615281ff620) at src/thread/pthread_create.c:207
liquidsoap-1  | #14 0x00007615362ec95f in __clone () at src/thread/x86_64/clone.s:22
liquidsoap-1  | Backtrace stopped: frame did not save the PC
liquidsoap-1  | 
liquidsoap-1  | Thread 6 (LWP 27 "liquidsoap"):
liquidsoap-1  | #0  __cp_end () at src/thread/x86_64/syscall_cp.s:29
liquidsoap-1  | #1  0x00007615362e9617 in __syscall_cp_c (nr=202, u=<optimized out>, v=<optimized out>, w=<optimized out>, x=<optimized out>, y=<optimized out>, z=0) at src/thread/pthread_cancel.c:33
liquidsoap-1  | #2  0x00007615362e8b49 in __futex4_cp (to=<optimized out>, val=2, op=128, addr=0x7615291ff2a4) at src/thread/__timedwait.c:24
liquidsoap-1  | #3  __timedwait_cp (addr=addr@entry=0x7615291ff2a4, val=val@entry=2, clk=clk@entry=0, at=at@entry=0x0, priv=128, priv@entry=1) at src/thread/__timedwait.c:52
liquidsoap-1  | #4  0x00007615362e99af in __pthread_cond_timedwait (c=0x76152ca23a40, m=0x761530624f50, ts=0x0) at src/thread/pthread_cond_timedwait.c:100
liquidsoap-1  | #5  0x0000625b8f89eec4 in caml_condition_wait ()
liquidsoap-1  | #6  0x0000625b8f6a0bb1 in camlDuppy__f_1158 ()
liquidsoap-1  | #7  0x0000625b8f6a07d1 in camlDuppy__queue_inner_3044 ()
liquidsoap-1  | #8  0x0000625b8f2a0ac3 in camlTutils__process_1199 ()
liquidsoap-1  | #9  0x0000625b8f6cbf25 in camlThread__fun_850 ()
liquidsoap-1  | #10 0x0000625b8f8d4ecd in caml_start_program ()
liquidsoap-1  | #11 0x0000625b8f8caf6d in caml_callback_exn ()
liquidsoap-1  | #12 0x0000625b8f89e3b0 in ?? ()
liquidsoap-1  | #13 0x00007615362ea349 in start (p=0x7615291ff620) at src/thread/pthread_create.c:207
liquidsoap-1  | #14 0x00007615362ec95f in __clone () at src/thread/x86_64/clone.s:22
liquidsoap-1  | Backtrace stopped: frame did not save the PC
liquidsoap-1  | 
liquidsoap-1  | Thread 5 (LWP 26 "liquidsoap"):
liquidsoap-1  | #0  __cp_end () at src/thread/x86_64/syscall_cp.s:29
liquidsoap-1  | #1  0x00007615362e9617 in __syscall_cp_c (nr=202, u=<optimized out>, v=<optimized out>, w=<optimized out>, x=<optimized out>, y=<optimized out>, z=0) at src/thread/pthread_cancel.c:33
liquidsoap-1  | #2  0x00007615362e8b49 in __futex4_cp (to=<optimized out>, val=2, op=128, addr=0x761529dff2a4) at src/thread/__timedwait.c:24
liquidsoap-1  | #3  __timedwait_cp (addr=addr@entry=0x761529dff2a4, val=val@entry=2, clk=clk@entry=0, at=at@entry=0x0, priv=128, priv@entry=1) at src/thread/__timedwait.c:52
liquidsoap-1  | #4  0x00007615362e99af in __pthread_cond_timedwait (c=0x76152ca23880, m=0x761530624f50, ts=0x0) at src/thread/pthread_cond_timedwait.c:100
liquidsoap-1  | #5  0x0000625b8f89eec4 in caml_condition_wait ()
liquidsoap-1  | #6  0x0000625b8f6a0bb1 in camlDuppy__f_1158 ()
liquidsoap-1  | #7  0x0000625b8f6a07d1 in camlDuppy__queue_inner_3044 ()
liquidsoap-1  | #8  0x0000625b8f2a0ac3 in camlTutils__process_1199 ()
liquidsoap-1  | #9  0x0000625b8f6cbf25 in camlThread__fun_850 ()
liquidsoap-1  | #10 0x0000625b8f8d4ecd in caml_start_program ()
liquidsoap-1  | #11 0x0000625b8f8caf6d in caml_callback_exn ()
liquidsoap-1  | #12 0x0000625b8f89e3b0 in ?? ()
liquidsoap-1  | #13 0x00007615362ea349 in start (p=0x761529dff620) at src/thread/pthread_create.c:207
liquidsoap-1  | #14 0x00007615362ec95f in __clone () at src/thread/x86_64/clone.s:22
liquidsoap-1  | Backtrace stopped: frame did not save the PC
liquidsoap-1  | 
liquidsoap-1  | Thread 4 (LWP 25 "liquidsoap"):
liquidsoap-1  | #0  get_meta (p=p@entry=0x761530f85500 "\200\226\241,\025v") at src/malloc/mallocng/meta.h:141
liquidsoap-1  | #1  0x00007615362b2db3 in __libc_free (p=0x761530f85500) at src/malloc/mallocng/free.c:105
liquidsoap-1  | #2  0x0000761533c46f7a in av_channel_layout_uninit () from /usr/lib/libavutil.so.58
liquidsoap-1  | #3  0x0000761533c4ac52 in av_channel_layout_copy () from /usr/lib/libavutil.so.58
liquidsoap-1  | #4  0x0000625b8f879966 in value_of_channel_layout ()
liquidsoap-1  | #5  0x0000625b8f879f56 in ocaml_avutil_get_default_channel_layout ()
liquidsoap-1  | #6  0x0000625b8f26c363 in camlAvutil__fun_1729 ()
liquidsoap-1  | #7  0x0000625b8f23e816 in camlFfmpeg_internal_decoder__fun_2320 ()
liquidsoap-1  | #8  0x0000625b8f2420ce in camlFfmpeg_decoder__f_2913 ()
liquidsoap-1  | #9  0x0000625b8f2ac789 in camlDecoder__fread_2334 ()
liquidsoap-1  | #10 0x0000625b8f2c64cd in camlRequest__fread_1914 ()
liquidsoap-1  | #11 0x0000625b8f308ae4 in camlRequest_dynamic__fun_3022 ()
liquidsoap-1  | #12 0x0000625b8f308a4a in camlRequest_dynamic__fun_3029 ()
liquidsoap-1  | #13 0x0000625b8f30704d in camlRequest_dynamic__fun_3066 ()
liquidsoap-1  | #14 0x0000625b8f308c70 in camlRequest_dynamic__fill_1726 ()
liquidsoap-1  | #15 0x0000625b8f306f5c in camlRequest_dynamic__fun_3069 ()
liquidsoap-1  | #16 0x0000625b8f2b4e43 in camlSource__fun_4443 ()
liquidsoap-1  | #17 0x0000625b8f2bae55 in camlSource__fun_4236 ()
liquidsoap-1  | #18 0x0000625b8f2b5ed3 in camlSource__fun_4278 ()
liquidsoap-1  | #19 0x0000625b8f2b5df3 in camlSource__fun_4283 ()
liquidsoap-1  | #20 0x0000625b8f2b75a7 in camlSource__fun_4700 ()
liquidsoap-1  | #21 0x0000625b8f2b4e43 in camlSource__fun_4443 ()
liquidsoap-1  | #22 0x0000625b8f2bae55 in camlSource__fun_4236 ()
liquidsoap-1  | #23 0x0000625b8f2b5ed3 in camlSource__fun_4278 ()
liquidsoap-1  | #24 0x0000625b8f2b5df3 in camlSource__fun_4283 ()
liquidsoap-1  | #25 0x0000625b8f31b602 in camlOn_track__fun_1412 ()
liquidsoap-1  | #26 0x0000625b8f2b4e43 in camlSource__fun_4443 ()
liquidsoap-1  | #27 0x0000625b8f2bae55 in camlSource__fun_4236 ()
liquidsoap-1  | #28 0x0000625b8f2b5ed3 in camlSource__fun_4278 ()
liquidsoap-1  | #29 0x0000625b8f2b5df3 in camlSource__fun_4283 ()
liquidsoap-1  | #30 0x0000625b8f2b75a7 in camlSource__fun_4700 ()
liquidsoap-1  | #31 0x0000625b8f2b4e43 in camlSource__fun_4443 ()
liquidsoap-1  | #32 0x0000625b8f2bae55 in camlSource__fun_4236 ()
liquidsoap-1  | #33 0x0000625b8f2b5ed3 in camlSource__fun_4278 ()
liquidsoap-1  | #34 0x0000625b8f2b5df3 in camlSource__fun_4283 ()
liquidsoap-1  | #35 0x0000625b8f2b75a7 in camlSource__fun_4700 ()
liquidsoap-1  | #36 0x0000625b8f2b4e43 in camlSource__fun_4443 ()
liquidsoap-1  | #37 0x0000625b8f2bae55 in camlSource__fun_4236 ()
liquidsoap-1  | #38 0x0000625b8f2b5ed3 in camlSource__fun_4278 ()
liquidsoap-1  | #39 0x0000625b8f2b5df3 in camlSource__fun_4283 ()
liquidsoap-1  | #40 0x0000625b8f2b75a7 in camlSource__fun_4700 ()
liquidsoap-1  | #41 0x0000625b8f2b4e43 in camlSource__fun_4443 ()
liquidsoap-1  | #42 0x0000625b8f2bae55 in camlSource__fun_4236 ()
liquidsoap-1  | #43 0x0000625b8f2b5ed3 in camlSource__fun_4278 ()
liquidsoap-1  | #44 0x0000625b8f2b5df3 in camlSource__fun_4283 ()
liquidsoap-1  | #45 0x0000625b8f2b75a7 in camlSource__fun_4700 ()
liquidsoap-1  | #46 0x0000625b8f2b4e43 in camlSource__fun_4443 ()
liquidsoap-1  | #47 0x0000625b8f2bae55 in camlSource__fun_4236 ()
liquidsoap-1  | #48 0x0000625b8f2b5ed3 in camlSource__fun_4278 ()
liquidsoap-1  | #49 0x0000625b8f2b5df3 in camlSource__fun_4283 ()
liquidsoap-1  | #50 0x0000625b8f2f0ddf in camlMuxer__fun_2385 ()
liquidsoap-1  | #51 0x0000625b8f70bb14 in camlStdlib__List__fold_left_521 ()
liquidsoap-1  | #52 0x0000625b8f2f0436 in camlMuxer__fun_2371 ()
liquidsoap-1  | #53 0x0000625b8f2b4e43 in camlSource__fun_4443 ()
liquidsoap-1  | #54 0x0000625b8f2bae55 in camlSource__fun_4236 ()
liquidsoap-1  | #55 0x0000625b8f2b5ed3 in camlSource__fun_4278 ()
liquidsoap-1  | #56 0x0000625b8f2b5df3 in camlSource__fun_4283 ()
liquidsoap-1  | #57 0x0000625b8f2f0ddf in camlMuxer__fun_2385 ()
liquidsoap-1  | #58 0x0000625b8f70bb14 in camlStdlib__List__fold_left_521 ()
liquidsoap-1  | #59 0x0000625b8f2f0436 in camlMuxer__fun_2371 ()
liquidsoap-1  | #60 0x0000625b8f2b4e43 in camlSource__fun_4443 ()
liquidsoap-1  | #61 0x0000625b8f2bae55 in camlSource__fun_4236 ()
liquidsoap-1  | #62 0x0000625b8f2b5ed3 in camlSource__fun_4278 ()
liquidsoap-1  | #63 0x0000625b8f2b5df3 in camlSource__fun_4283 ()
liquidsoap-1  | #64 0x0000625b8f38939b in camlCross__fun_2793 ()
liquidsoap-1  | #65 0x0000625b8f5b7854 in camlLiquidsoap_lang__Queues__f_378 ()
liquidsoap-1  | #66 0x0000625b8f2a44ce in camlClock___tick_1227 ()
liquidsoap-1  | #67 0x0000625b8f38714d in camlCross__fun_2781 ()
liquidsoap-1  | #68 0x0000625b8f38625d in camlCross__fun_2874 ()
liquidsoap-1  | #69 0x0000625b8f38661b in camlCross__fun_2871 ()
liquidsoap-1  | #70 0x0000625b8f2b78e8 in camlSource__fun_4681 ()
liquidsoap-1  | #71 0x0000625b8f2b6150 in camlSource__fun_4200 ()
liquidsoap-1  | #72 0x0000625b8f2b638e in camlSource__fun_4189 ()
liquidsoap-1  | #73 0x0000625b8f2b6150 in camlSource__fun_4200 ()
liquidsoap-1  | #74 0x0000625b8f2b638e in camlSource__fun_4189 ()
liquidsoap-1  | #75 0x0000625b8f70bee0 in camlStdlib__List__for_all_581 ()
liquidsoap-1  | #76 0x0000625b8f2b6150 in camlSource__fun_4200 ()
liquidsoap-1  | #77 0x0000625b8f2b638e in camlSource__fun_4189 ()
liquidsoap-1  | #78 0x0000625b8f2b778c in camlSource__fun_4689 ()
liquidsoap-1  | #79 0x0000625b8f2fb789 in camlSwitch__fun_2603 ()
liquidsoap-1  | #80 0x0000625b8f2b78e8 in camlSource__fun_4681 ()
liquidsoap-1  | #81 0x0000625b8f2b6150 in camlSource__fun_4200 ()
liquidsoap-1  | #82 0x0000625b8f2b638e in camlSource__fun_4189 ()
liquidsoap-1  | #83 0x0000625b8f2b6150 in camlSource__fun_4200 ()
liquidsoap-1  | #84 0x0000625b8f2b638e in camlSource__fun_4189 ()
liquidsoap-1  | #85 0x0000625b8f29f8fd in camlClock_base__fun_1675 ()
liquidsoap-1  | #86 0x0000625b8f70bb14 in camlStdlib__List__fold_left_521 ()
liquidsoap-1  | #87 0x0000625b8f29f6f2 in camlClock_base__fun_1668 ()
liquidsoap-1  | #88 0x0000625b8f2fb678 in camlSwitch__fun_2614 ()
liquidsoap-1  | #89 0x0000625b8f2a3c3d in camlClock__fun_2098 ()
liquidsoap-1  | #90 0x0000625b8f70bb14 in camlStdlib__List__fold_left_521 ()
liquidsoap-1  | #91 0x0000625b8f2a3b25 in camlClock___self_sync_1009 ()
liquidsoap-1  | #92 0x0000625b8f2a3f0f in camlClock___after_tick_1209 ()
liquidsoap-1  | #93 0x0000625b8f2a4577 in camlClock___tick_1227 ()
liquidsoap-1  | #94 0x0000625b8f2a4cbb in camlClock__fun_2265 ()
liquidsoap-1  | #95 0x0000625b8f2a0ac3 in camlTutils__process_1199 ()
liquidsoap-1  | #96 0x0000625b8f6cbf25 in camlThread__fun_850 ()
liquidsoap-1  | #97 0x0000625b8f8d4ecd in caml_start_program ()
liquidsoap-1  | #98 0x0000625b8f8caf6d in caml_callback_exn ()
liquidsoap-1  | #99 0x0000625b8f89e3b0 in ?? ()
liquidsoap-1  | #100 0x00007615362ea349 in start (p=0x76152a3ff620) at src/thread/pthread_create.c:207
liquidsoap-1  | #101 0x00007615362ec95f in __clone () at src/thread/x86_64/clone.s:22
liquidsoap-1  | Backtrace stopped: frame did not save the PC
liquidsoap-1  | 
liquidsoap-1  | Thread 3 (LWP 24 "liquidsoap"):
liquidsoap-1  | #0  __cp_end () at src/thread/x86_64/syscall_cp.s:29
liquidsoap-1  | #1  0x00007615362e9617 in __syscall_cp_c (nr=23, u=<optimized out>, v=<optimized out>, w=<optimized out>, x=<optimized out>, y=<optimized out>, z=0) at src/thread/pthread_cancel.c:33
liquidsoap-1  | #2  0x00007615362db605 in select (n=<optimized out>, rfds=<optimized out>, wfds=<optimized out>, efds=<optimized out>, tv=<optimized out>) at src/select/select.c:39
liquidsoap-1  | #3  0x0000625b8f89d6f4 in ?? ()
liquidsoap-1  | #4  0x00007615362ea349 in start (p=0x76152afff620) at src/thread/pthread_create.c:207
liquidsoap-1  | #5  0x00007615362ec95f in __clone () at src/thread/x86_64/clone.s:22
liquidsoap-1  | Backtrace stopped: frame did not save the PC
liquidsoap-1  | 
liquidsoap-1  | Thread 2 (LWP 23 "liquidsoap"):
liquidsoap-1  | #0  __cp_end () at src/thread/x86_64/syscall_cp.s:29
liquidsoap-1  | #1  0x00007615362e9617 in __syscall_cp_c (nr=202, u=<optimized out>, v=<optimized out>, w=<optimized out>, x=<optimized out>, y=<optimized out>, z=0) at src/thread/pthread_cancel.c:33
liquidsoap-1  | #2  0x00007615362e8b49 in __futex4_cp (to=<optimized out>, val=2, op=128, addr=0x76152b379314) at src/thread/__timedwait.c:24
liquidsoap-1  | #3  __timedwait_cp (addr=addr@entry=0x76152b379314, val=val@entry=2, clk=clk@entry=0, at=at@entry=0x0, priv=128, priv@entry=1) at src/thread/__timedwait.c:52
liquidsoap-1  | #4  0x00007615362e99af in __pthread_cond_timedwait (c=0x761536330f90, m=0x761530da8d80, ts=0x0) at src/thread/pthread_cond_timedwait.c:100
liquidsoap-1  | #5  0x0000625b8f89eec4 in caml_condition_wait ()
liquidsoap-1  | #6  0x0000625b8f6c58e2 in camlDtools__Dtools_impl__fun_2862 ()
liquidsoap-1  | #7  0x0000625b8f6c577b in camlDtools__Dtools_impl__mutexify_1631 ()
liquidsoap-1  | #8  0x0000625b8f6c5874 in camlDtools__Dtools_impl__f_1643 ()
liquidsoap-1  | #9  0x0000625b8f6cbf25 in camlThread__fun_850 ()
liquidsoap-1  | #10 0x0000625b8f8d4ecd in caml_start_program ()
liquidsoap-1  | #11 0x0000625b8f8caf6d in caml_callback_exn ()
liquidsoap-1  | #12 0x0000625b8f89e3b0 in ?? ()
liquidsoap-1  | #13 0x00007615362ea349 in start (p=0x76152b379620) at src/thread/pthread_create.c:207
liquidsoap-1  | #14 0x00007615362ec95f in __clone () at src/thread/x86_64/clone.s:22
liquidsoap-1  | Backtrace stopped: frame did not save the PC
liquidsoap-1  | 
liquidsoap-1  | Thread 1 (LWP 9 "liquidsoap"):
liquidsoap-1  | #0  __cp_end () at src/thread/x86_64/syscall_cp.s:29
liquidsoap-1  | #1  0x00007615362e9617 in __syscall_cp_c (nr=7, u=<optimized out>, v=<optimized out>, w=<optimized out>, x=<optimized out>, y=<optimized out>, z=0) at src/thread/pthread_cancel.c:33
liquidsoap-1  | #2  0x00007615362db4dc in poll (fds=<optimized out>, n=<optimized out>, timeout=<optimized out>) at src/select/poll.c:9
liquidsoap-1  | #3  0x0000625b8f89d061 in caml_poll ()
liquidsoap-1  | #4  0x0000625b8f69ef00 in camlDuppy__poll_590 ()
liquidsoap-1  | #5  0x0000625b8f2a0782 in camlTutils__wait_for_done_1139 ()
liquidsoap-1  | #6  0x0000625b8f2a066e in camlTutils__wait_done_1137 ()
liquidsoap-1  | #7  0x0000625b8f2a1f4f in camlTutils__main_1692 ()
liquidsoap-1  | #8  0x0000625b8f70ba40 in camlStdlib__List__iter_507 ()
liquidsoap-1  | #9  0x0000625b8f289eb8 in camlLifecycle__action_449 ()
liquidsoap-1  | #10 0x0000625b8f70ba40 in camlStdlib__List__iter_507 ()
liquidsoap-1  | #11 0x0000625b8f70ba40 in camlStdlib__List__iter_507 ()
liquidsoap-1  | #12 0x0000625b8f70ba40 in camlStdlib__List__iter_507 ()
liquidsoap-1  | #13 0x0000625b8eef720c in camlDune__exe__Liquidsoap__entry ()
liquidsoap-1  | #14 0x0000625b8eeec609 in caml_program ()
liquidsoap-1  | #15 0x0000625b8f8d4ecd in caml_start_program ()
liquidsoap-1  | #16 0x0000625b8f8b3bdc in caml_startup_common ()
liquidsoap-1  | #17 0x0000625b8f8b3c5b in caml_main ()
liquidsoap-1  | #18 0x0000625b8eee737c in main ()
liquidsoap-1  | A debugging session is active.
liquidsoap-1  | 
liquidsoap-1  |     Inferior 1 [process 9] will be killed.
toots commented 1 month ago

Thanks for these reports, they are so useful! I believe I have found the issue with the new channel API in ocaml-ffmpeg. I've got a fix deploying. I believe that this should take care of all 3 crashes you've reported so far.