I can reproduce the crash , with a file without audio :
[#0](https://code.videolan.org/videolan/vlc/-/issues/0) 0xb786c1b2 in filter_chain_AppendFilterInternal (p_chain=0x0, psz_name=0x0, p_cfg=0x0, p_fmt_in=0x0, p_fmt_out=0xb4932db4) at misc/filter_chain.c:296296 vlc_custom_create( p_chain->p_this, sizeof(*p_chained),(gdb) bt[#0](https://code.videolan.org/videolan/vlc/-/issues/0) 0xb786c1b2 in filter_chain_AppendFilterInternal (p_chain=0x0, psz_name=0x0, p_cfg=0x0, p_fmt_in=0x0, p_fmt_out=0xb4932db4) at misc/filter_chain.c:296[#1](https://code.videolan.org/videolan/vlc/-/issues/1) 0xb786be54 in filter_chain_AppendFilter (p_chain=0x0, psz_name=0x0, p_cfg=0x0, p_fmt_in=0x0, p_fmt_out=0xb4932db4) at misc/filter_chain.c:178[#2](https://code.videolan.org/videolan/vlc/-/issues/2) 0xb55f10d6 in transcode_audio_filter_chain_build (p_stream=0x8669bb8, p_chain=0x0, p_dst=0xb4932f78, p_src=0xb49330b0) at audio.c:143[#3](https://code.videolan.org/videolan/vlc/-/issues/3) 0xb55f18f5 in transcode_audio_new (p_stream=0x8669bb8, id=0x87c1230) at audio.c:286[#4](https://code.videolan.org/videolan/vlc/-/issues/4) 0xb55f2164 in transcode_audio_add (p_stream=0x8669bb8, p_fmt=0x87be808, id=0x87c1230) at audio.c:438[#5](https://code.videolan.org/videolan/vlc/-/issues/5) 0xb55ef8f2 in Add (p_stream=0x8669bb8, p_fmt=0x87be808) at transcode.c:584[#6](https://code.videolan.org/videolan/vlc/-/issues/6) 0xb787689c in sout_InputNew (p_sout=0x86686b8, p_fmt=0x87be808) at stream_output/stream_output.c:227[#7](https://code.videolan.org/videolan/vlc/-/issues/7) 0xb77f65ab in DecoderProcessSout (p_dec=0x87be470, p_block=0x0) at input/decoder.c:1755[#8](https://code.videolan.org/videolan/vlc/-/issues/8) 0xb77f6dc5 in DecoderProcess (p_dec=0x87be470, p_block=0x87c1b90) at input/decoder.c:1980[#9](https://code.videolan.org/videolan/vlc/-/issues/9) 0xb77f4303 in DecoderThread (p_this=0x87be470) at input/decoder.c:892[#10](https://code.videolan.org/videolan/vlc/-/issues/10) 0xb7857fc6 in thread_entry (data=0x87c0dd0) at misc/threads.c:58[#11](https://code.videolan.org/videolan/vlc/-/issues/11) 0xb772250f in start_thread () from /lib/tls/i686/cmov/libpthread.so.0[#12](https://code.videolan.org/videolan/vlc/-/issues/12) 0xb769ba0e in clone () from /lib/tls/i686/cmov/libc.so.6
and this always segfaults, i also tried other filters (mono, normalizer)
and the problem seems to come from : modules/stream_out/transcode/audio.c (line 286)
Here is the back trace :
(gdb) bt
#0 filter_chain_AppendFilterInternal (p_chain=0x0, psz_name=0x0, p_cfg=0x0,
p_fmt_in=0x0, p_fmt_out=0x7fd4587c4850) at misc/filter_chain.c:296
#1 (closed) 0x00007fd4753baaf6 in filter_chain_AppendFilter (p_chain=0x0,
psz_name=0x0, p_cfg=0x0, p_fmt_in=0x0, p_fmt_out=0x7fd4587c4850)
at misc/filter_chain.c:176
#2 (closed) 0x00007fd45aa23721 in transcode_audio_filter_chain_build (
p_stream=0x1839f98, p_chain=0x0, p_dst=0x7fd4587c49f0,
p_src=) at audio.c:143
#3 (closed) 0x00007fd45aa23b8b in transcode_audio_new (p_stream=0x1839f98,
id=0x18d1e40) at audio.c:284
#4 0x00007fd45aa23e5a in transcode_audio_add (p_stream=0x1839f98,
p_fmt=0x18406d0, id=0x18d1e40) at audio.c:444
#5 (closed) 0x00007fd45aa22998 in Add (p_stream=0x1839f98, p_fmt=0x18406d0)
at transcode.c:584
#6 (closed) 0x00007fd4753c42fb in sout_InputNew (p_sout=0x18357c8, p_fmt=0x18406d0)
at stream_output/stream_output.c:227
#7 (closed) 0x00007fd4753589ba in DecoderProcessSout (p_dec=0x1840248,
p_block=) at input/decoder.c:1756
#8 (closed) DecoderProcess (p_dec=0x1840248, p_block=)
at input/decoder.c:1980
#9 (closed) 0x00007fd47535914b in DecoderThread (p_this=)
at input/decoder.c:892
#10 (closed) 0x00007fd4753a8484 in thread_entry (data=)
at misc/threads.c:58
#11 (closed) 0x00007fd4750fc9ca in start_thread () from /lib/libpthread.so.0
#12 (closed) 0x00007fd474c5570d in clone () from /lib/libc.so.6
#13 (closed) 0x0000000000000000 in ?? ()
it seems that it is passing p_chain=NULL and it gets segfaulted :
the code is something like this :
/* Load user specified audio filters */
if( p_sys->psz_af )
{
es_format_t fmt_fl32 = fmt_last;
fmt_fl32.i_codec =
fmt_fl32.audio.i_format = VLC_CODEC_FL32;
// <------ Here the sgfault : id->p_uf_chain==NULL ------>
if( transcode_audio_filter_chain_build( p_stream, id->p_uf_chain,
&fmt_fl32, &fmt_last ) )
{
transcode_audio_close( id );
return VLC_EGENERIC;
}
fmt_last = fmt_fl32;
i tried to change the line orders but i didnt succeed :
it requires more knowledge and less random actions :)
as far as i understand there must e the call to filter_chain_New before the transcode_audio_filter_chain_build.