Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Trouble with setting up ogg flac container for icecast stream #3495

Closed
Parakovsky opened this issue Oct 29, 2023 · 14 comments · Fixed by savonet/ocaml-flac#16
Closed

Trouble with setting up ogg flac container for icecast stream #3495

Parakovsky opened this issue Oct 29, 2023 · 14 comments · Fixed by savonet/ocaml-flac#16

Comments

@Parakovsky
Copy link

Parakovsky commented Oct 29, 2023

Describe the bug
Following the manual has build the liquidsoap and everything works as expected, only problem is it not produce the connection to icecast with flac encoder, it always ends up as a segmentation failure see this: http://ix.io/4Kgi, this happens both to native flac and a flac wrapped in ogg container

To Reproduce
This is my script, I think I misconfigured replaygain also, but we can get back to that later.


#!/home/parakovsky/.opam/default/bin/liquidsoap
# Log dir
log.file.path.set("/tmp/basic-radio.log")

# Music
tuzikdump = mksafe(crossfade(playlist("/storage/Audio/")))
# Some jingles
jingles = playlist("/storage/Audio/The Conet Project - Recordings of Shortwave Numbers Stations (1997) [CD-FLAC]")
# If something goes wrong, we'll play this
security = single("/storage/Audio/Brian Eno - The Ship (Remastered 2023) (2016) [WEB-FLAC]/04 - Fickle Sun (iii) I'm Set Free (Remastered 2023).flac")

# Start building the feed with music
radio = tuzikdump
# Now add some jingles
radio = random(weights = [1, 4],[jingles, radio])
# And finally the security
radio = fallback(track_sensitive = false, [radio, security])

enable_replaygain_metadata()

s = playlist("/storage/Audio")
s = amplify(1.,override="replay_gain",s)

# Stream it out
output.icecast(%ogg(%flac), 
     host = "192.168.88.232", port = 8030,
	       password = "Hackme", format = "audio/ogg", mount = "liq.ogg",
	         radio)

Expected behavior
If I use the external encoder it works fine altough it crashes in seven hours uptime. But that again another problem, but just the proof that flac from external container works.

Version details
Archlinux, latest opam version I believe also compiled with TLS support.

Install method
OPAM

Common issues
I think I installed everything it told me to install in a quickstarter manual. Might be wrong though.

@toots
Copy link
Member

toots commented Oct 30, 2023

Hi,

Thanks for the report. Have ever used gdb? It would be great to get a stack trace:

% gdb /path/to/liquidsoap
> run <options>
...crashes
> thread apply all bt

Also, could you include the first lines of the logs where it gives all the library versions?

Thanks!

@Parakovsky
Copy link
Author

Hi, Toots! As my ignorance to the inner workings of the amazing Liquidsoap is getting narrower because I am reading this special book, I decide to close my issue without actual "solving" it by relying on the fact that I probably didn't understand what I was doing in the first place. I will try to rephrase the issue next time and report back. God bless.

@toots
Copy link
Member

toots commented Oct 30, 2023

Hi! Hmm ok. It looks to me like your issue was legit :-)

Feel free to reopen and submit the trace if you get a chance!

@Parakovsky Parakovsky reopened this Nov 8, 2023
@Parakovsky
Copy link
Author

Ok after a week of tinkering with this remarkable software it is time to get back to original taste like Pringles, let me see what you suggested I should do and then provide you with an output...

Can you please explain to me how to use gdb here to achieve the trace you want me? I was trying to run it, which I succeed in doing, but got confused about which exactly option to run inside it. Thank you.

@toots
Copy link
Member

toots commented Nov 9, 2023

For sure would love to fix this.

You need to install the gdb command line and figure out where the liquidsoap binary is located, usually by doing which liquidsoap

Then, you launch the gdb with the path to liquidsoap:

% gdb /path/to/liquidsoap

Once started, you should have access to the gdb promopt/console. From there, you have to run the binary with the required command line options:

> run <options>

Once it crashes, you can get the stack track from all of the application's threads:

> thread apply all bt

And send that to us!

@Parakovsky
Copy link
Author

Parakovsky commented Nov 9, 2023

Here you are kind Sir:

