pesintta / vdr-plugin-vaapidevice

VDR VAAPIDevice Plug-in
9 stars 12 forks source link

Crash on playback #120

Open dnehring7 opened 6 years ago

dnehring7 commented 6 years ago

vdr crashes deterministically when starting a playback under the following circumstances:

the current channel is deinterlaced by vaapi (for me: motion-compensated). Instanty, after starting a playbay, vaapidevice crashes. If I disable deinterlacing, everything works. Attached is a backtrace and the system info:

BACKTRACE

Thread 14 "vaapi video" received signal SIGSEGV, Segmentation fault.
[Switching to LWP 9116]
0x00007fd431b14a01 in ?? () from /lib64/libdrm_intel.so.1
(gdb) bt
#0  0x00007fd431b14a01 in  () at /lib64/libdrm_intel.so.1
#1  0x00007fd431dcaec5 in intel_batchbuffer_emit_reloc64 ()
    at /usr/lib64/dri/i965_drv_video.so
#2  0x00007fd431d817df in bdw_veb_dndi_iecp_command ()
    at /usr/lib64/dri/i965_drv_video.so
#3  0x00007fd431d819f0 in gen8_vebox_process_picture ()
    at /usr/lib64/dri/i965_drv_video.so
#4  0x00007fd431d7c550 in gen75_proc_picture ()
    at /usr/lib64/dri/i965_drv_video.so
#5  0x00007fd46c750d44 in vaEndPicture () at /lib64/libva.so.2
#6  0x00007fd44d357000 in VaapiPostprocessSurface (ctx=33554433, src=<optimized out>, dst=67108895, filters=filters@entry=0x7fd4267fb5f0, num_filters=<optimized out>, filter_flags=filter_flags@entry=40, pipeline_flags=0, frefs=0x55c51bf9bd70, num_frefs=1, brefs=0x7fd40c000c40, num_brefs=0) at video.c:1721
#7  0x00007fd44d357e71 in VaapiPostprocessSurface (num_brefs=0, brefs=<optimized out>, num_frefs=1, frefs=<optimized out>, pipeline_flags=0, filter_flags=40, num_filters=<optimized out>, filters=0x7fd4267fb5f0, dst=<optimized out>, src=<optimized out>, ctx=<optimized out>) at video.c:1681
#8  0x00007fd44d357e71 in VaapiApplyFilters (decoder=decoder@entry=0x55c51b4c3050, top_field=<optimized out>) at video.c:1875
#9  0x00007fd44d358281 in VaapiQueueSurface (
    decoder=decoder@entry=0x55c51b4c3050, surface=surface@entry=67108867, softdec=0) at video.c:3083
#10 0x00007fd44d358e7f in VaapiRenderFrame (decoder=decoder@entry=0x55c51b4c3050, video_ctx=video_ctx@entry=0x7fd40c018080, frame=frame@entry=0x7fd40c09b900)
    at video.c:3332
#11 0x00007fd44d359b79 in VaapiSyncRenderFrame (decoder=0x55c51b4c3050, video_ctx=0x7fd40c018080, frame=0x7fd40c09b900) at video.c:3850
#12 0x00007fd44d360d43 in CodecVideoDecode (decoder=0x55c51fc7c270, avpkt=avpkt@entry=0x7fd44d572b20 <MyVideoStream+13344>) at codec.c:284
#13 0x00007fd44d351d11 in VideoDecodeInput (stream=0x7fd44d56f700 <MyVideoStream>) at vaapidev.c:963
#14 0x00007fd44d35690d in VaapiDisplayHandlerThread () at video.c:3929
#15 0x00007fd44d35c184 in VideoDisplayHandlerThread (dummy=<optimized out>)
    at video.c:4555
#16 0x00007fd4743c7594 in  () at /lib64/libpthread.so.0
#17 0x00007fd472a13fdf in clone () at /lib64/libc.so.6
(gdb) frame 6
#6  0x00007fd44d357000 in VaapiPostprocessSurface (ctx=33554433,
    src=<optimized out>, dst=67108895, filters=filters@entry=0x7fd4267fb5f0,
    num_filters=<optimized out>, filter_flags=filter_flags@entry=40,
    pipeline_flags=0, frefs=0x55c51bf9bd70, num_frefs=1, brefs=0x7fd40c000c40,
    num_brefs=0) at video.c:1721
1721        vaEndPicture(VaDisplay, ctx);
(gdb) frame 7
#7  0x00007fd44d357e71 in VaapiPostprocessSurface (num_brefs=0,
    brefs=<optimized out>, num_frefs=1, frefs=<optimized out>,
    pipeline_flags=0, filter_flags=40, num_filters=<optimized out>,
    filters=0x7fd4267fb5f0, dst=<optimized out>, src=<optimized out>,
    ctx=<optimized out>) at video.c:1681
1681        if (src == VA_INVALID_ID || dst == VA_INVALID_ID || src == dst)
(gdb) frame 8
#8  VaapiApplyFilters (decoder=decoder@entry=0x55c51b4c3050,
    top_field=<optimized out>) at video.c:1875
