Skip to content

VLC3: Crash when playing an interlaced video with certain video filters loaded

When playing an interlaced video with certain video filters - VLC crashes, but with it disabled - VLC plays it correctly.

Environment:

  • VLC 3.0.21
  • Linux x86_64
  • Intel iGPU, no dedicated GPU

Steps to reproduce:

  1. Set VLC hardware-accelerated decoding to Disable
  2. Enable the built-in "FPS conversion video filter" (no other video filters are enabled)
  3. Restart VLC
  4. Play McCartney-MPEG2_1080-interlaced_sample.mkv interlaced video from this forum post
  5. Observe the crash

Syslog contains:

Jan 24 08:15:14 debian kernel: [769976.274648] vlc[2385030]: segfault at 10 ip 00007fa6342ab1eb sp 00007fa6343b47a0 error 4 in libgl_plugin.so[7fa6342a2000+c000]

Here is the VLC log: vlc-fps.log


It's also reproducible using an out-of-tree dummy video filter plugin that doesn't do anything:

#include <vlc_common.h>
#include <vlc_filter.h>
#include <vlc_plugin.h>

static int Create(vlc_object_t *);
static void Destroy(vlc_object_t *);

vlc_module_begin()
    set_description("Noop video filter")
    set_shortname("Noop video filter")
    set_capability("video filter", 0)
    set_category(CAT_VIDEO)
    set_subcategory(SUBCAT_VIDEO_VFILTER)
    set_callbacks(Create, Destroy)
vlc_module_end()

static picture_t *filter(filter_t *p_filter, picture_t *p_pic_in)
{
    // don't filter anything, return as it is
    return p_pic_in;
}

static int Create(vlc_object_t *p_this)
{
    filter_t *p_filter = (filter_t *)p_this;
    
    if (p_filter->fmt_out.video.i_chroma != p_filter->fmt_in.video.i_chroma) {
        msg_Err(p_filter, "this filter doesn't do video conversion");
        return VLC_EGENERIC;
    }
    
    p_filter->pf_video_filter = filter;
    return VLC_SUCCESS;
}

static void Destroy(vlc_object_t *p_this)
{
}

vlc-noop.log

Edited by nurupo
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information