Thread 8 (Thread 0x7fffbaffd6c0 (LWP 763402) "liquidsoap"):
#0  0x00007ffff50a74ae in  () at /usr/lib/libc.so.6
#1  0x00007ffff50a9d40 in pthread_cond_wait () at /usr/lib/libc.so.6
#2  0x00005555561e87a6 in caml_ml_condition_wait ()
#3  0x00005555561eda8f in <signal handler called> ()
#4  0x000055555602c3bd in camlDuppy__f_1060 () at src/duppy.ml:352
#5  0x000055555602bfe5 in camlDuppy__queue_inner_2770 () at src/duppy.ml:368
#6  0x0000555555c81739 in camlTutils__process_1182 () at src/core/tools/tutils.ml:184
#7  0x00005555560f7c6b in camlThread__fun_840 ()
#8  0x00005555561edb48 in <signal handler called> ()
#9  0x00005555561ca377 in caml_callback_exn ()
#10 0x00005555561b914d in caml_thread_start ()
#11 0x00007ffff50aa9eb in  () at /usr/lib/libc.so.6
#12 0x00007ffff512e7cc in  () at /usr/lib/libc.so.6

Thread 7 (Thread 0x7fffbb7fe6c0 (LWP 763401) "liquidsoap"):
#0  0x00007ffff5120f6f in poll () at /usr/lib/libc.so.6
#1  0x00005555560dd421 in poll (__timeout=-1, __nfds=3, __fds=0x7fffac002cb0) at /usr/include/bits/poll2.h:39
#2  caml_poll (_read=<optimized out>, _write=<optimized out>, _err=<optimized out>, _timeout=<optimized out>) at ../../../duppy.0.9.3/_build/default/src/duppy_stubs.c:95
#3  0x00005555561eda8f in <signal handler called> ()
#4  0x000055555602a4f6 in camlDuppy__poll_486 () at src/duppy.ml:37
#5  0x000055555602b816 in camlDuppy__f_934 () at src/duppy.ml:211
#6  0x000055555602b3e2 in camlDuppy__process_924 () at src/duppy.ml:232
#7  0x000055555602c2ad in camlDuppy__f_1060 () at src/duppy.ml:337
#8  0x000055555602bfe5 in camlDuppy__queue_inner_2770 () at src/duppy.ml:368
#9  0x0000555555c81739 in camlTutils__process_1182 () at src/core/tools/tutils.ml:184
#10 0x00005555560f7c6b in camlThread__fun_840 ()
#11 0x00005555561edb48 in <signal handler called> ()
#12 0x00005555561ca377 in caml_callback_exn ()
#13 0x00005555561b914d in caml_thread_start ()
#14 0x00007ffff50aa9eb in  () at /usr/lib/libc.so.6
#15 0x00007ffff512e7cc in  () at /usr/lib/libc.so.6

Thread 6 (Thread 0x7fffbbfff6c0 (LWP 763400) "liquidsoap"):
#0  0x00007ffff50a74ae in  () at /usr/lib/libc.so.6
#1  0x00007ffff50a9d40 in pthread_cond_wait () at /usr/lib/libc.so.6
#2  0x00005555561e87a6 in caml_ml_condition_wait ()
#3  0x00005555561eda8f in <signal handler called> ()
#4  0x000055555602c3bd in camlDuppy__f_1060 () at src/duppy.ml:352
#5  0x000055555602bfe5 in camlDuppy__queue_inner_2770 () at src/duppy.ml:368
#6  0x0000555555c81739 in camlTutils__process_1182 () at src/core/tools/tutils.ml:184
#7  0x00005555560f7c6b in camlThread__fun_840 ()
#8  0x00005555561edb48 in <signal handler called> ()
#9  0x00005555561ca377 in caml_callback_exn ()
#10 0x00005555561b914d in caml_thread_start ()
#11 0x00007ffff50aa9eb in  () at /usr/lib/libc.so.6
#12 0x00007ffff512e7cc in  () at /usr/lib/libc.so.6

