Skip to content

import lancedb fails with illegal instruction on older intel CPU #2195

@eware-godaddy

Description

@eware-godaddy

When doing a pip install on python 3.9, 3.10, 3.11 on my older Intel CPU when I do import lancedb python dumps core with an illegal instruction error.

This is on ubuntu 20.04.

$uname -a
Linux myserver 5.4.0-176-generic #196-Ubuntu SMP Fri Mar 22 16:46:39 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

Details from /proc/cpuinfo below:

$ lscpu
Architecture:                       x86_64
CPU op-mode(s):                     32-bit, 64-bit
Byte Order:                         Little Endian
Address sizes:                      36 bits physical, 48 bits virtual
CPU(s):                             8
On-line CPU(s) list:                0-7
Thread(s) per core:                 2
Core(s) per socket:                 4
Socket(s):                          1
NUMA node(s):                       1
Vendor ID:                          GenuineIntel
CPU family:                         6
Model:                              42
Model name:                         Intel(R) Core(TM) i7-2635QM CPU @ 2.00GHz
Stepping:                           7
CPU MHz:                            798.204
CPU max MHz:                        2900.0000
CPU min MHz:                        800.0000
BogoMIPS:                           3991.15
Virtualization:                     VT-x
L1d cache:                          128 KiB
L1i cache:                          128 KiB
L2 cache:                           1 MiB
L3 cache:                           6 MiB
NUMA node0 CPU(s):                  0-7
Vulnerability Gather data sampling: Not affected
Vulnerability Itlb multihit:        KVM: Mitigation: Split huge pages
Vulnerability L1tf:                 Mitigation; PTE Inversion; VMX conditional cache flushes, SM
                                    T vulnerable
Vulnerability Mds:                  Mitigation; Clear CPU buffers; SMT vulnerable
Vulnerability Meltdown:             Mitigation; PTI
Vulnerability Mmio stale data:      Unknown: No mitigations
Vulnerability Retbleed:             Not affected
Vulnerability Spec store bypass:    Mitigation; Speculative Store Bypass disabled via prctl and
                                    seccomp
Vulnerability Spectre v1:           Mitigation; usercopy/swapgs barriers and __user pointer sani
                                    tization
Vulnerability Spectre v2:           Mitigation; Retpolines, IBPB conditional, IBRS_FW, STIBP con
                                    ditional, RSB filling, PBRSB-eIBRS Not affected
Vulnerability Srbds:                Not affected
Vulnerability Tsx async abort:      Not affected
Flags:                              fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmo
                                    v pat pse36 clflush dts acpi mmx fxsr sse sse2 ht tm pbe sys
                                    call nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_goo
                                    d nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq
                                    dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid
                                    sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx
                                     lahf_lm pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriori
                                    ty ept vpid xsaveopt dtherm ida arat pln pts md_clear flush_
                                    l1d

the core dump:

$python3 -c 'import lancedb'
Illegal instruction (core dumped)

after some gdb:


(gdb) x/10i 0x00007ffff4d6ccd0
=> 0x7ffff4d6ccd0:      vpbroadcastq 0x1d07b8f(%rip),%xmm3        # 0x7ffff6a74868
   0x7ffff4d6ccd9:      movzbl -0x1(%rsi,%r14,1),%edx
   0x7ffff4d6ccdf:      cmp    $0x10,%rax
   0x7ffff4d6cce3:      jae    0x7ffff4d6cd06
   0x7ffff4d6cce5:      cmp    %r15,%rbp
   0x7ffff4d6cce8:      je     0x7ffff4d6ce2b
   0x7ffff4d6ccee:      xor    %edi,%edi
   0x7ffff4d6ccf0:      cmp    %dl,(%rcx,%rdi,1)
   0x7ffff4d6ccf3:      je     0x7ffff4d6cdc2
   0x7ffff4d6ccf9:      inc    %rdi

Looks like a lack of AVX2

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions