Bug#784647: libav-tools: avconv fails with Illegal Instruction

Bernhard Übelacker bernhardu at vr-web.de
Sat May 9 15:09:26 UTC 2015


Hello Vittorio,
I could reproduce it inside a qemu VM (-cpu pentium).


----------- (without debug information)
Program received signal SIGILL, Illegal instruction.
0xb6691c34 in ?? () from /usr/lib/i386-linux-gnu/libopencv_imgproc.so.2.4
(gdb) bt
#0  0xb6691c34 in ?? () from /usr/lib/i386-linux-gnu/libopencv_imgproc.so.2.4
#1  0xb65f0406 in ?? () from /usr/lib/i386-linux-gnu/libopencv_imgproc.so.2.4
#2  0xb7fed86e in call_init (l=<optimized out>, argc=argc at entry=4, argv=argv at entry=0xbffff764, env=env at entry=0xbffff778) at dl-init.c:78
#3  0xb7fed964 in call_init (env=0xbffff778, argv=0xbffff764, argc=4, l=<optimized out>) at dl-init.c:36
#4  _dl_init (main_map=0xb7fff930, argc=4, argv=0xbffff764, env=0xbffff778) at dl-init.c:126
#5  0xb7fdfd3f in _dl_start_user () from /lib/ld-linux.so.2
(gdb) display /i $pc
1: x/i $pc
=> 0xb6691c34:  cmovle %edi,%edx
(gdb)
----------- (with debug information)
Program received signal SIGILL, Illegal instruction.
0xb6626ae4 in saturate_cast<short> (v=32768) at /usr/include/opencv2/core/operations.hpp:179
179                 v : v > 0 ? SHRT_MAX : SHRT_MIN);
(gdb) bt
#0  0xb6626ae4 in saturate_cast<short> (v=32768) at /usr/include/opencv2/core/operations.hpp:179
#1  saturate_cast<short> (v=32768) at /usr/include/opencv2/core/operations.hpp:184
#2  cv::initInterTab2D (method=method at entry=1, fixpt=fixpt at entry=false) at /home/benutzer/opencv/opencv-2.4.9.1+dfsg/modules/imgproc/src/imgwarp.cpp:245
#3  0xb65f0406 in initAllInterTab2D () at /home/benutzer/opencv/opencv-2.4.9.1+dfsg/modules/imgproc/src/imgwarp.cpp:290
#4  __static_initialization_and_destruction_0 (__initialize_p=1, __priority=65535) at /home/benutzer/opencv/opencv-2.4.9.1+dfsg/modules/imgproc/src/imgwarp.cpp:298
#5  _GLOBAL__sub_I_imgwarp.cpp(void) () at /home/benutzer/opencv/opencv-2.4.9.1+dfsg/modules/imgproc/src/imgwarp.cpp:4247
#6  0xb7fed86e in call_init (l=<optimized out>, argc=argc at entry=4, argv=argv at entry=0xbffff6f4, env=env at entry=0xbffff708) at dl-init.c:78
#7  0xb7fed964 in call_init (env=0xbffff708, argv=0xbffff6f4, argc=4, l=<optimized out>) at dl-init.c:36
#8  _dl_init (main_map=0xb7fff930, argc=4, argv=0xbffff6f4, env=0xbffff708) at dl-init.c:126
#9  0xb7fdfd3f in _dl_start_user () from /lib/ld-linux.so.2
(gdb) display /i $pc
1: x/i $pc
=> 0xb6626ae4 <cv::initInterTab2D(int, bool)+1156>:     cmovle %edi,%edx
(gdb)
-----------


Opencv seems to be built optimized for i686 in Jessie.
(-march=i686 is given to c++)

Attached is a patch similiar to one used for Wheezy
to optimize for i486.

A Opencv compiled with this patch (-march=i586) does
not crash with SIGILL.

Kind regards,
Bernhard



More information about the debian-science-maintainers mailing list