Thread 5 (Thread 0x7fffc0b2e6c0 (LWP 763399) "liquidsoap"):
#0  0x00007ffff50a74ae in  () at /usr/lib/libc.so.6
#1  0x00007ffff50a9d40 in pthread_cond_wait () at /usr/lib/libc.so.6
#2  0x00005555561b8531 in st_masterlock_acquire ()
#3  0x00005555561b85be in caml_thread_leave_blocking_section ()
#4  0x00005555561e63dd in caml_leave_blocking_section ()
#5  0x00005555560b2896 in open_input (url=url@entry=0x7fffa8004eb0 "/storage/Audio/Miles Davis - A Tribute To Jack Johnson (1971) [SACD] (2016 MFSL Remaster PCM Stereo) (FLAC) [16-44]/Artwork/Cover In.jpg", format=format@entry=0x0, format_context=format_context@entry=0x0, _interrupt=<optimized out>, options=options@entry=0x7fffc0b2d590) at ../../../ffmpeg-av.1.1.8/_build/default/av/av_stubs.c:664
#6  0x00005555560b2c27 in ocaml_av_open_input (_url=<optimized out>, _format=<optimized out>, _interrupt=<optimized out>, _opts=<optimized out>) at ../../../ffmpeg-av.1.1.8/_build/default/av/av_stubs.c:734
--Type <RET> for more, q to quit, c to continue without paging--
#7  0x00005555561eda8f in <signal handler called> ()
#8  camlAv__open_input_472 () at av/av.ml:61
#9  0x0000555555c2819a in camlFfmpeg_decoder__get_file_type_2891 () at src/core/decoder/ffmpeg_decoder.ml:1127
#10 0x0000555555c28447 in camlFfmpeg_decoder__fun_4124 () at src/core/decoder/ffmpeg_decoder.ml:1144
#11 0x0000555555c8e103 in camlDecoder__fun_2511 () at src/core/decoder/decoder.ml:302
#12 0x0000555556142e64 in camlStdlib__List__iter_508 ()
#13 0x0000555555c8dcd4 in camlDecoder__get_file_decoder_1219 () at src/core/decoder/decoder.ml:298
#14 0x0000555555cb1780 in camlRequest__local_check_1699 () at src/core/request.ml:378
#15 0x0000555555cb2cdd in camlRequest__resolve_2056 () at src/core/request.ml:632
#16 0x0000555555ad411a in camlBuiltins_request__fun_1480 () at src/core/builtins/builtins_request.ml:102
#17 0x0000555555e9969d in camlLiquidsoap_lang__Evaluation__apply_1231 () at src/lang/evaluation.ml:174
#18 0x0000555555e9aca6 in camlLiquidsoap_lang__Evaluation__eval_term_1233 () at src/lang/evaluation.ml:341
#19 0x0000555555e9ae0d in camlLiquidsoap_lang__Evaluation__eval_1234 () at src/lang/evaluation.ml:353
#20 0x0000555555e9ac31 in camlLiquidsoap_lang__Evaluation__fun_2899 () at src/lang/evaluation.ml:331
#21 0x0000555556142c00 in camlStdlib__List__map_483 ()
#22 0x0000555555e9abb8 in camlLiquidsoap_lang__Evaluation__ans_1842 () at src/lang/evaluation.ml:331
#23 0x0000555555e9aca6 in camlLiquidsoap_lang__Evaluation__eval_term_1233 () at src/lang/evaluation.ml:341
#24 0x0000555555e9ae0d in camlLiquidsoap_lang__Evaluation__eval_1234 () at src/lang/evaluation.ml:353
#25 0x0000555555e9ac31 in camlLiquidsoap_lang__Evaluation__fun_2899 () at src/lang/evaluation.ml:331
#26 0x0000555556142c00 in camlStdlib__List__map_483 ()
#27 0x0000555555e9abb8 in camlLiquidsoap_lang__Evaluation__ans_1842 () at src/lang/evaluation.ml:331
#28 0x0000555555e9aca6 in camlLiquidsoap_lang__Evaluation__eval_term_1233 () at src/lang/evaluation.ml:341
#29 0x0000555555e9ae0d in camlLiquidsoap_lang__Evaluation__eval_1234 () at src/lang/evaluation.ml:353
#30 0x0000555555e9aca6 in camlLiquidsoap_lang__Evaluation__eval_term_1233 () at src/lang/evaluation.ml:341
#31 0x0000555555e9ae0d in camlLiquidsoap_lang__Evaluation__eval_1234 () at src/lang/evaluation.ml:353
#32 0x0000555555e9aca6 in camlLiquidsoap_lang__Evaluation__eval_term_1233 () at src/lang/evaluation.ml:341
#33 0x0000555555e9ae0d in camlLiquidsoap_lang__Evaluation__eval_1234 () at src/lang/evaluation.ml:353
#34 0x0000555555e9969d in camlLiquidsoap_lang__Evaluation__apply_1231 () at src/lang/evaluation.ml:174
#35 0x00005555561814bf in camlStdlib__Fun__protect_319 ()
#36 0x0000555555e9969d in camlLiquidsoap_lang__Evaluation__apply_1231 () at src/lang/evaluation.ml:174
#37 0x0000555555e9aca6 in camlLiquidsoap_lang__Evaluation__eval_term_1233 () at src/lang/evaluation.ml:341
#38 0x0000555555e9ae0d in camlLiquidsoap_lang__Evaluation__eval_1234 () at src/lang/evaluation.ml:353
#39 0x0000555555e9aca6 in camlLiquidsoap_lang__Evaluation__eval_term_1233 () at src/lang/evaluation.ml:341
#40 0x0000555555e9ae0d in camlLiquidsoap_lang__Evaluation__eval_1234 () at src/lang/evaluation.ml:353
#41 0x0000555555e9aca6 in camlLiquidsoap_lang__Evaluation__eval_term_1233 () at src/lang/evaluation.ml:341
#42 0x0000555555e9ae0d in camlLiquidsoap_lang__Evaluation__eval_1234 () at src/lang/evaluation.ml:353
#43 0x0000555555e9969d in camlLiquidsoap_lang__Evaluation__apply_1231 () at src/lang/evaluation.ml:174
#44 0x0000555555e9aca6 in camlLiquidsoap_lang__Evaluation__eval_term_1233 () at src/lang/evaluation.ml:341
#45 0x0000555555e9ae0d in camlLiquidsoap_lang__Evaluation__eval_1234 () at src/lang/evaluation.ml:353
#46 0x0000555555e9aca6 in camlLiquidsoap_lang__Evaluation__eval_term_1233 () at src/lang/evaluation.ml:341
#47 0x0000555555e9ae0d in camlLiquidsoap_lang__Evaluation__eval_1234 () at src/lang/evaluation.ml:353
#48 0x0000555555e9969d in camlLiquidsoap_lang__Evaluation__apply_1231 () at src/lang/evaluation.ml:174
#49 0x00005555561814bf in camlStdlib__Fun__protect_319 ()
#50 0x0000555555d0426f in camlRequest_simple__fun_2656 () at src/core/sources/request_simple.ml:167
#51 0x0000555555d00355 in camlRequest_source__fun_2779 () at src/core/sources/request_source.ml:454
#52 0x0000555555d007f6 in camlRequest_source__fun_2756 () at src/core/sources/request_source.ml:441
#53 0x000055555602c83a in camlDuppy__task_1081 () at src/duppy.ml:405
#54 0x000055555602af3e in camlDuppy__fun_2633 () at src/duppy.ml:151
#55 0x000055555602bd5a in camlDuppy__exec_989 () at src/duppy.ml:279
#56 0x000055555602c238 in camlDuppy__f_1060 () at src/duppy.ml:318
#57 0x000055555602bfe5 in camlDuppy__queue_inner_2770 () at src/duppy.ml:368
#58 0x0000555555c81739 in camlTutils__process_1182 () at src/core/tools/tutils.ml:184
#59 0x00005555560f7c6b in camlThread__fun_840 ()
#60 0x00005555561edb48 in <signal handler called> ()
#61 0x00005555561ca377 in caml_callback_exn ()
#62 0x00005555561b914d in caml_thread_start ()
#63 0x00007ffff50aa9eb in  () at /usr/lib/libc.so.6
#64 0x00007ffff512e7cc in  () at /usr/lib/libc.so.6

