Hello Karsten,
I tried to collect some more information for the maintainer and
could reproduce this (or nearly) the same SIGILL with a qemu VM limited
to a pentium class CPU.
The instruction in question might these below:
0xb78816bb <+75>: movd 0x4(%esi),%xmm2 (here I received the SIGILL)
0xb78816fb <+139>: pminud %xmm2,%xmm3 (thats from your backtrace
the similar address offset 0x...6fb)
Both access a register xmm2/xmm3 which seems to be "just"
available on CPUs having the SSE extension.
Therefore it would be interesting to know with which CPU you
are getting this SIGILL (e.g. 'lscpu' or 'cat /proc/cpuinfo').
Otherwise finch seems not to depend directly from intel-media-va-driver,
and from the package description if your CPU is older than "Broadwell",
then you might even not benefit from this package. Therefore a
workaround might be to uninstall intel-media-va-driver if no
other dependencies require it?
Kind regards,
Bernhard
# Bullseye/testing i386 qemu VM 2020-10-26 (with -cpu pentium)
apt update
apt dist-upgrade
apt install systemd-coredump mc htop psmisc net-tools strace gdb
intel-media-va-driver intel-media-va-driver-dbgsym coreutils-dbgsym
gdb -q
set width 0
set pagination off
file /bin/ls
b main
run
#b call_init
call __dlopen("/usr/lib/i386-linux-gnu/dri/iHD_drv_video.so", 4354)
bt
disassemble
0xb78816b9
benutzer@debian:~$ gdb -q
(gdb) set width 0
(gdb) set pagination off
(gdb) file /bin/ls
Reading symbols from /bin/ls...
Reading symbols from
/usr/lib/debug/.build-id/00/695414aa5413c8667e62c2362d119cb233a504.debug...
(gdb) b main
Breakpoint 1 at 0x2770: file src/ls.c, line 1622.
(gdb) run
Starting program: /bin/ls
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
Breakpoint 1, main (argc=1, argv=0xbffff744) at src/ls.c:1622
1622 src/ls.c: Datei oder Verzeichnis nicht gefunden.
(gdb) call __dlopen("/usr/lib/i386-linux-gnu/dri/iHD_drv_video.so", 4354)
Program received signal SIGILL, Illegal instruction.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
>::basic_string (__str=..., this=0x42fc50) at
/usr/include/c++/10/bits/basic_string.h:569
569 /usr/include/c++/10/bits/basic_string.h: Datei oder Verzeichnis nicht
gefunden.
The program being debugged was signaled while in a function called from GDB.
GDB remains in the frame where the signal was received.
To change this behavior use "set unwindonsignal on".
Evaluation of the expression containing the function
(__dlopen) will be abandoned.
When the function is done executing, GDB will silently stop.
(gdb) bt
#0 std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >::basic_string (__str=..., this=0x42fc50) at
/usr/include/c++/10/bits/basic_string.h:569
#1 std::pair<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)>::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*), true> (__p=..., this=0x42fc50) at
/usr/include/c++/10/bits/stl_pair.h:373
#2
__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >
>::construct<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > const, DdiMediaDecode* (*)(DDI_DECODE_CONFIG_ATTR*)>,
std::pair<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, DdiMediaDecode* (*)(DDI_DECODE_CONFIG_ATTR*)> >
(this=0xb7ceb8b0 <MediaDdiFactory<DdiMediaDecode,
DDI_DECODE_CONFIG_ATTR>::GetCreators[abi:cxx11]()::creators>, __p=0x42fc50) at
/usr/include/c++/10/ext/new_allocator.h:150
#3
__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >
>::construct<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > const, DdiMediaDecode* (*)(DDI_DECODE_CONFIG_ATTR*)>,
std::pair<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, DdiMediaDecode* (*)(DDI_DECODE_CONFIG_ATTR*)> >
(__p=0x42fc50, this=0xb7ceb8b0 <MediaDdiFactory<DdiMediaDecode,
DDI_DECODE_CONFIG_ATTR>::GetCreators[abi:cxx11]()::creators>) at
/usr/include/c++/10/ext/new_allocator.h:148
#4
std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> > >
>::construct<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > const, DdiMediaDecode* (*)(DDI_DECODE_CONFIG_ATTR*)>,
std::pair<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, DdiMediaDecode* (*)(DDI_DECODE_CONFIG_ATTR*)> >
(__p=0x42fc50, __a=...) at /usr/include/c++/10/bits/alloc_traits.h:512
#5 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)>,
std::_Select1st<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >, std::less<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,
std::allocator<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >
>::_M_construct_node<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> > (__node=0x42fc40, this=0xb7ceb8b0
<MediaDdiFactory<DdiMediaDecode,
DDI_DECODE_CONFIG_ATTR>::GetCreators[abi:cxx11]()::creators>) at
/usr/include/c++/10/bits/stl_tree.h:618
#6 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)>,
std::_Select1st<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >, std::less<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,
std::allocator<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >
>::_M_create_node<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> > (this=0xb7ceb8b0
<MediaDdiFactory<DdiMediaDecode,
DDI_DECODE_CONFIG_ATTR>::GetCreators[abi:cxx11]()::creators>) at
/usr/include/c++/10/bits/stl_tree.h:635
#7 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)>,
std::_Select1st<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >, std::less<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,
std::allocator<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >
>::_M_emplace_unique<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> > (this=0xb7ceb8b0
<MediaDdiFactory<DdiMediaDecode,
DDI_DECODE_CONFIG_ATTR>::GetCreators[abi:cxx11]()::creators>) at
/usr/include/c++/10/bits/stl_tree.h:2414
#8 0xb7881981 in std::map<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*), std::less<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,
std::allocator<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >
>::insert<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, DdiMediaDecode* (*)(DDI_DECODE_CONFIG_ATTR*)> >
(__x=..., this=0xb7ceb8b0 <MediaDdiFactory<DdiMediaDecode,
DDI_DECODE_CONFIG_ATTR>::GetCreators[abi:cxx11]()::creators>) at
/usr/include/c++/10/bits/stl_map.h:816
#9 MediaDdiFactory<DdiMediaDecode,
DDI_DECODE_CONFIG_ATTR>::RegisterCodec<DdiDecodeAVC> (key="VIDEO_DEC_H264") at
./media_driver/linux/common/ddi/media_ddi_factory.h:67
#10 0xb75cf006 in __static_initialization_and_destruction_0 (__initialize_p=1,
__priority=65535) at /usr/include/c++/10/bits/char_traits.h:322
#11 _GLOBAL__sub_I_media_ddi_decode_avc.cpp(void) () at
./media_driver/linux/common/codec/ddi/media_ddi_decode_avc.cpp:904
#12 0xb7fe5e9c in call_init (l=<optimized out>, argc=argc@entry=1,
argv=argv@entry=0xbffff744, env=0xbffff74c) at dl-init.c:72
#13 0xb7fe5fa2 in call_init (env=0xbffff74c, argv=0xbffff744, argc=1,
l=<optimized out>) at dl-init.c:30
#14 _dl_init (main_map=<optimized out>, argc=1, argv=0xbffff744,
env=0xbffff74c) at dl-init.c:119
#15 0xb7fe92a7 in call_dl_init (closure=0xbffff310) at dl-open.c:469
#16 0xb7eed524 in __GI__dl_catch_exception (exception=<optimized out>,
operate=<optimized out>, args=<optimized out>) at dl-error-skeleton.c:182
#17 0xb7fea08d in dl_open_worker (a=<optimized out>) at dl-open.c:758
#18 0xb7eed4c9 in __GI__dl_catch_exception (exception=0xbffff440,
operate=0xb7fe9990 <dl_open_worker>, args=0xbffff44c) at dl-error-skeleton.c:208
#19 0xb7fe95e6 in _dl_open (file=0xb7cedd20
"/usr/lib/i386-linux-gnu/dri/iHD_drv_video.so", mode=-2147479294,
caller_dlopen=0xbffff68f, nsid=<optimized out>, argc=1, argv=0xbffff744,
env=0xbffff74c) at dl-open.c:837
#20 0xb7d122c8 in dlopen_doit (a=0xbffff64c) at dlopen.c:66
#21 0xb7eed4c9 in __GI__dl_catch_exception (exception=0xbffff5e0,
operate=0xb7d12250 <dlopen_doit>, args=0xbffff64c) at dl-error-skeleton.c:208
#22 0xb7eed590 in __GI__dl_catch_error (objname=0x42836c, errstring=0x428370,
mallocedp=0x428368, operate=0xb7d12250 <dlopen_doit>, args=0xbffff64c) at
dl-error-skeleton.c:227
#23 0xb7d12b11 in _dlerror_run (operate=0xb7d12250 <dlopen_doit>,
args=0xbffff64c) at dlerror.c:170
#24 0xb7d12364 in __dlopen (file=0xb7cedd20
"/usr/lib/i386-linux-gnu/dri/iHD_drv_video.so", mode=4354) at dlopen.c:87
#25 <function called from gdb>
#26 main (argc=1, argv=0xbffff744) at src/ls.c:1622
(gdb) disassemble
Dump of assembler code for function
std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)>,
std::_Select1st<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >, std::less<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,
std::allocator<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >
>::_M_emplace_unique<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >(std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)>&&):
0xb7881670 <+0>: push %ebp
0xb7881671 <+1>: mov %esp,%ebp
0xb7881673 <+3>: push %edi
0xb7881674 <+4>: push %esi
0xb7881675 <+5>: push %ebx
0xb7881676 <+6>: call 0xb75d2580 <__x86.get_pc_thunk.bx>
0xb788167b <+11>: add $0x45e441,%ebx
0xb7881681 <+17>: sub $0x38,%esp
0xb7881684 <+20>: mov 0x10(%ebp),%esi
0xb7881687 <+23>: push $0x2c
0xb7881689 <+25>: call 0xb75c0070 <_Znwj@plt>
0xb788168e <+30>: add $0x10,%esp
0xb7881691 <+33>: lea 0x18(%eax),%edx
0xb7881694 <+36>: mov %eax,-0x24(%ebp)
0xb7881697 <+39>: mov %edx,0x10(%eax)
0xb788169a <+42>: lea 0x8(%esi),%eax
0xb788169d <+45>: mov %edx,-0x2c(%ebp)
0xb78816a0 <+48>: mov (%esi),%edx
0xb78816a2 <+50>: cmp %eax,%edx
0xb78816a4 <+52>: je 0xb7881868
<std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)>,
std::_Select1st<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >, std::less<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,
std::allocator<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >
>::_M_emplace_unique<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >(std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)>&&)+504>
0xb78816aa <+58>: mov -0x24(%ebp),%edi
0xb78816ad <+61>: mov %edx,0x10(%edi)
0xb78816b0 <+64>: mov 0x8(%esi),%edx
0xb78816b3 <+67>: mov %edx,0x18(%edi)
0xb78816b6 <+70>: mov -0x24(%ebp),%edx
0xb78816b9 <+73>: mov %eax,(%esi)
=> 0xb78816bb <+75>: movd 0x4(%esi),%xmm2
0xb78816c0 <+80>: mov 0x18(%esi),%eax
0xb78816c3 <+83>: movl $0x0,0x4(%esi)
0xb78816ca <+90>: movb $0x0,0x8(%esi)
0xb78816ce <+94>: movd %xmm2,0x14(%edx)
0xb78816d3 <+99>: mov %eax,0x28(%edx)
0xb78816d6 <+102>: mov 0xc(%ebp),%eax
0xb78816d9 <+105>: mov 0x8(%eax),%edi
0xb78816dc <+108>: add $0x4,%eax
0xb78816df <+111>: mov %eax,-0x28(%ebp)
0xb78816e2 <+114>: test %edi,%edi
0xb78816e4 <+116>: je 0xb7881838
<std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)>,
std::_Select1st<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >, std::less<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,
std::allocator<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >
>::_M_emplace_unique<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >(std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)>&&)+456>
0xb78816ea <+122>: mov 0x10(%edx),%esi
0xb78816ed <+125>: jmp 0xb78816f2
<std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)>,
std::_Select1st<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >, std::less<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,
std::allocator<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >
>::_M_emplace_unique<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >(std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)>&&)+130>
0xb78816ef <+127>: nop
0xb78816f0 <+128>: mov %edx,%edi
0xb78816f2 <+130>: movd 0x14(%edi),%xmm0
0xb78816f7 <+135>: movdqa %xmm0,%xmm3
0xb78816fb <+139>: pminud %xmm2,%xmm3
0xb7881700 <+144>: movd %xmm3,%eax
0xb7881704 <+148>: test %eax,%eax
0xb7881706 <+150>: je 0xb7881730
<std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)>,
std::_Select1st<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >, std::less<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,
std::allocator<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >
>::_M_emplace_unique<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >(std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)>&&)+192>
0xb7881708 <+152>: sub $0x4,%esp
0xb788170b <+155>: movd %xmm2,-0x20(%ebp)
0xb7881710 <+160>: push %eax
0xb7881711 <+161>: pushl 0x10(%edi)
0xb7881714 <+164>: push %esi
0xb7881715 <+165>: movd %xmm0,-0x1c(%ebp)
0xb788171a <+170>: call 0xb75c0650 <memcmp@plt>
...
0xb78818e3 <+627>: xor %edi,%edi
0xb78818e5 <+629>: jmp 0xb78817a2
<std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)>,
std::_Select1st<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >, std::less<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,
std::allocator<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >
>::_M_emplace_unique<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)> >(std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >, DdiMediaDecode*
(*)(DDI_DECODE_CONFIG_ATTR*)>&&)+306>
End of assembler dump.
(gdb) print $xmm2
$1 = void
(gdb) print/x $xmm2
$2 = 0x0
(gdb) print/x $esi
$3 = 0xbffff090
(gdb) print/x $esi + 0x4
$4 = 0xbffff094
(gdb) x/1xw 0xbffff094
0xbffff094: 0x0000000e
# If breaking at call_init and detaching:
[ 765.161032] traps: ls[1448] trap invalid opcode ip:b78816bb sp:bffff010
error:0 in iHD_drv_video.so[b75c0000+3c2000]
# Register xmm2 seems to be part of SSE:
https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions
https://wiki.debian.org/ArchitectureSpecificsMemo#i386-1
https://wiki.debian.org/SupportedArchitectures
https://wiki.debian.org/i386
https://www.debian.org/releases/buster/i386/ch02s01.en.html#idm272
https://www.debian.org/releases/bullseye/i386/ch02s01.en.html#idm273