dragonflydb / dragonfly

A modern replacement for Redis and Memcached
https://www.dragonflydb.io/
Other
24.6k stars 890 forks source link

SIGILL on Celeron J4115 CPU #421

Closed inos-github closed 10 months ago

inos-github commented 1 year ago

Describe the bug Running the ./dragonfly-x86_64 binary results in SIGILL abort.

To Reproduce Steps to reproduce the behavior:

  1. Run ./dragonfly-x86_64

Environment (please complete the following information):

debug information gdb --eval-command=run --eval-command=bt --batch --args ./dragonfly-x86_64 --logtostderr

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGILL, Illegal instruction.
0x0000555555639364 in ?? ()
#0  0x0000555555639364 in ?? ()
#1  0x00005555555ef301 in ?? ()
#2  0x00007ffff7a70d90 in __libc_start_call_main (main=main@entry=0x5555555eeef0, argc=argc@entry=2, argv=argv@entry=0x7fffffffe338) at ../sysdeps/nptl/libc_start_call_main.h:58
#3  0x00007ffff7a70e40 in __libc_start_main_impl (main=0x5555555eeef0, argc=2, argv=0x7fffffffe338, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe328) at ../csu/libc-start.c:392
#4  0x00005555555f140e in ?? ()```

Additional context cat /proc/cpuinfo

processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 122
model name  : Intel(R) Celeron(R) J4115 CPU @ 1.80GHz
stepping    : 1
microcode   : 0x3c
cpu MHz     : 2380.800
cache size  : 4096 KB
physical id : 0
siblings    : 4
core id     : 0
cpu cores   : 4
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 24
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg cx16 xtpr pdcm sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave rdrand lahf_lm 3dnowprefetch cpuid_fault cat_l2 pti cdp_l2 ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust smep erms mpx rdt_a rdseed smap clflushopt intel_pt sha_ni xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts umip rdpid md_clear arch_capabilities
vmx flags   : vnmi preemption_timer posted_intr invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid ple shadow_vmcs ept_mode_based_exec tsc_scaling
bugs        : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass
bogomips    : 3571.20
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor   : 1
vendor_id   : GenuineIntel
cpu family  : 6
model       : 122
model name  : Intel(R) Celeron(R) J4115 CPU @ 1.80GHz
stepping    : 1
microcode   : 0x3c
cpu MHz     : 2380.810
cache size  : 4096 KB
physical id : 0
siblings    : 4
core id     : 1
cpu cores   : 4
apicid      : 2
initial apicid  : 2
fpu     : yes
fpu_exception   : yes
cpuid level : 24
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg cx16 xtpr pdcm sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave rdrand lahf_lm 3dnowprefetch cpuid_fault cat_l2 pti cdp_l2 ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust smep erms mpx rdt_a rdseed smap clflushopt intel_pt sha_ni xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts umip rdpid md_clear arch_capabilities
vmx flags   : vnmi preemption_timer posted_intr invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid ple shadow_vmcs ept_mode_based_exec tsc_scaling
bugs        : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass
bogomips    : 3571.20
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor   : 2
vendor_id   : GenuineIntel
cpu family  : 6
model       : 122
model name  : Intel(R) Celeron(R) J4115 CPU @ 1.80GHz
stepping    : 1
microcode   : 0x3c
cpu MHz     : 1800.000
cache size  : 4096 KB
physical id : 0
siblings    : 4
core id     : 2
cpu cores   : 4
apicid      : 4
initial apicid  : 4
fpu     : yes
fpu_exception   : yes
cpuid level : 24
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg cx16 xtpr pdcm sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave rdrand lahf_lm 3dnowprefetch cpuid_fault cat_l2 pti cdp_l2 ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust smep erms mpx rdt_a rdseed smap clflushopt intel_pt sha_ni xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts umip rdpid md_clear arch_capabilities
vmx flags   : vnmi preemption_timer posted_intr invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid ple shadow_vmcs ept_mode_based_exec tsc_scaling
bugs        : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass
bogomips    : 3571.20
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor   : 3
vendor_id   : GenuineIntel
cpu family  : 6
model       : 122
model name  : Intel(R) Celeron(R) J4115 CPU @ 1.80GHz
stepping    : 1
microcode   : 0x3c
cpu MHz     : 2377.102
cache size  : 4096 KB
physical id : 0
siblings    : 4
core id     : 3
cpu cores   : 4
apicid      : 6
initial apicid  : 6
fpu     : yes
fpu_exception   : yes
cpuid level : 24
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg cx16 xtpr pdcm sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave rdrand lahf_lm 3dnowprefetch cpuid_fault cat_l2 pti cdp_l2 ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust smep erms mpx rdt_a rdseed smap clflushopt intel_pt sha_ni xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts umip rdpid md_clear arch_capabilities
vmx flags   : vnmi preemption_timer posted_intr invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid ple shadow_vmcs ept_mode_based_exec tsc_scaling
bugs        : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass
bogomips    : 3571.20
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:
romange commented 1 year ago

can you attach the output of gcc -march=native -Q --help=target from your laptop?

inos-github commented 1 year ago

the output of gcc -march=native -Q --help=target

The following options are target specific:
  -m128bit-long-double              [enabled]
  -m16                              [disabled]
  -m32                              [disabled]
  -m3dnow                           [disabled]
  -m3dnowa                          [disabled]
  -m64                              [enabled]
  -m80387                           [enabled]
  -m8bit-idiv                       [disabled]
  -m96bit-long-double               [disabled]
  -mabi=                            sysv
  -mabm                             [disabled]
  -maccumulate-outgoing-args        [enabled]
  -maddress-mode=                   long
  -madx                             [disabled]
  -maes                             [enabled]
  -malign-data=                     compat
  -malign-double                    [disabled]
  -malign-functions=                0
  -malign-jumps=                    0
  -malign-loops=                    0
  -malign-stringops                 [enabled]
  -mamx-bf16                        [disabled]
  -mamx-int8                        [disabled]
  -mamx-tile                        [disabled]
  -mandroid                         [disabled]
  -march=                           goldmont-plus
  -masm=                            att
  -mavx                             [disabled]
  -mavx2                            [disabled]
  -mavx256-split-unaligned-load     [disabled]
  -mavx256-split-unaligned-store    [disabled]
  -mavx5124fmaps                    [disabled]
  -mavx5124vnniw                    [disabled]
  -mavx512bf16                      [disabled]
  -mavx512bitalg                    [disabled]
  -mavx512bw                        [disabled]
  -mavx512cd                        [disabled]
  -mavx512dq                        [disabled]
  -mavx512er                        [disabled]
  -mavx512f                         [disabled]
  -mavx512ifma                      [disabled]
  -mavx512pf                        [disabled]
  -mavx512vbmi                      [disabled]
  -mavx512vbmi2                     [disabled]
  -mavx512vl                        [disabled]
  -mavx512vnni                      [disabled]
  -mavx512vp2intersect              [disabled]
  -mavx512vpopcntdq                 [disabled]
  -mavxvnni                         [disabled]
  -mbionic                          [disabled]
  -mbmi                             [disabled]
  -mbmi2                            [disabled]
  -mbranch-cost=<0,5>               3
  -mcall-ms2sysv-xlogues            [disabled]
  -mcet-switch                      [disabled]
  -mcld                             [disabled]
  -mcldemote                        [disabled]
  -mclflushopt                      [enabled]
  -mclwb                            [disabled]
  -mclzero                          [disabled]
  -mcmodel=                         [default]
  -mcpu=                            
  -mcrc32                           [enabled]
  -mcx16                            [enabled]
  -mdispatch-scheduler              [disabled]
  -mdump-tune-features              [disabled]
  -menqcmd                          [disabled]
  -mf16c                            [disabled]
  -mfancy-math-387                  [enabled]
  -mfentry                          [disabled]
  -mfentry-name=                    
  -mfentry-section=                 
  -mfma                             [disabled]
  -mfma4                            [disabled]
  -mforce-drap                      [disabled]
  -mforce-indirect-call             [disabled]
  -mfp-ret-in-387                   [enabled]
  -mfpmath=                         sse
  -mfsgsbase                        [enabled]
  -mfunction-return=                keep
  -mfused-madd                      -ffp-contract=fast
  -mfxsr                            [enabled]
  -mgeneral-regs-only               [disabled]
  -mgfni                            [disabled]
  -mglibc                           [enabled]
  -mhard-float                      [enabled]
  -mharden-sls=                     none
  -mhle                             [disabled]
  -mhreset                          [disabled]
  -miamcu                           [disabled]
  -mieee-fp                         [enabled]
  -mincoming-stack-boundary=        0
  -mindirect-branch-cs-prefix       [disabled]
  -mindirect-branch-register        [disabled]
  -mindirect-branch=                keep
  -minline-all-stringops            [disabled]
  -minline-stringops-dynamically    [disabled]
  -minstrument-return=              none
  -mintel-syntax                    -masm=intel
  -mkl                              [disabled]
  -mlarge-data-threshold=<number>   65536
  -mlong-double-128                 [disabled]
  -mlong-double-64                  [disabled]
  -mlong-double-80                  [enabled]
  -mlwp                             [disabled]
  -mlzcnt                           [disabled]
  -mmanual-endbr                    [disabled]
  -mmemcpy-strategy=                
  -mmemset-strategy=                
  -mmitigate-rop                    [disabled]
  -mmmx                             [enabled]
  -mmovbe                           [enabled]
  -mmovdir64b                       [disabled]
  -mmovdiri                         [disabled]
  -mmpx                             [disabled]
  -mms-bitfields                    [disabled]
  -mmusl                            [disabled]
  -mmwait                           [enabled]
  -mmwaitx                          [disabled]
  -mneeded                          [disabled]
  -mno-align-stringops              [disabled]
  -mno-default                      [disabled]
  -mno-fancy-math-387               [disabled]
  -mno-push-args                    [disabled]
  -mno-red-zone                     [disabled]
  -mno-sse4                         [disabled]
  -mnop-mcount                      [disabled]
  -momit-leaf-frame-pointer         [disabled]
  -mpc32                            [disabled]
  -mpc64                            [disabled]
  -mpc80                            [disabled]
  -mpclmul                          [enabled]
  -mpcommit                         [disabled]
  -mpconfig                         [disabled]
  -mpku                             [disabled]
  -mpopcnt                          [enabled]
  -mprefer-avx128                   -mprefer-vector-width=128
  -mprefer-vector-width=            none
  -mpreferred-stack-boundary=       0
  -mprefetchwt1                     [disabled]
  -mprfchw                          [enabled]
  -mptwrite                         [enabled]
  -mpush-args                       [enabled]
  -mrdpid                           [enabled]
  -mrdrnd                           [enabled]
  -mrdseed                          [enabled]
  -mrecip                           [disabled]
  -mrecip=                          
  -mrecord-mcount                   [disabled]
  -mrecord-return                   [disabled]
  -mred-zone                        [enabled]
  -mregparm=                        6
  -mrtd                             [disabled]
  -mrtm                             [disabled]
  -msahf                            [enabled]
  -mserialize                       [disabled]
  -msgx                             [enabled]
  -msha                             [enabled]
  -mshstk                           [disabled]
  -mskip-rax-setup                  [disabled]
  -msoft-float                      [disabled]
  -msse                             [enabled]
  -msse2                            [enabled]
  -msse2avx                         [disabled]
  -msse3                            [enabled]
  -msse4                            [enabled]
  -msse4.1                          [enabled]
  -msse4.2                          [enabled]
  -msse4a                           [disabled]
  -msse5                            -mavx
  -msseregparm                      [disabled]
  -mssse3                           [enabled]
  -mstack-arg-probe                 [disabled]
  -mstack-protector-guard-offset=   
  -mstack-protector-guard-reg=      
  -mstack-protector-guard-symbol=   
  -mstack-protector-guard=          tls
  -mstackrealign                    [disabled]
  -mstringop-strategy=              [default]
  -mstv                             [enabled]
  -mtbm                             [disabled]
  -mtls-dialect=                    gnu
  -mtls-direct-seg-refs             [enabled]
  -mtsxldtrk                        [disabled]
  -mtune-ctrl=                      
  -mtune=                           goldmont-plus
  -muclibc                          [disabled]
  -muintr                           [disabled]
  -mvaes                            [disabled]
  -mveclibabi=                      [default]
  -mvect8-ret-in-mem                [disabled]
  -mvpclmulqdq                      [disabled]
  -mvzeroupper                      [enabled]
  -mwaitpkg                         [disabled]
  -mwbnoinvd                        [disabled]
  -mwidekl                          [disabled]
  -mx32                             [disabled]
  -mxop                             [disabled]
  -mxsave                           [enabled]
  -mxsavec                          [enabled]
  -mxsaveopt                        [enabled]
  -mxsaves                          [enabled]

  Known assembler dialects (for use with the -masm= option):
    att intel

  Known ABIs (for use with the -mabi= option):
    ms sysv

  Known code models (for use with the -mcmodel= option):
    32 kernel large medium small

  Valid arguments to -mfpmath=:
    387 387+sse 387,sse both sse sse+387 sse,387

  Known choices for mitigation against straight line speculation with -mharden-sls=:
    all indirect-jmp none return

  Known indirect branch choices (for use with the -mindirect-branch=/-mfunction-return= options):
    keep thunk thunk-extern thunk-inline

  Known choices for return instrumentation with -minstrument-return=:
    call none nop5

  Known data alignment choices (for use with the -malign-data= option):
    abi cacheline compat

  Known vectorization library ABIs (for use with the -mveclibabi= option):
    acml svml

  Known address mode (for use with the -maddress-mode= option):
    long short

  Known preferred register vector length (to use with the -mprefer-vector-width= option):
    128 256 512 none

  Known stack protector guard (for use with the -mstack-protector-guard= option):
    global tls

  Valid arguments to -mstringop-strategy=:
    byte_loop libcall loop rep_4byte rep_8byte rep_byte unrolled_loop vector_loop

  Known TLS dialects (for use with the -mtls-dialect= option):
    gnu gnu2

  Known valid arguments for -march= option:
    i386 i486 i586 pentium lakemont pentium-mmx winchip-c6 winchip2 c3 samuel-2 c3-2 nehemiah c7 esther i686 pentiumpro pentium2 pentium3 pentium3m pentium-m pentium4 pentium4m prescott nocona core2 nehalem corei7 westmere sandybridge corei7-avx ivybridge core-avx-i haswell core-avx2 broadwell skylake skylake-avx512 cannonlake icelake-client rocketlake icelake-server cascadelake tigerlake cooperlake sapphirerapids alderlake bonnell atom silvermont slm goldmont goldmont-plus tremont knl knm intel geode k6 k6-2 k6-3 athlon athlon-tbird athlon-4 athlon-xp athlon-mp x86-64 x86-64-v2 x86-64-v3 x86-64-v4 eden-x2 nano nano-1000 nano-2000 nano-3000 nano-x2 eden-x4 nano-x4 k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 athlon-fx amdfam10 barcelona bdver1 bdver2 bdver3 bdver4 znver1 znver2 znver3 btver1 btver2 generic native

  Known valid arguments for -mtune= option:
    generic i386 i486 pentium lakemont pentiumpro pentium4 nocona core2 nehalem sandybridge haswell bonnell silvermont goldmont goldmont-plus tremont knl knm skylake skylake-avx512 cannonlake icelake-client icelake-server cascadelake tigerlake cooperlake sapphirerapids alderlake rocketlake intel geode k6 athlon k8 amdfam10 bdver1 bdver2 bdver3 bdver4 btver1 btver2 znver1 znver2 znver3