Thread 4 (Thread 0x7fffc132f6c0 (LWP 763398) "liquidsoap"):
#0  0x00005555561edc2f in caml_callback_asm ()
#1  0x00005555561ca377 in caml_callback_exn ()
#2  0x00005555560ac0ee in enc_write_callback (encoder=<optimized out>, buffer=0x7fffa40e9338 "OggS", bytes=28, samples=<optimized out>, current_frame=<optimized out>, client_data=<optimized out>) at ../../../flac.0.5.0/_build/default/src/flac_stubs.c:671
#3  0x00007ffff771dacb in  () at /usr/lib/libFLAC.so.12
#4  0x00007ffff7710264 in  () at /usr/lib/libFLAC.so.12
#5  0x00007ffff7710ac3 in FLAC__stream_encoder_init_ogg_stream () at /usr/lib/libFLAC.so.12
#6  0x00005555560a8349 in ocaml_flac_encoder_ogg_create (comments=<optimized out>, params=<optimized out>, _enc_cb=<optimized out>, _serialno=<optimized out>) at ../../../flac.0.5.0/_build/default/src/flac_ogg_stubs.c:76
#7  0x00005555561eda8f in <signal handler called> ()
--Type <RET> for more, q to quit, c to continue without paging--
#8  0x0000555555c11065 in camlFlac_ogg__create_inner_1070 () at src/flac_ogg.ml:97
#9  0x0000555555c061a6 in camlOgg_flac_encoder__get_enc_437 () at src/core/ogg_formats/ogg_flac_encoder.ml:53
#10 0x0000555555c0622b in camlOgg_flac_encoder__header_encoder_595 () at src/core/ogg_formats/ogg_flac_encoder.ml:63
#11 0x0000555555c075dc in camlOgg_muxer__register_track_915 () at src/core/ogg_formats/ogg_muxer.ml:186
#12 0x0000555555c09758 in camlOgg_encoder__f_1612 () at src/core/encoder/encoders/ogg_encoder.ml:115
#13 0x0000555556142e64 in camlStdlib__List__iter_508 ()
#14 0x0000555555c096f0 in camlOgg_encoder__streams_start_1547 () at src/core/encoder/encoders/ogg_encoder.ml:117
#15 0x0000555555c09809 in camlOgg_encoder__encode_1548 () at src/core/encoder/encoders/ogg_encoder.ml:122
#16 0x0000555555c96668 in camlEncoder__encode_1470 () at src/core/tools/tutils.ml:114
#17 0x0000555555cd7bde in camlOutput__output_chunks_2105 () at src/core/outputs/output.ml:238
#18 0x0000555555cd5740 in camlOutput__fun_2409 () at src/core/outputs/output.ml:180
#19 0x0000555555ca482b in camlClock__fun_2445 () at src/core/clock.ml:318
#20 0x0000555556142f78 in camlStdlib__List__fold_left_522 ()
#21 0x0000555555ca138f in camlClock__fun_2387 () at src/core/clock.ml:315
#22 0x0000555555ca44fd in camlClock__loop_1225 () at src/core/clock.ml:277
#23 0x0000555555ca198f in camlClock__fun_2353 () at src/core/clock.ml:280
#24 0x0000555555c81739 in camlTutils__process_1182 () at src/core/tools/tutils.ml:184
#25 0x00005555560f7c6b in camlThread__fun_840 ()
#26 0x00005555561edb48 in <signal handler called> ()
#27 0x00005555561ca377 in caml_callback_exn ()
#28 0x00005555561b914d in caml_thread_start ()
#29 0x00007ffff50aa9eb in  () at /usr/lib/libc.so.6
#30 0x00007ffff512e7cc in  () at /usr/lib/libc.so.6

