[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