romange commented 1 year ago

Dragonfly is built with --march=core2 but I guess even newer celerons lack instructions that are present in core2. Unfortunately, I can not say which instruction is missing. If you wish, try to run the binary with debug symbols via gdb:

https://github.com/dragonflydb/dragonfly/releases/download/v0.10.0/dragonfly-x86_64.unstripped.tar.gz

and when it crashes run disassemble

bertmelis commented 1 year ago

I tried to run via GDB (in a container though), on a Celeron J4105:

# gdb dragonfly-x86_64
GNU gdb (Debian 10.1-1.7) 10.1.90.20210103-git
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from dragonfly-x86_64...
(gdb) run
Starting program: /root/dragonfly-x86_64
warning: Error disabling address space randomization: Function not implemented
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGILL, Illegal instruction.
std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_realloc_insert<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > (this=0x5f6fc030e60, __position="") at /usr/include/c++/9/bits/char_traits.h:372
372     /usr/include/c++/9/bits/char_traits.h: No such file or directory.
(gdb) disassemble
Dump of assembler code for function _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_:
   0x000055a85e082c50 <+0>:     endbr64
   0x000055a85e082c54 <+4>:     push   %rbp
   0x000055a85e082c55 <+5>:     mov    %rsp,%rbp
   0x000055a85e082c58 <+8>:     push   %r15
   0x000055a85e082c5a <+10>:    push   %r14
   0x000055a85e082c5c <+12>:    push   %r13
   0x000055a85e082c5e <+14>:    mov    %rdi,%r13
   0x000055a85e082c61 <+17>:    push   %r12
   0x000055a85e082c63 <+19>:    push   %rbx
   0x000055a85e082c64 <+20>:    mov    %rsi,%rbx
   0x000055a85e082c67 <+23>:    sub    $0x18,%rsp
   0x000055a85e082c6b <+27>:    mov    %rdx,-0x38(%rbp)
   0x000055a85e082c6f <+31>:    call   0x55a85de5f4a0 <_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_M_check_lenEmPKc.constprop.0>
   0x000055a85e082c74 <+36>:    mov    0x0(%r13),%r15
   0x000055a85e082c78 <+40>:    mov    %rbx,%rcx
   0x000055a85e082c7b <+43>:    sub    %r15,%rcx
   0x000055a85e082c7e <+46>:    test   %rax,%rax
   0x000055a85e082c81 <+49>:    mov    0x8(%r13),%r12
   0x000055a85e082c85 <+53>:    mov    -0x38(%rbp),%rdx
   0x000055a85e082c89 <+57>:    mov    %rax,%r14
   0x000055a85e082c8c <+60>:    je     0x55a85e082e10 <_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_+448>
   0x000055a85e082c92 <+66>:    movabs $0x3ffffffffffffff,%rax
   0x000055a85e082c9c <+76>:    cmp    %rax,%r14
   0x000055a85e082c9f <+79>:    ja     0x55a85e082e1d <_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_+461>
   0x000055a85e082ca5 <+85>:    shl    $0x5,%r14
   0x000055a85e082ca9 <+89>:    mov    %r14,%rdi
   0x000055a85e082cac <+92>:    mov    %rdx,-0x40(%rbp)
   0x000055a85e082cb0 <+96>:    mov    %rcx,-0x38(%rbp)
   0x000055a85e082cb4 <+100>:   call   0x55a85e0b99b0 <_Znwm>
   0x000055a85e082cb9 <+105>:   mov    -0x38(%rbp),%rcx
   0x000055a85e082cbd <+109>:   mov    -0x40(%rbp),%rdx
   0x000055a85e082cc1 <+113>:   lea    0x20(%rax),%r8
   0x000055a85e082cc5 <+117>:   add    %rax,%rcx
   0x000055a85e082cc8 <+120>:   lea    0x10(%rcx),%rsi
   0x000055a85e082ccc <+124>:   mov    (%rdx),%rdi
   0x000055a85e082ccf <+127>:   mov    %rsi,(%rcx)
   0x000055a85e082cd2 <+130>:   lea    0x10(%rdx),%rsi
   0x000055a85e082cd6 <+134>:   cmp    %rsi,%rdi
   0x000055a85e082cd9 <+137>:   je     0x55a85e082df8 <_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_+424>
   0x000055a85e082cdf <+143>:   mov    %rdi,(%rcx)
   0x000055a85e082ce2 <+146>:   mov    0x10(%rdx),%rdi
   0x000055a85e082ce6 <+150>:   mov    %rdi,0x10(%rcx)
   0x000055a85e082cea <+154>:   mov    0x8(%rdx),%rdi