Thread 3 (Thread 0x7fffc21066c0 (LWP 763395) "liquidsoap"):
#0  0x00007ffff512c1ac in select () at /usr/lib/libc.so.6
#1  0x00005555561b8456 in caml_thread_tick ()
#2  0x00007ffff50aa9eb in  () at /usr/lib/libc.so.6
#3  0x00007ffff512e7cc in  () at /usr/lib/libc.so.6

Thread 2 (Thread 0x7fffc29076c0 (LWP 763394) "liquidsoap"):
#0  0x00007ffff50a74ae in  () at /usr/lib/libc.so.6
#1  0x00007ffff50a9d40 in pthread_cond_wait () at /usr/lib/libc.so.6
#2  0x00005555561e87a6 in caml_ml_condition_wait ()
#3  0x00005555561eda8f in <signal handler called> ()
#4  0x00005555560f450e in camlDtools__Dtools_impl__fun_2843 () at src/dtools_impl.ml:747
#5  0x00005555560f429d in camlDtools__Dtools_impl__mutexify_1617 () at src/dtools_impl.ml:715
#6  0x00005555560f44a2 in camlDtools__Dtools_impl__f_1637 () at src/dtools_impl.ml:743
#7  0x00005555560f7c6b in camlThread__fun_840 ()
#8  0x00005555561edb48 in <signal handler called> ()
#9  0x00005555561ca377 in caml_callback_exn ()
#10 0x00005555561b914d in caml_thread_start ()
#11 0x00007ffff50aa9eb in  () at /usr/lib/libc.so.6
#12 0x00007ffff512e7cc in  () at /usr/lib/libc.so.6

