Skip to content

[Bug]: Mpv crash when using intel vaapi hwdec #1983

@Kumoko4

Description

@Kumoko4

Which component impacted?

Decode

Is it regression? Good in old configuration?

None

What happened?

Launching a video in mpv with hwdec=auto-safe(in my case) leads to rare random segfaults with no particular pattern i noticed. I don't know if it's a regression or not since i only recently bough this GPU. Since crash is rare and i don't launch every video i watch with "export LIBVA_TRACE=/tmp/libva_trace.log mpv" i can't provide that log. I hope what i provided is enough to fix it.

What's the usage scenario when you are seeing the problem?

Playback

What impacted?

Regular playback of videos using hardware decoding e.g. mpv.

Debug Information

ls /dev/dri

by-path  card0  renderD128

dnf info libva libva-utils intel-gmmlib intel-media-driver | grep -E "Name|Version"

Name            : intel-gmmlib
Version         : 22.8.2
Name            : intel-media-driver
Version         : 25.3.4
Name            : libva
Version         : 2.22.0
Name            : libva
Version         : 2.22.0
Name            : libva-utils
Version         : 2.22.0
Name           : intel-gmmlib
Version        : 22.8.2
Name           : intel-media-driver
Version        : 25.3.4

vainfo >vainfo.log 2>&1

libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib64/dri-nonfree/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
Trying display: wayland
vainfo: VA-API version: 1.22 (libva 2.22.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 25.3.4 ()
vainfo: Supported profile and entrypoints
      VAProfileNone                   :	VAEntrypointVideoProc
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointEncSlice
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointEncSlice
      VAProfileJPEGBaseline           :	VAEntrypointVLD
      VAProfileJPEGBaseline           :	VAEntrypointEncPicture
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSlice
      VAProfileVP8Version0_3          :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointEncSlice
      VAProfileHEVCMain10             :	VAEntrypointVLD
      VAProfileHEVCMain10             :	VAEntrypointEncSlice
      VAProfileVP9Profile0            :	VAEntrypointVLD
      VAProfileVP9Profile1            :	VAEntrypointVLD
      VAProfileVP9Profile2            :	VAEntrypointVLD
      VAProfileVP9Profile3            :	VAEntrypointVLD
      VAProfileHEVCMain12             :	VAEntrypointVLD
      VAProfileHEVCMain422_10         :	VAEntrypointVLD
      VAProfileHEVCMain422_10         :	VAEntrypointEncSlice
      VAProfileHEVCMain422_12         :	VAEntrypointVLD
      VAProfileHEVCMain444            :	VAEntrypointVLD
      VAProfileHEVCMain444            :	VAEntrypointEncSlice
      VAProfileHEVCMain444_10         :	VAEntrypointVLD
      VAProfileHEVCMain444_10         :	VAEntrypointEncSlice
      VAProfileHEVCMain444_12         :	VAEntrypointVLD
      VAProfileHEVCSccMain            :	VAEntrypointVLD
      VAProfileHEVCSccMain            :	VAEntrypointEncSlice
      VAProfileHEVCSccMain10          :	VAEntrypointVLD
      VAProfileHEVCSccMain10          :	VAEntrypointEncSlice
      VAProfileHEVCSccMain444         :	VAEntrypointVLD
      VAProfileHEVCSccMain444         :	VAEntrypointEncSlice
      VAProfileAV1Profile0            :	VAEntrypointVLD
      VAProfileAV1Profile0            :	VAEntrypointEncSlice
      VAProfileHEVCSccMain444_10      :	VAEntrypointVLD
      VAProfileHEVCSccMain444_10      :	VAEntrypointEncSlice

lspci -nn | grep -Ei 'VGA|DISPLAY'

03:00.0 VGA compatible controller [0300]: Intel Corporation Battlemage G21 [Arc B580] [8086:e20b]

Crash in dmesg:

 [106821.934212] vo[196716]: segfault at 10 ip 00007fb8bd45a40c sp 00007fb8c77f2f28 error 4 in iHD_drv_video.so[85a40c,7fb8bcc00000+a72000] likely on CPU 5 (core 5, socket 0)
[106821.934229] Code: 00 00 00 48 8d 3d 6d b9 23 00 e8 1f 34 81 ff eb bb 0f 1f 44 00 00 b8 05 00 00 00 c3 66 90 f3 0f 1e fa 48 8b 47 50 48 8b 40 60 <48> 8b 50 10 48 85 d2 74 33 8b 12 8b 40 1c 89 d1 29 c1 39 c2 72 06

Backtrace:

#0  MediaStatusReport::GetCompletedCount (this=<optimized out>, this=<optimized out>) at /usr/src/debug/intel-media-driver-25.3.4-1.fc43.x86_64/media_softlet/agnostic/common/shared/statusreport/media_status_report.h:174
No locals.
#1  decode::AvcPipelineXe_Lpm_Plus_Base::GetCompletedReport (this=0x558e9e6aa6f0)
    at /usr/src/debug/intel-media-driver-25.3.4-1.fc43.x86_64/media_softlet/agnostic/Xe_M_plus/Xe_LPM_plus_base/codec/hal/dec/avc/pipeline/decode_avc_pipeline_xe_lpm_plus_base.cpp:77
        trace = <optimized out>
        completedCount = <optimized out>
        reportedCount = <optimized out>
        __FUNCTION__ = <optimized out>
#2  DecodeAvcPipelineAdapterXe2_Hpm::GetCompletedReport (this=0x558e9e142080)
    at /usr/src/debug/intel-media-driver-25.3.4-1.fc43.x86_64/media_softlet/agnostic/Xe_M_plus/Xe2_HPM/codec/hal/dec/avc/pipeline/decode_avc_pipeline_adapter_xe2_hpm.cpp:124
No locals.
#3  0x00007fb8bceb6f67 in DdiDecodeFunctions::StatusReport (this=this@entry=0x7fb8b82a5ca0, mediaCtx=mediaCtx@entry=0x7fb8b80b1650, decoder=0x558e9e142080, surface=surface@entry=0x558e9de69f40)
    at /usr/src/debug/intel-media-driver-25.3.4-1.fc43.x86_64/media_softlet/linux/common/codec/ddi/dec/ddi_decode_functions.cpp:1049
        uNumCompletedReport = <optimized out>
#4  0x00007fb8bcebc7ff in DdiDecodeFunctions::StatusCheck (this=0x7fb8b82a5ca0, mediaCtx=0x7fb8b80b1650, surface=0x558e9de69f40, surfaceId=<optimized out>)
    at /usr/src/debug/intel-media-driver-25.3.4-1.fc43.x86_64/media_softlet/linux/common/codec/ddi/dec/ddi_decode_functions.cpp:1031
        i = 0
        decCtx = 0x558e9e329c80
        guard = {m_pMutex = 0x7fb8b80b1738}
        codecHal = <optimized out>
        decoder = <optimized out>
#5  0x00007fb934de68ba in vaSyncSurface (dpy=dpy@entry=0x7fb8b8059b30, render_target=<optimized out>) at ../va/va.c:1668
        va_status = 32697
        ctx = <optimized out>
        __func__ = "vaSyncSurface"
#6  0x0000558e89312dfe in mapper_map (mapper=0x7fb8b80ad4d0) at ../video/out/hwdec/hwdec_vaapi.c:321
        p_owner = 0x7fb8b8052070
        p = 0x7fb8b82a5d80
        status = 0
        display = 0x7fb8b8059b30
        desc = {fourcc = 842094158, width = 1920, height = 1088, num_objects = 1, objects = {{fd = 38, size = 3194880, drm_format_modifier = 72057594037927945}, {fd = 0, size = 0, drm_format_modifier = 0}, {fd = 0, size = 0, 
              drm_format_modifier = 0}, {fd = 0, size = 0, drm_format_modifier = 0}}, num_layers = 2, layers = {{drm_format = 538982482, num_planes = 1, object_index = {0, 0, 0, 0}, offset = {0, 0, 0, 0}, pitch = {1920, 0, 0, 0}}, {
              drm_format = 943215175, num_planes = 1, object_index = {0, 0, 0, 0}, offset = {2088960, 0, 0, 0}, pitch = {1920, 0, 0, 0}}, {drm_format = 0, num_planes = 0, object_index = {0, 0, 0, 0}, offset = {0, 0, 0, 0}, pitch = {0, 0, 
                0, 0}}, {drm_format = 0, num_planes = 0, object_index = {0, 0, 0, 0}, offset = {0, 0, 0, 0}, pitch = {0, 0, 0, 0}}}}
        flags = <optimized out>
        num_returned_planes = <optimized out>
#7  0x0000558e8928300a in ra_hwdec_mapper_map (mapper=0x7fb8b80ad4d0, img=0x558e9e25f650) at ../video/out/gpu/hwdec.c:172
No locals.
#8  0x0000558e892909cc in pass_upload_image (p=p@entry=0x7fb8b8154620, mpi=0x558e9e25f650, id=7252) at ../video/out/gpu/video.c:3725
        ok = <optimized out>
        perf = {last = 7516188671, avg = 2, peak = 30292, samples = {0, 0, 0, 1296236549, 140432881901664, 88, 0, 0, 0, 3, 2061584302080, 540, 0 <repeats 155 times>, 1, 1, 34359738368, 68719476864, 4294967304, 9277129363200, 4294967297, 
            9277129363200, 4294967297, 4294967297, 66846720, 131941395337216, 4294969456, 1, 33554625, 140431338775808, 0, 8589934592, 0 <repeats 19 times>, 4, 0, 1065353216, 0, 0, 0, 0, 1, 128, 1, 1, 30292, 0, 0, 0, 1, 0, 
            4575657221408423936, 0 <repeats 12 times>, 4294967296, 4294967297, 0, 0, 0, 0, 0, 140431340596776, 0, 0, 0, 0, 17483940831167051520, 1, 0, 140430867864608, 140431343684608, 0, 140433492934080, 140431597715824, 140431568536873, 
            1}, count = 0}
        vimg = 0x7fb8b8154c70
        using_pbo = <optimized out>
        mode = <optimized out>
        perf = {last = 7516188671, avg = 2, peak = 30292, samples = {0, 0, 0, 1296236549, 140432881901664, 88, 0, 0, 0, 3, 2061584302080, 540, 0 <repeats 155 times>, 1, 1, 34359738368, 68719476864, 4294967304, 9277129363200, 4294967297, 
            9277129363200, 4294967297, 4294967297, 66846720, 131941395337216, 4294969456, 1, 33554625, 140431338775808, 0, 8589934592, 0 <repeats 19 times>, 4, 0, 1065353216, 0, 0, 0, 0, 1, 128, 1, 1, 30292, 0, 0, 0, 1, 0, 
            4575657221408423936, 0 <repeats 12 times>, 4294967296, 4294967297, 0, 0, 0, 0, 0, 140431340596776, 0, 0, 0, 0, 17483940831167051520, 1, 0, 140430867864608, 140431343684608, 0, 140433492934080, 140431597715824, 140431568536873, 
            1}, count = 0}
        __PRETTY_FUNCTION__ = "pass_upload_image"
#9  0x0000558e89299f3b in pass_render_frame (p=p@entry=0x7fb8b8154620, mpi=<optimized out>, id=<optimized out>, flags=flags@entry=11) at ../video/out/gpu/video.c:3070
        vpts = <optimized out>
        vp_w = <optimized out>
        vp_h = <optimized out>
#10 0x0000558e8929c68f in gl_video_render_frame (p=0x7fb8b8154620, frame=0x7fb8952fe4e0, fbo=0x7fb8c77f4bc0, flags=11) at ../video/out/gpu/video.c:3452
        repeats = <optimized out>
        r = <optimized out>
        dest_fbo = <optimized out>
        fmt = <optimized out>
        is_new = <optimized out>
        src = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--
        dst = <optimized out>
        perf = <optimized out>
        interpolate = <optimized out>
        target_rc = {x0 = 0, y0 = 0, x1 = 3840, y1 = 2160}
        has_frame = true
        c = <optimized out>
        clear_color = {0, 0, 0, 1}
#11 0x0000558e892a0a80 in draw_frame (vo=0x558e9ddf86e0, frame=0x7fb8952fe4e0) at ../video/out/vo_gpu.c:82
        p = 0x558e9deff8a0
        sw = 0x7fb8b809c130
        fbo = {tex = 0x7fb8b8078aa0, flip = false, color_space = {primaries = PL_COLOR_PRIM_UNKNOWN, transfer = PL_COLOR_TRC_UNKNOWN, hdr = {prim = {red = {x = 0, y = 0}, green = {x = 0, y = 0}, blue = {x = 0, y = 0}, white = {x = 0, 
                  y = 0}}, min_luma = 0, max_luma = 0, max_cll = 0, max_fall = 0, scene_max = {0, 0, 0}, scene_avg = 0, ootf = {target_luma = 0, knee_x = 0, knee_y = 0, anchors = {0 <repeats 15 times>}, num_anchors = 0 '\000'}, 
              max_pq_y = 0, avg_pq_y = 0}}}
        params = <optimized out>
#12 0x0000558e892a6a18 in render_frame (vo=0x558e9ddf86e0) at ../video/out/vo.c:1010
        prev_drop_count = 0
        can_queue = false
        vsync = {last_queue_display_time = 106821, vsync_duration = 812079623, skipped_vsyncs = -1}
        in = <optimized out>
        frame = <optimized out>
        more_frames = false
        now = <optimized out>
        pts = <optimized out>
        duration = <optimized out>
        end_time = <optimized out>
        target = 201889618813
        use_vsync = <optimized out>
        request_redraw = false
        __PRETTY_FUNCTION__ = <optimized out>
#13 vo_thread (ptr=<optimized out>) at ../video/out/vo.c:1146
        working = <optimized out>
        wait_until = <optimized out>
        wakeup_on_done = <optimized out>
        send_reset = <optimized out>
        now = <optimized out>
        wakeup_core_after = <optimized out>
        redraw = <optimized out>
        send_pause = <optimized out>
        vo = <optimized out>
        in = <optimized out>
        vo_paused = false
        r = 0
#14 0x00007fb934c18464 in start_thread (arg=<optimized out>) at pthread_create.c:448
        ret = <optimized out>
        pd = <optimized out>
        out = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140431597758144, -126683455049335478, 140431597758144, 140722096682160, 0, 140722096682423, -126683455040946870, -126653379927114422}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 
              0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
#15 0x00007fb934c9b5ec in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
No locals.

Do you want to contribute a patch to fix the issue?

No.

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions