[Libva] Crashes in gpe pipeline with vpp sharpening

Antti Seppälä a.seppala at gmail.com
Thu Nov 27 23:55:10 PST 2014


Hello.

I'm experiencing frequent crashes in libva-intel-driver when using vpp
sharpening filter.

I'm deinterlacing a surface with vpp and then trying to run vpp
sharpening filter on to that surface. The sharpening process works for
a while (approx 4-6 minutes ~ 13000 surfaces) but then an assert or
segmentation fault occurs in libva-intel-driver.

Here's my setup:
libva-1.4.1
libva-intel-driver-1.4.2.pre1 (from git)
Intel D54250WYK NUC kit (Haswell i5)


Here is gdb backtrace of the assert:

i965_gpe_utils.c:626: gen7_gpe_media_rw_surface_setup: Assertion
`bo->virtual' failed.

Program received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffc6ad1700 (LWP 15044)]
0x00007ffff62ef297 in raise () from /lib64/libc.so.6
(gdb) bt
#0  0x00007ffff62ef297 in raise () from /lib64/libc.so.6
#1  0x00007ffff62f05b8 in abort () from /lib64/libc.so.6
#2  0x00007ffff62e83c6 in __assert_fail_base () from /lib64/libc.so.6
#3  0x00007ffff62e8472 in __assert_fail () from /lib64/libc.so.6
#4  0x00007fffdd99782e in gen7_gpe_media_rw_surface_setup
(ctx=ctx at entry=0x9c2fd0, gpe_context=gpe_context at entry=0x7fffbc2677e8,
    obj_surface=obj_surface at entry=0x9c96c8,
binding_table_offset=binding_table_offset at entry=1088,
    surface_state_offset=surface_state_offset at entry=0) at i965_gpe_utils.c:626
#5  0x00007fffdd97d67a in gen75_gpe_process_surfaces_setup
(vpp_gpe_ctx=0x7fffbc2677e0, ctx=0x9c2fd0) at gen75_vpp_gpe.c:136
#6  gen75_gpe_process_prepare (vpp_gpe_ctx=0x7fffbc2677e0,
ctx=0x9c2fd0) at gen75_vpp_gpe.c:323
#7  gen75_gpe_process (vpp_gpe_ctx=0x7fffbc2677e0, ctx=0x9c2fd0) at
gen75_vpp_gpe.c:352
#8  vpp_gpe_process (ctx=ctx at entry=0x9c2fd0,
vpp_gpe_ctx=vpp_gpe_ctx at entry=0x7fffbc2677e0) at gen75_vpp_gpe.c:613
#9  0x00007fffdd97e37f in vpp_gpe_process_sharpening
(vpp_gpe_ctx=0x7fffbc2677e0, ctx=0x9c2fd0) at gen75_vpp_gpe.c:766
#10 vpp_gpe_process_picture (ctx=ctx at entry=0x9c2fd0,
vpp_gpe_ctx=0x7fffbc2677e0) at gen75_vpp_gpe.c:833
#11 0x00007fffdd97c02a in gen75_vpp_gpe (proc_ctx=0x7fffbc256d80,
ctx=0x9c2fd0) at gen75_picture_process.c:105
#12 gen75_proc_picture (ctx=0x9c2fd0, profile=VAProfileNone,
codec_state=0x9c6a18, hw_context=0x7fffbc256d80) at
gen75_picture_process.c:201
#13 0x00007ffff3d5adef in vaEndPicture () from /usr/lib64/libva.so.1
(gdb) bt full
#0  0x00007ffff62ef297 in raise () from /lib64/libc.so.6
No symbol table info available.
#1  0x00007ffff62f05b8 in abort () from /lib64/libc.so.6
No symbol table info available.
#2  0x00007ffff62e83c6 in __assert_fail_base () from /lib64/libc.so.6
No symbol table info available.
#3  0x00007ffff62e8472 in __assert_fail () from /lib64/libc.so.6
No symbol table info available.
#4  0x00007fffdd99782e in gen7_gpe_media_rw_surface_setup
(ctx=ctx at entry=0x9c2fd0, gpe_context=gpe_context at entry=0x7fffbc2677e8,
    obj_surface=obj_surface at entry=0x9c96c8,
binding_table_offset=binding_table_offset at entry=1088,
    surface_state_offset=surface_state_offset at entry=0) at i965_gpe_utils.c:626
        ss = <optimized out>
        bo = 0x7fffbd9e2500
        __PRETTY_FUNCTION__ = "gen7_gpe_media_rw_surface_setup"
#5  0x00007fffdd97d67a in gen75_gpe_process_surfaces_setup
(vpp_gpe_ctx=0x7fffbc2677e0, ctx=0x9c2fd0) at gen75_vpp_gpe.c:136
        obj_surface = 0x9c96c8
        i = 0
        input_surface_sum = 4 '\004'
#6  gen75_gpe_process_prepare (vpp_gpe_ctx=0x7fffbc2677e0,
ctx=0x9c2fd0) at gen75_vpp_gpe.c:323
No locals.
#7  gen75_gpe_process (vpp_gpe_ctx=0x7fffbc2677e0, ctx=0x9c2fd0) at
gen75_vpp_gpe.c:352
        va_status = <optimized out>
#8  vpp_gpe_process (ctx=ctx at entry=0x9c2fd0,
vpp_gpe_ctx=vpp_gpe_ctx at entry=0x7fffbc2677e0) at gen75_vpp_gpe.c:613
No locals.
#9  0x00007fffdd97e37f in vpp_gpe_process_sharpening
(vpp_gpe_ctx=0x7fffbc2677e0, ctx=0x9c2fd0) at gen75_vpp_gpe.c:766
        filter = <optimized out>
        thr_param_size = 24
        i = <optimized out>
        va_status = <optimized out>
        filter_ids = <optimized out>
        pipe = <optimized out>
        obj_buf = <optimized out>
        origin_in_obj_surface = <optimized out>
        origin_out_obj_surface = 0x7fffbc255c50
        sharpening_intensity = <optimized out>
        thr_param = {base = {pic_width = 720, pic_height = 576, v_pos
= <optimized out>, h_pos = <optimized out>}, l_amount = <optimized
out>,
          d_amount = <optimized out>}
        pos = <optimized out>
#10 vpp_gpe_process_picture (ctx=ctx at entry=0x9c2fd0,
vpp_gpe_ctx=0x7fffbc2677e0) at gen75_vpp_gpe.c:833
        va_status = 0
        pipe = <optimized out>
        filter = <optimized out>
        i = <optimized out>
        obj_surface = <optimized out>
        __PRETTY_FUNCTION__ = "vpp_gpe_process_picture"
#11 0x00007fffdd97c02a in gen75_vpp_gpe (proc_ctx=0x7fffbc256d80,
ctx=0x9c2fd0) at gen75_picture_process.c:105
        va_status = 0
#12 gen75_proc_picture (ctx=0x9c2fd0, profile=VAProfileNone,
codec_state=0x9c6a18, hw_context=0x7fffbc256d80) at
gen75_picture_process.c:201
        obj_buf = <optimized out>
        filter = <optimized out>
        proc_st = 0x9c6a18
        proc_ctx = 0x7fffbc256d80
        pipeline_param = 0x7fffbd9e1b10
        obj_dst_surf = <optimized out>
        obj_src_surf = <optimized out>
        __PRETTY_FUNCTION__ = "gen75_proc_picture"
        filter_id = <optimized out>
#13 0x00007ffff3d5adef in vaEndPicture () from /usr/lib64/libva.so.1
No symbol table info available.



Here is gdb backtrace of the segfault:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffc6ad1700 (LWP 14872)]
gen75_gpe_process_parameters_fill (ctx=<optimized out>,
vpp_gpe_ctx=0x7fffb0266ba0) at gen75_vpp_gpe.c:238
238         *command_ptr++ = (CMD_MEDIA_OBJECT | (size/sizeof(int) + 6 - 2));
(gdb) bt
#0  gen75_gpe_process_parameters_fill (ctx=<optimized out>,
vpp_gpe_ctx=0x7fffb0266ba0) at gen75_vpp_gpe.c:238
#1  gen75_gpe_process_pipeline_setup (vpp_gpe_ctx=0x7fffb0266ba0,
ctx=0x30) at gen75_vpp_gpe.c:268
#2  gen75_gpe_process_prepare (vpp_gpe_ctx=0x7fffb0266ba0, ctx=0x30)
at gen75_vpp_gpe.c:328
#3  gen75_gpe_process (vpp_gpe_ctx=0x7fffb0266ba0, ctx=0x30) at
gen75_vpp_gpe.c:352
#4  vpp_gpe_process (ctx=ctx at entry=0x9c2ff0,
vpp_gpe_ctx=vpp_gpe_ctx at entry=0x7fffb0266ba0) at gen75_vpp_gpe.c:613
#5  0x00007fffdd97e37f in vpp_gpe_process_sharpening
(vpp_gpe_ctx=0x7fffb0266ba0, ctx=0x9c2ff0) at gen75_vpp_gpe.c:766
#6  vpp_gpe_process_picture (ctx=ctx at entry=0x9c2ff0,
vpp_gpe_ctx=0x7fffb0266ba0) at gen75_vpp_gpe.c:833
#7  0x00007fffdd97c02a in gen75_vpp_gpe (proc_ctx=0x7fffb0256c70,
ctx=0x9c2ff0) at gen75_picture_process.c:105
#8  gen75_proc_picture (ctx=0x9c2ff0, profile=VAProfileNone,
codec_state=0x9c6a28, hw_context=0x7fffb0256c70) at
gen75_picture_process.c:201
#9  0x00007ffff3d5adef in vaEndPicture () from /usr/lib64/libva.so.1
(gdb) bt full
#0  gen75_gpe_process_parameters_fill (ctx=<optimized out>,
vpp_gpe_ctx=0x7fffb0266ba0) at gen75_vpp_gpe.c:238
        command_ptr = 0x4
        i = 0
        size = 24
        position = <optimized out>
#1  gen75_gpe_process_pipeline_setup (vpp_gpe_ctx=0x7fffb0266ba0,
ctx=0x30) at gen75_vpp_gpe.c:268
No locals.
#2  gen75_gpe_process_prepare (vpp_gpe_ctx=0x7fffb0266ba0, ctx=0x30)
at gen75_vpp_gpe.c:328
No locals.
#3  gen75_gpe_process (vpp_gpe_ctx=0x7fffb0266ba0, ctx=0x30) at
gen75_vpp_gpe.c:352
        va_status = <optimized out>
#4  vpp_gpe_process (ctx=ctx at entry=0x9c2ff0,
vpp_gpe_ctx=vpp_gpe_ctx at entry=0x7fffb0266ba0) at gen75_vpp_gpe.c:613
No locals.
#5  0x00007fffdd97e37f in vpp_gpe_process_sharpening
(vpp_gpe_ctx=0x7fffb0266ba0, ctx=0x9c2ff0) at gen75_vpp_gpe.c:766
        filter = <optimized out>
        thr_param_size = 24
        i = <optimized out>
        va_status = <optimized out>
        filter_ids = <optimized out>
        pipe = <optimized out>
        obj_buf = <optimized out>
        origin_in_obj_surface = <optimized out>
        origin_out_obj_surface = 0x9c9390
        sharpening_intensity = <optimized out>
        thr_param = {base = {pic_width = 720, pic_height = 576, v_pos
= <optimized out>, h_pos = <optimized out>}, l_amount = <optimized
out>,
          d_amount = <optimized out>}
        pos = <optimized out>
#6  vpp_gpe_process_picture (ctx=ctx at entry=0x9c2ff0,
vpp_gpe_ctx=0x7fffb0266ba0) at gen75_vpp_gpe.c:833
        va_status = 0
        pipe = <optimized out>
        filter = <optimized out>
        i = <optimized out>
        obj_surface = <optimized out>
        __PRETTY_FUNCTION__ = "vpp_gpe_process_picture"
#7  0x00007fffdd97c02a in gen75_vpp_gpe (proc_ctx=0x7fffb0256c70,
ctx=0x9c2ff0) at gen75_picture_process.c:105
        va_status = 0
#8  gen75_proc_picture (ctx=0x9c2ff0, profile=VAProfileNone,
codec_state=0x9c6a28, hw_context=0x7fffb0256c70) at
gen75_picture_process.c:201
        obj_buf = <optimized out>
        filter = <optimized out>
        proc_st = 0x9c6a28
        proc_ctx = 0x7fffb0256c70
        pipeline_param = 0x7fffb19de600
        obj_dst_surf = <optimized out>
        obj_src_surf = <optimized out>
        __PRETTY_FUNCTION__ = "gen75_proc_picture"
        filter_id = <optimized out>
#9  0x00007ffff3d5adef in vaEndPicture () from /usr/lib64/libva.so.1
No symbol table info available.


I don't have any idea how to proceed next. Any help would be appreciated.

Br,
-- 
Antti Seppälä


More information about the Libva mailing list