Thread 1 (Thread 0x7fffe648ee40 (LWP 763326) "liquidsoap"):
#0  0x00007ffff5120f6f in poll () at /usr/lib/libc.so.6
#1  0x00005555560dd421 in poll (__timeout=-1, __nfds=1, __fds=0x555556a03c90) at /usr/include/bits/poll2.h:39
#2  caml_poll (_read=<optimized out>, _write=<optimized out>, _err=<optimized out>, _timeout=<optimized out>) at ../../../duppy.0.9.3/_build/default/src/duppy_stubs.c:95
#3  0x00005555561eda8f in <signal handler called> ()
#4  0x000055555602a4f6 in camlDuppy__poll_486 () at src/duppy.ml:37
#5  0x0000555555c81389 in camlTutils__wait_for_done_1118 () at src/core/tools/tutils.ml:166
#6  0x0000555555c81274 in camlTutils__wait_done_1116 () at src/core/tools/tutils.ml:169
#7  0x0000555555c82cfb in camlTutils__main_1520 () at src/core/tools/tutils.ml:354
#8  0x0000555556142e64 in camlStdlib__List__iter_508 ()
#9  0x0000555555c6965a in camlLifecycle__action_435 () at src/core/tools/lifecycle.ml:44
#10 0x0000555556142e64 in camlStdlib__List__iter_508 ()
#11 0x0000555556142e64 in camlStdlib__List__iter_508 ()
#12 0x0000555556142e64 in camlStdlib__List__iter_508 ()
#13 0x0000555555ab3a7a in camlDune__exe__Liquidsoap__entry () at src/runtime/runner.default.ml:25
#14 0x0000555555aaa55b in caml_program ()
#15 0x00005555561edb48 in <signal handler called> ()
#16 0x00005555561ed507 in caml_startup_common ()
#17 0x00005555561ed57f in caml_main ()
#18 0x0000555555aa7361 in main ()

@toots
Copy link
Member

toots commented Nov 9, 2023

Thanks! Did you also get the top-level error? This would indicate which thread did generate the segfault!

@Parakovsky
Copy link
Author

Not sure if anything else was there, I already closed the terminal but I will be happy to retry the procedure if needed.

@toots
Copy link
Member

toots commented Nov 9, 2023

Right before you type thread apply all bt there should be another line printing out the thread number and error. I'm pretty sure it was thread #4 in the trace but it would be nice to confirm.

@Parakovsky
Copy link
Author

Parakovsky commented Nov 9, 2023 via email

@toots
Copy link
Member

toots commented Nov 9, 2023

Ha! Ok since you've installed with opam you might be able to test the fix right away:

git clone https://github.com/savonet/ocaml-flac.git
cd ocaml-flac
git checkout generational-global-root
opam install -y .

This should install the fixed ocaml-flac and rebuild liquidsoap to use it.

Then you can confirm if that works for you!

@Parakovsky
Copy link
Author

Parakovsky commented Nov 9, 2023 via email

@toots
Copy link
Member

toots commented Nov 9, 2023

Excellent. I'll release an updated binding soon. Thanks for working with me on this one!

@Parakovsky
Copy link
Author

Hi, I don't know if I should reopen this issue or issue a new one, I now got the random core dumped errors which quits the whole program. I don't know what else besides encoder it might be related (pretty basic setup) and I only have ogg flac container enabled, and nothing else. I can test it the other way by distributing trough different containers and see if any other when working solo will produce that fatal core dump error, ah yes the issue is happening while decoder try to decode the next track, first time I thought it was particular artist, now I think it ain't that. It also might be replaygain calculation actually, anyway, what would be the process for me to debug it, to run it inside gdb and log errors that happens when it suddenly quits?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants