intel / intel-vaapi-driver

VA-API user mode driver for Intel GEN Graphics family
https://01.org/linuxmedia
Other
303 stars 126 forks source link

i965_put_surface_dri failure causes a deadlock problem #515

Open moonpfe opened 4 years ago

moonpfe commented 4 years ago

Program is freezed on calling again i965_put_surface_dri() after i965_put_surface_dri() is failed with VA_STATUS_ERROR_ALLOCATION_FAILED. This is because i965_put_surface_dri lock mutex, but ASSERT_RET does not unlock mutex.

https://github.com/intel/intel-vaapi-driver/blob/567a22c8d1e495807d3ece471fe417c3fe0428f5/src/i965_output_dri.c#L147-L160

(gdb) bt
#0  0x00007ffff39d9620 in __lll_lock_wait () at /usr/lib/libpthread.so.0
#1  0x00007ffff39d1df3 in pthread_mutex_lock () at /usr/lib/libpthread.so.0
#2  0x00007fffe78f9544 in i965_put_surface_dri () at /usr/lib/dri/i965_drv_video.so
#3  0x00007fffe789f44f in i965_PutSurface () at /usr/lib/dri/i965_drv_video.so
#4  0x00005555557349d5 in edc_va_put_surface
    (surface_id=0x4000140, drawable=<optimized out>, width=<optimized out>, height=<optimized out>, src_x=<optimized out>, src_y=<optimized out>, src_width=1280, src_height=720, dest_width=298, dest_height=200, deinterlace=<optimized out>) at ../edc/edc-va.c:1167
...