[Pkg-kde-extras] Bug#1042376: Digikam with illegal instruction on an AMD Athlon II.
Karine Crèvecœur
enikar at gresille.org
Sun Aug 27 18:43:31 BST 2023
Hi,
I read the thread for this bug with attention. I use debian/sid.
Digikam version is 8.1.0-3 from debian repository.
I encounter the same bug, on my pretty old dual core :
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 48 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Vendor ID: AuthenticAMD
Model name: AMD Athlon(tm) II X2 220 Processor
CPU family: 16
Model: 6
Thread(s) per core: 1
Core(s) per socket: 2
Socket(s): 1
Stepping: 3
CPU(s) scaling MHz: 88%
CPU max MHz: 2800.0000
CPU min MHz: 800.0000
BogoMIPS: 5586.12
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt hw_pstate vmmcall npt lbrv svm_lock nrip_save
…
$ cpuid -1 -l1
CPU:
version information (1/eax):
processor type = primary processor (0)
family = 0xf (15)
model = 0x6 (6)
stepping id = 0x3 (3)
extended family = 0x1 (1)
extended model = 0x0 (0)
(family synth) = 0x10 (16)
(model synth) = 0x6 (6)
miscellaneous (1/ebx):
process local APIC physical ID = 0x1 (1)
maximum IDs for CPUs in pkg = 0x2 (2)
CLFLUSH line size = 0x8 (8)
brand index = 0x0 (0)
brand id = 0x00 (0): unknown
feature information (1/edx):
x87 FPU on chip = true
VME: virtual-8086 mode enhancement = true
DE: debugging extensions = true
PSE: page size extensions = true
TSC: time stamp counter = true
RDMSR and WRMSR support = true
PAE: physical address extensions = true
MCE: machine check exception = true
CMPXCHG8B inst. = true
APIC on chip = true
SYSENTER and SYSEXIT = true
MTRR: memory type range registers = true
PTE global bit = true
MCA: machine check architecture = true
CMOV: conditional move/compare instr = true
PAT: page attribute table = true
PSE-36: page size extension = true
PSN: processor serial number = false
CLFLUSH instruction = true
DS: debug store = false
ACPI: thermal monitor and clock ctrl = false
MMX Technology = true
FXSAVE/FXRSTOR = true
SSE extensions = true
SSE2 extensions = true
SS: self snoop = false
hyper-threading / multi-core supported = true
TM: therm. monitor = false
IA64 = false
PBE: pending break event = false
feature information (1/ecx):
PNI/SSE3: Prescott New Instructions = true
PCLMULDQ instruction = false
DTES64: 64-bit debug store = false
MONITOR/MWAIT = true
CPL-qualified debug store = false
VMX: virtual machine extensions = false
SMX: safer mode extensions = false
Enhanced Intel SpeedStep Technology = false
TM2: thermal monitor 2 = false
SSSE3 extensions = false
context ID: adaptive or shared L1 data = false
SDBG: IA32_DEBUG_INTERFACE = false
FMA instruction = false
CMPXCHG16B instruction = true
xTPR disable = false
PDCM: perfmon and debug = false
PCID: process context identifiers = false
DCA: direct cache access = false
SSE4.1 extensions = false
SSE4.2 extensions = false
x2APIC: extended xAPIC support = false
MOVBE instruction = false
POPCNT instruction = true
time stamp counter deadline = false
AES instruction = false
XSAVE/XSTOR states = false
OS-enabled XSAVE/XSTOR = false
AVX: advanced vector extensions = false
F16C half-precision convert instruction = false
RDRAND instruction = false
hypervisor guest status = false
I run gdb to obtain a backtrace :
$ export DEBUGINFOD_URLS="https://debuginfod.debian.net"
$ gdb digikam
(gdb) run
Program received signal SIGILL, Illegal instruction.
0x00007ffff6cc2103 in operator* (m1=..., m2=...) at /usr/include/x86_64-linux-gnu/qt5/QtGui/qmatrix4x4.h:642
642 QMatrix4x4 m = m1;
(gdb) bt
#0 0x00007ffff6cc2103 in operator*(QMatrix4x4 const&, QMatrix4x4 const&) (m1=..., m2=...) at /usr/include/x86_64-linux-gnu/qt5/QtGui/qmatrix4x4.h:642
#1 0x00007ffff65b861d in __static_initialization_and_destruction_0() () at ./core/libs/video/qtav/utils/ColorTransform.cpp:59
#2 0x00007ffff7fcfe2e in call_init (env=0x7fffffffdf58, argv=0x7fffffffdf48, argc=1, l=<optimized out>) at ./elf/dl-init.c:70
#3 call_init (l=<optimized out>, argc=1, argv=0x7fffffffdf48, env=0x7fffffffdf58) at ./elf/dl-init.c:26
#4 0x00007ffff7fcff14 in _dl_init (main_map=0x7ffff7ffe2c0, argc=1, argv=0x7fffffffdf48, env=0x7fffffffdf58) at ./elf/dl-init.c:117
#5 0x00007ffff7fe5170 in _dl_start_user () at /lib64/ld-linux-x86-64.so.2
#6 0x0000000000000001 in ()
#7 0x00007fffffffe376 in ()
#8 0x0000000000000000 in ()
(gdb) disassemble
…
0x00007ffff6cc20e8 <+136>: movaps %xmm8,%xmm4
0x00007ffff6cc20ec <+140>: mov %edx,-0x4c(%rsp)
0x00007ffff6cc20f0 <+144>: mov 0x38(%r9),%rdx
0x00007ffff6cc20f4 <+148>: mulss %xmm5,%xmm4
0x00007ffff6cc20f8 <+152>: movss 0x3c(%r9),%xmm10
0x00007ffff6cc20fe <+158>: movq %r10,%xmm7
=> 0x00007ffff6cc2103 <+163>: extractps $0x3,%xmm12,%r11d
0x00007ffff6cc210a <+170>: mov %rdx,%r15
0x00007ffff6cc210d <+173>: mov 0x28(%rax),%rdx
0x00007ffff6cc2111 <+177>: movshdup %xmm7,%xmm7
0x00007ffff6cc2115 <+181>: extractps $0x2,%xmm12,%edi
0x00007ffff6cc211c <+188>: mulss %xmm6,%xmm2
0x00007ffff6cc2120 <+192>: movq %rdx,%xmm15
0x00007ffff6cc2125 <+197>: mov %rdx,-0x40(%rsp)
…
The instruction that leads to crash seems to be "extractps".According
to <https://www.felixcloutier.com/x86/extractps> it is an instruction
related to SSE4.1.
I had to rebuild digikam from the package source with debuild as follow
to get digikam working again:
$ CFLAGS=-march=native CXXFLAGS=-march=native debuild -b -us -uc
Maybe I could try to build with -march=x86-64. That should work.
Well, I hope my investigation can help to solve this bug.
Cheers.
--
Karine
More information about the pkg-kde-extras
mailing list