--Type <RET> for more, q to quit, c to continue without paging--
   0x000055a85e082cee <+158>:   mov    %rsi,(%rdx)
   0x000055a85e082cf1 <+161>:   mov    %rdi,0x8(%rcx)
   0x000055a85e082cf5 <+165>:   movq   $0x0,0x8(%rdx)
   0x000055a85e082cfd <+173>:   movb   $0x0,0x10(%rdx)
   0x000055a85e082d01 <+177>:   cmp    %r15,%rbx
   0x000055a85e082d04 <+180>:   je     0x55a85e082d5b <_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_+267>
   0x000055a85e082d06 <+182>:   mov    %rax,%rcx
   0x000055a85e082d09 <+185>:   mov    %r15,%rdx
   0x000055a85e082d0c <+188>:   jmp    0x55a85e082d30 <_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_+224>
   0x000055a85e082d0e <+190>:   xchg   %ax,%ax
   0x000055a85e082d10 <+192>:   mov    %rdi,(%rcx)
   0x000055a85e082d13 <+195>:   mov    0x10(%rdx),%rsi
   0x000055a85e082d17 <+199>:   mov    %rsi,0x10(%rcx)
   0x000055a85e082d1b <+203>:   mov    0x8(%rdx),%rsi
   0x000055a85e082d1f <+207>:   add    $0x20,%rdx
   0x000055a85e082d23 <+211>:   mov    %rsi,0x8(%rcx)
   0x000055a85e082d27 <+215>:   add    $0x20,%rcx
   0x000055a85e082d2b <+219>:   cmp    %rdx,%rbx
   0x000055a85e082d2e <+222>:   je     0x55a85e082d50 <_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_+256>
   0x000055a85e082d30 <+224>:   lea    0x10(%rcx),%rsi
   0x000055a85e082d34 <+228>:   mov    %rsi,(%rcx)
   0x000055a85e082d37 <+231>:   lea    0x10(%rdx),%rsi
   0x000055a85e082d3b <+235>:   mov    (%rdx),%rdi
   0x000055a85e082d3e <+238>:   cmp    %rsi,%rdi
   0x000055a85e082d41 <+241>:   jne    0x55a85e082d10 <_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_+192>
   0x000055a85e082d43 <+243>:   vmovdqu 0x10(%rdx),%xmm0
   0x000055a85e082d48 <+248>:   vmovups %xmm0,0x10(%rcx)
   0x000055a85e082d4d <+253>:   jmp    0x55a85e082d1b <_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_+203>
   0x000055a85e082d4f <+255>:   nop
   0x000055a85e082d50 <+256>:   mov    %rbx,%rdx
   0x000055a85e082d53 <+259>:   sub    %r15,%rdx
   0x000055a85e082d56 <+262>:   lea    0x20(%rax,%rdx,1),%r8
   0x000055a85e082d5b <+267>:   cmp    %r12,%rbx
   0x000055a85e082d5e <+270>:   je     0x55a85e082db6 <_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_+358>
   0x000055a85e082d60 <+272>:   mov    %rbx,%rdx
   0x000055a85e082d63 <+275>:   mov    %r8,%rcx
   0x000055a85e082d66 <+278>:   jmp    0x55a85e082d90 <_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_+320>
   0x000055a85e082d68 <+280>:   nopl   0x0(%rax,%rax,1)
   0x000055a85e082d70 <+288>:   mov    0x10(%rdx),%rsi
   0x000055a85e082d74 <+292>:   mov    %rdi,(%rcx)
--Type <RET> for more, q to quit, c to continue without paging--
   0x000055a85e082d77 <+295>:   mov    %rsi,0x10(%rcx)
   0x000055a85e082d7b <+299>:   mov    0x8(%rdx),%rsi
   0x000055a85e082d7f <+303>:   add    $0x20,%rdx
   0x000055a85e082d83 <+307>:   mov    %rsi,0x8(%rcx)
   0x000055a85e082d87 <+311>:   add    $0x20,%rcx
   0x000055a85e082d8b <+315>:   cmp    %rdx,%r12
   0x000055a85e082d8e <+318>:   je     0x55a85e082db0 <_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_+352>
   0x000055a85e082d90 <+320>:   lea    0x10(%rcx),%rsi
   0x000055a85e082d94 <+324>:   mov    (%rdx),%rdi
   0x000055a85e082d97 <+327>:   mov    %rsi,(%rcx)
   0x000055a85e082d9a <+330>:   lea    0x10(%rdx),%rsi
   0x000055a85e082d9e <+334>:   cmp    %rsi,%rdi
   0x000055a85e082da1 <+337>:   jne    0x55a85e082d70 <_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_+288>
   0x000055a85e082da3 <+339>:   vmovdqu 0x10(%rdx),%xmm1
   0x000055a85e082da8 <+344>:   vmovups %xmm1,0x10(%rcx)
   0x000055a85e082dad <+349>:   jmp    0x55a85e082d7b <_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_+299>
   0x000055a85e082daf <+351>:   nop
   0x000055a85e082db0 <+352>:   sub    %rbx,%r12
   0x000055a85e082db3 <+355>:   add    %r12,%r8
   0x000055a85e082db6 <+358>:   test   %r15,%r15
   0x000055a85e082db9 <+361>:   je     0x55a85e082dd3 <_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_+387>
   0x000055a85e082dbb <+363>:   mov    %r15,%rdi
   0x000055a85e082dbe <+366>:   mov    %rax,-0x40(%rbp)
   0x000055a85e082dc2 <+370>:   mov    %r8,-0x38(%rbp)
   0x000055a85e082dc6 <+374>:   call   0x55a85e0b93c0 <_ZdlPv>
   0x000055a85e082dcb <+379>:   mov    -0x40(%rbp),%rax
   0x000055a85e082dcf <+383>:   mov    -0x38(%rbp),%r8
   0x000055a85e082dd3 <+387>:   mov    %rax,0x0(%r13)
   0x000055a85e082dd7 <+391>:   add    %r14,%rax
   0x000055a85e082dda <+394>:   mov    %r8,0x8(%r13)
   0x000055a85e082dde <+398>:   mov    %rax,0x10(%r13)
   0x000055a85e082de2 <+402>:   add    $0x18,%rsp
   0x000055a85e082de6 <+406>:   pop    %rbx
   0x000055a85e082de7 <+407>:   pop    %r12
   0x000055a85e082de9 <+409>:   pop    %r13
   0x000055a85e082deb <+411>:   pop    %r14
   0x000055a85e082ded <+413>:   pop    %r15
   0x000055a85e082def <+415>:   pop    %rbp
   0x000055a85e082df0 <+416>:   ret
   0x000055a85e082df1 <+417>:   nopl   0x0(%rax)
=> 0x000055a85e082df8 <+424>:   vmovdqu 0x10(%rdx),%xmm2
   0x000055a85e082dfd <+429>:   vmovups %xmm2,0x10(%rcx)
   0x000055a85e082e02 <+434>:   jmp    0x55a85e082cea <_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIP--Type <RET> for more, q to quit, c to continue without paging--c
S5_S7_EEDpOT_+154>
   0x000055a85e082e07 <+439>:   nopw   0x0(%rax,%rax,1)
   0x000055a85e082e10 <+448>:   mov    $0x20,%r8d
   0x000055a85e082e16 <+454>:   xor    %eax,%eax
   0x000055a85e082e18 <+456>:   jmp    0x55a85e082cc5 <_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_+117>
   0x000055a85e082e1d <+461>:   call   0x55a85de284f0 <_ZSt17__throw_bad_allocv@plt>
End of assembler dump.
bertmelis commented 1 year ago

After some googling, I think it's about Intel's CET.

J4105 doesn't support it: (see https://gist.github.com/kohnakagawa/fb77904fcc44fc5652ef6d338c35a718)

romange commented 10 months ago

closing