1875            VaapiPostprocessSurface(decoder->vpp_ctx, decoder->PlaybackSurface, *surface, filters_to_run, filter_count,
(gdb) frame 9
#9  0x00007fd44d358281 in VaapiQueueSurface (
    decoder=decoder@entry=0x55c51b4c3050, surface=surface@entry=67108867,
    softdec=0) at video.c:3083
3083        firstfield = VaapiApplyFilters(decoder, decoder->TopFieldFirst ? 1 : 0);
(gdb) frame 10
#10 0x00007fd44d358e7f in VaapiRenderFrame (
    decoder=decoder@entry=0x55c51b4c3050,
    video_ctx=video_ctx@entry=0x7fd40c018080, frame=frame@entry=0x7fd40c09b900)
    at video.c:3332
3332            VaapiQueueSurface(decoder, surface, 0);
(gdb) frame 11
#11 0x00007fd44d359b79 in VaapiSyncRenderFrame (decoder=0x55c51b4c3050,
    video_ctx=0x7fd40c018080, frame=0x7fd40c09b900) at video.c:3850
3850        VaapiRenderFrame(decoder, video_ctx, frame);
(gdb) frame 12
#12 0x00007fd44d360d43 in CodecVideoDecode (decoder=0x55c51fc7c270,
    avpkt=avpkt@entry=0x7fd44d572b20 <MyVideoStream+13344>) at codec.c:284
284                 VideoRenderFrame(decoder->HwDecoder, video_ctx, frame);

VAAPIDEVICE SYSTEM INFORMATION REPORT

inxi
System:    Kernel: 4.16.11-300.fc28.x86_64 x86_64 bits: 64 gcc: 8.1.1
           Desktop: Openbox 3.6.1 Distro: Fedora release 28 (Twenty Eight)
Machine:   Device: desktop Mobo: Intel model: NUC5PPYB v: H76558-102 serial: N/A
           UEFI [Legacy]: Intel v: PYBSWCEL.86A.0069.2018.0314.1745 date: 03/14/2018
CPU:       Quad core Intel Pentium N3700 (-MCP-)
           arch: Airmont rev.3 cache: 1024 KB
           flags: (lm nx sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx) bmips: 12800
           clock speeds: max: 2400 MHz 1: 1854 MHz 2: 1117 MHz 3: 991 MHz
           4: 963 MHz
Graphics:  Card: Intel Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller
           bus-ID: 00:02.0
           Display Server: X.org 119.6 driver: modesetting
           Resolution: 1920x1080@50.00hz
           OpenGL: renderer: Mesa DRI Intel HD Graphics 405 (Braswell)
           version: 4.5 Mesa 18.0.2 Direct Render: Yes
Audio:     Card Intel Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series High Def. Audio Controller
           driver: snd_hda_intel bus-ID: 00:1b.0
           Sound: ALSA v: k4.16.11-300.fc28.x86_64
vainfo
vainfo: VA-API version: 1.1 (libva 2.1.0)
vainfo: Driver version: Intel i965 driver for Intel(R) CherryView - 2.1.0
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Simple            : VAEntrypointEncSlice
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileH264MultiviewHigh      : VAEntrypointVLD
      VAProfileH264MultiviewHigh      : VAEntrypointEncSlice
      VAProfileH264StereoHigh         : VAEntrypointVLD
      VAProfileH264StereoHigh         : VAEntrypointEncSlice
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileJPEGBaseline           : VAEntrypointVLD
      VAProfileJPEGBaseline           : VAEntrypointEncPicture
      VAProfileVP8Version0_3          : VAEntrypointVLD
      VAProfileVP8Version0_3          : VAEntrypointEncSlice
      VAProfileHEVCMain               : VAEntrypointVLD
ffmpeg
ffmpeg version N-90340-g32dbee4462 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 8 (GCC)
libavutil      56. 10.100 / 56. 10.100
libavcodec     58. 14.100 / 58. 14.100
libavformat    58. 10.100 / 58. 10.100
libavdevice    58.  2.100 / 58.  2.100
libavfilter     7. 13.100 /  7. 13.100
libswscale      5.  0.102 /  5.  0.102
libswresample   3.  0.101 /  3.  0.101
libpostproc    55.  0.100 / 55.  0.100
gcc
8
svdrpsend
220 nuc.home.loc SVDRP VideoDiskRecorder 2.4.0; Sun May 27 19:00:35 2018; UTF-8
900- Frames: missed(0) duped(21958) dropped(20) total(16158) PTS( 3:15:53.248) drift(54) audio(447) video(0)
900- Video: h264/vaapi_vld 1920x1080i 16:9 @ 1920x1080 - Intel i965 driver for Intel(R) CherryView - 2.1.0
900- Audio: ac3 48000Hz 2 channels
900 Command: vaapidevice -a pcm.51to20 -f -d :0.0
221 nuc.home.loc closing connection
INCLUDE THIS REPORT INTO YOUR GITHUB ISSUE

Dirk

Quantomax commented 6 years ago

Works for me, as far as it didn't crash instantly. Nevertheless the video isn't viewable most of the time (bad flicker / wrong sequence)

Maybe my (work-in-progress) patches will help...

Stefan FixPtsLog.patch.gz speedupdown.patch.gz