[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#974772: intel-media-va-driver: Programs crash with "Illegal instruction" in iHD_drv_video.so



----- Sebastian Ramacher <sramacher@debian.org> a écrit :
> Control: forwarded -1 https://github.com/intel/media-driver/issues/1081
> Control: tags -1 = upstream
> 
> On 2020-11-14 23:16:35 +0100, Christophe CURIS wrote:
> > Package: intel-media-va-driver
> > Version: 20.3.0+dfsg1-1
> > Severity: important
> > Tags: ftbfs
> > 
> > Dear Maintainer,
> > 
> > Since my latest debian update, VLC is crashing when playing video with the message:
> >   Illegal instruction
> > 
> > After a bit of debug in GDB, I have confirmed that the crash comes from:
> >   /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
> > 
> > (gdb) bt
> > #0  0x00007fffa133ba6b in ?? () from /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
> > #1  0x00007fffa133bb8f in ?? () from /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
> > #2  0x00007fffa133b2c8 in ?? () from /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
> > #3  0x00007fffa133bc67 in ?? () from /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
> > #4  0x00007fffa1342a05 in ?? () from /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
> > #5  0x00007fffa12c6597 in ?? () from /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
> > #6  0x00007fffac244e86 in ?? () from /usr/lib/x86_64-linux-gnu/libva.so.2
> > #7  0x00007fffac245feb in vaInitialize () from /usr/lib/x86_64-linux-gnu/libva.so.2
> > 
> > I am suspecting it is because the package is compiled from a very recent architecture
> > (i7 with sse4.1 explicitely enabled) which my processor does not support.
> 
> That means that you're CPU/GPU is too old and is not supported by
> intel-media-driver. As a workaround, you can set the environment
> variable LIBVA_DRIVER_NAME to i915 (or remove intel-media-va-driver from
> your system). But in any case, the driver should
> at least bail out if it detects an unsupported platform before running
> into illegal instructions. This is currently tracked upstream at
> https://github.com/intel/media-driver/issues/1081

Hi Sebastian,

Thanks for your feedback.
On my side, I have continued investigations and managed to compile something.
Good news: it looks like it is working now (Well, I mean apps not crashing).

I had a quick look, it seems impossible to remove this package due to dependancies. Maybe I would have more luck with the "-non-free" alternative but I seriously doubt.

On your side, what would be good behaviour if I tryed to propose a patch?

My current patch is an "ugly hack" that replaces one SSE4.1 instruction by its SSE2 counterpart and changes the "-m" settings (-march=, -msseXX)
I consider this not ok for the general use, so there could be tradeoffs...

> 
> Cheers
> 
> 
> > 
> > I have tryed compiling the package from source, but after tweaking the flags to
> > set -march=native, the compilation fails:
> > 
> > In file included from [...]/intel-media-driver-20.3.0+dfsg1/media_driver/linux/common/cm/hal/cm_mem_os.h:30,
> >                  from [...]/intel-media-driver-20.3.0+dfsg1/media_driver/agnostic/common/cm/cm_mem.h:128,
> >                  from [...]/intel-media-driver-20.3.0+dfsg1/media_driver/agnostic/common/cm/cm_buffer_rt.cpp:33:
> > /usr/lib/gcc/x86_64-linux-gnu/10/include/smmintrin.h: In function ‘void CmFastMemCopyFromWC(void*, const void*, size_t, CPU_INSTRUCTION_LEVEL)’:
> > /usr/lib/gcc/x86_64-linux-gnu/10/include/smmintrin.h:582:1: error: inlining failed in call to ‘always_inline’ ‘__m128i _mm_stream_load_si128(__m128i*)’: target specific option mismatch
> >   582 | _mm_stream_load_si128 (__m128i *__X)
> >       | ^~~~~~~~~~~~~~~~~~~~~
> > In file included from [...]/intel-media-driver-20.3.0+dfsg1/media_driver/agnostic/common/cm/cm_mem.h:128,
> >                  from [...]/intel-media-driver-20.3.0+dfsg1/media_driver/agnostic/common/cm/cm_buffer_rt.cpp:33:
> > [...]/intel-media-driver-20.3.0+dfsg1/media_driver/linux/common/cm/hal/cm_mem_os.h:201:53: note: called from here
> >   201 |                         xmm3 = _mm_stream_load_si128(mmSrc + 3);
> >       |                                ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
> > 
> > I am wondering what would be a good solution to at least avoid crashes...
> 
> 
> > 
> > Regards,
> > Christophe
> > 
> > -- System Information:
> > Debian Release: bullseye/sid
> >   APT prefers testing
> >   APT policy: (500, 'testing')
> > Architecture: amd64 (x86_64)
> > Foreign Architectures: i386
> > 
> > Kernel: Linux 5.2.0-2-amd64 (SMP w/2 CPU threads)
> > Kernel taint flags: TAINT_WARN
> > Locale: LANG=C.UTF-8, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
> > Shell: /bin/sh linked to /bin/dash
> > Init: systemd (via /run/systemd/system)
> > LSM: AppArmor: enabled
> > 
> > Versions of packages intel-media-va-driver depends on:
> > ii  libc6                          2.30-4
> > ii  libgcc-s1                      10.2.0-16
> > ii  libigdgmm11                    20.3.2+ds1-1
> > ii  libstdc++6                     10.2.0-16
> > ii  libva2 [libva-driver-abi-1.9]  2.9.0-1
> > 
> > intel-media-va-driver recommends no packages.
> > 
> > intel-media-va-driver suggests no packages.
> > 
> > -- no debconf information
> 
> -- 
> Sebastian Ramacher


Reply to: