pistacheio / pistache

A high-performance REST toolkit written in C++
https://pistacheio.github.io/pistache/
Apache License 2.0
3.12k stars 688 forks source link

Getting SIGILL with gcc12 #1161

Closed aniketor closed 10 months ago

aniketor commented 10 months ago

So I compiled an application which used Pistache on an Intel 11th gen core i7 processor and used it on Intel 13th gen core processor. I'm getting an Illegal instruction error. I have built Pistache from source.

Program received signal SIGILL, Illegal instruction.
0x000055e2e5d5c74f in std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_Compiler(char const*, char const*, std::locale const&, std::regex_constants::syntax_option_type) ()
(gdb) bt
#0  0x000055e2e5d5c74f in std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_Compiler(char const*, char const*, std::locale const&, std::regex_constants::syntax_option_type) ()
#1  0x00007f1f004018d0 in std::__cxx11::basic_regex<char, std::__cxx11::regex_traits<char> >::_M_compile(char const*, char const*, std::regex_constants::syntax_option_type) ()
   from /opt/scorer/lib/libpistache.so.0
#2  0x00007f1f003ff72a in std::__cxx11::basic_regex<char, std::__cxx11::regex_traits<char> >::basic_regex(char const*, std::regex_constants::syntax_option_type) ()
   from /opt/scorer/lib/libpistache.so.0
#3  0x00007f1f003fcfc5 in ?? () from /usr/local/lib/libpistache.so.0
#4  0x00007f1f003fd002 in ?? () from /usr/local/lib/libpistache.so.0
#5  0x00007f1f0051747e in call_init (l=<optimized out>, argc=argc@entry=7, argv=argv@entry=0x7ffc713229b8, env=env@entry=0x7ffc713229f8) at ./elf/dl-init.c:70
#6  0x00007f1f00517568 in call_init (env=0x7ffc713229f8, argv=0x7ffc713229b8, argc=7, l=<optimized out>) at ./elf/dl-init.c:33
#7  _dl_init (main_map=0x7f1f0054c2e0, argc=7, argv=0x7ffc713229b8, env=0x7ffc713229f8) at ./elf/dl-init.c:117
#8  0x00007f1f005312ea in _dl_start_user () from /lib64/ld-linux-x86-64.so.2
(

Intel 13th has removed avx512 support at launch. Not sure if it has anything to do with it. Is there anything I can do? Additionally I used -march=x86-64 in CLFAGS instead of native but still hitting the same error. Environment details:

Host: Debian 12
Docker: Ubuntu 22.02 LTS
GCC: 12.3.0
dennisjenkins75 commented 10 months ago

Can you use GDB to get a disassembly of the area around the EIP where SIGILL was thrown, and post it to this bug?

kiplingw commented 10 months ago

My guess is it's probably the AVX or FMA ISA. Sometimes when running in containers AVX is disabled by the system administrators - especially on shared hosting environments because of miners.

aniketor commented 10 months ago

@dennisjenkins75 Here's the dump.

Program received signal SIGILL, Illegal instruction.
0x0000564433c1274f in std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_Compiler(char const*, char const*, std::locale const&, std::regex_constants::syntax_option_type) ()
(gdb) disassemble 0x0000564433c1274f
Dump of assembler code for function _ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE:
   0x0000564433c12540 <+0>: endbr64 
   0x0000564433c12544 <+4>: push   %rbp
   0x0000564433c12545 <+5>: mov    %rsp,%rbp
   0x0000564433c12548 <+8>: push   %r15
   0x0000564433c1254a <+10>:    mov    %rdx,%r15
   0x0000564433c1254d <+13>:    push   %r14
   0x0000564433c1254f <+15>:    mov    %rcx,%r14
   0x0000564433c12552 <+18>:    push   %r13
   0x0000564433c12554 <+20>:    mov    %rsi,%r13
   0x0000564433c12557 <+23>:    push   %r12
   0x0000564433c12559 <+25>:    push   %rbx
   0x0000564433c1255a <+26>:    mov    %rdi,%rbx
   0x0000564433c1255d <+29>:    and    $0xffffffffffffffe0,%rsp
   0x0000564433c12561 <+33>:    sub    $0xc0,%rsp
   0x0000564433c12568 <+40>:    mov    %fs:0x28,%rax
   0x0000564433c12571 <+49>:    mov    %rax,0xb8(%rsp)
   0x0000564433c12579 <+57>:    mov    %r8d,%eax
   0x0000564433c1257c <+60>:    and    $0x3f0,%eax
   0x0000564433c12581 <+65>:    jne    0x564433c128c8 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+904>
   0x0000564433c12587 <+71>:    or     $0x10,%r8d
   0x0000564433c1258b <+75>:    mov    %r8d,(%rbx)
   0x0000564433c1258e <+78>:    lea    0x30(%rsp),%r12
   0x0000564433c12593 <+83>:    lea    0x8(%rbx),%rax
   0x0000564433c12597 <+87>:    mov    %r14,%rsi
   0x0000564433c1259a <+90>:    mov    %r12,%rdi
   0x0000564433c1259d <+93>:    mov    %rax,0x18(%rsp)
   0x0000564433c125a2 <+98>:    call   0x564433bf2d70 <_ZNSt6localeC1ERKS_@plt>
   0x0000564433c125a7 <+103>:   mov    (%rbx),%ecx
   0x0000564433c125a9 <+105>:   mov    0x18(%rsp),%rdi
   0x0000564433c125ae <+110>:   mov    %r12,%r8
   0x0000564433c125b1 <+113>:   mov    %r15,%rdx
   0x0000564433c125b4 <+116>:   mov    %r13,%rsi
   0x0000564433c125b7 <+119>:   call   0x564433c02120 <_ZNSt8__detail8_ScannerIcEC2EPKcS3_NSt15regex_constants18syntax_option_typeESt6locale>
   0x0000564433c125bc <+124>:   mov    %r12,%rdi
   0x0000564433c125bf <+127>:   call   0x564433bf3120 <_ZNSt6localeD1Ev@plt>
   0x0000564433c125c4 <+132>:   movq   $0x0,0x100(%rbx)
   0x0000564433c125cf <+143>:   mov    $0x68,%edi
   0x0000564433c125d4 <+148>:   call   0x564433bf2ee0 <_Znwm@plt>
   0x0000564433c125d9 <+153>:   mov    %rax,%rdx
   0x0000564433c125dc <+156>:   lea    0x3370d(%rip),%rax        # 0x564433c45cf0 <_ZTVSt23_Sp_counted_ptr_inplaceINSt8__detail4_NFAINSt7__cxx1112regex_traitsIcEEEESaIvELN9__gnu_cxx12_Lock_policyE2EE+16>
--Type <RET> for more, q to quit, c to continue without paging--
   0x0000564433c125e3 <+163>:   mov    %rax,(%rdx)
   0x0000564433c125e6 <+166>:   mov    (%rbx),%eax
   0x0000564433c125e8 <+168>:   movabs $0x100000001,%rcx
   0x0000564433c125f2 <+178>:   mov    %rcx,0x8(%rdx)
   0x0000564433c125f6 <+182>:   movq   $0x0,0x10(%rdx)
   0x0000564433c125fe <+190>:   movq   $0x0,0x18(%rdx)
   0x0000564433c12606 <+198>:   movq   $0x0,0x20(%rdx)
   0x0000564433c1260e <+206>:   mov    %eax,0x28(%rdx)
   0x0000564433c12611 <+209>:   movq   $0x0,0x30(%rdx)
   0x0000564433c12619 <+217>:   movq   $0x0,0x38(%rdx)
   0x0000564433c12621 <+225>:   movb   $0x0,0x40(%rdx)
   0x0000564433c12625 <+229>:   movq   $0x0,0x48(%rdx)
   0x0000564433c1262d <+237>:   movq   $0x0,0x50(%rdx)
   0x0000564433c12635 <+245>:   movq   $0x0,0x58(%rdx)
   0x0000564433c1263d <+253>:   lea    0x60(%rdx),%r15
   0x0000564433c12641 <+257>:   lea    0x28(%rsp),%r13
   0x0000564433c12646 <+262>:   mov    %r15,%rdi
   0x0000564433c12649 <+265>:   mov    %rdx,0x10(%rsp)
   0x0000564433c1264e <+270>:   call   0x564433bf33b0 <_ZNSt6localeC1Ev@plt>
   0x0000564433c12653 <+275>:   mov    %r14,%rsi
   0x0000564433c12656 <+278>:   mov    %r13,%rdi
   0x0000564433c12659 <+281>:   call   0x564433bf2d70 <_ZNSt6localeC1ERKS_@plt>
   0x0000564433c1265e <+286>:   mov    %r15,%rsi
   0x0000564433c12661 <+289>:   mov    %r12,%rdi
   0x0000564433c12664 <+292>:   call   0x564433bf2d70 <_ZNSt6localeC1ERKS_@plt>
   0x0000564433c12669 <+297>:   mov    %r13,%rsi
   0x0000564433c1266c <+300>:   mov    %r15,%rdi
   0x0000564433c1266f <+303>:   call   0x564433bf2f40 <_ZNSt6localeaSERKS_@plt>
   0x0000564433c12674 <+308>:   mov    %r12,%rsi
   0x0000564433c12677 <+311>:   mov    %r13,%rdi
   0x0000564433c1267a <+314>:   call   0x564433bf2f40 <_ZNSt6localeaSERKS_@plt>
   0x0000564433c1267f <+319>:   mov    %r12,%rdi
   0x0000564433c12682 <+322>:   call   0x564433bf3120 <_ZNSt6localeD1Ev@plt>
   0x0000564433c12687 <+327>:   mov    %r13,%rsi
   0x0000564433c1268a <+330>:   mov    %r12,%rdi
   0x0000564433c1268d <+333>:   call   0x564433bf2d70 <_ZNSt6localeC1ERKS_@plt>
   0x0000564433c12692 <+338>:   mov    %r12,%rdi
   0x0000564433c12695 <+341>:   call   0x564433bf3120 <_ZNSt6localeD1Ev@plt>
   0x0000564433c1269a <+346>:   mov    %r13,%rdi
   0x0000564433c1269d <+349>:   call   0x564433bf3120 <_ZNSt6localeD1Ev@plt>
   0x0000564433c126a2 <+354>:   mov    0x10(%rsp),%rdx
   0x0000564433c126a7 <+359>:   lea    0x110(%rbx),%rax
--Type <RET> for more, q to quit, c to continue without paging--
   0x0000564433c126ae <+366>:   mov    %rdx,0x108(%rbx)
   0x0000564433c126b5 <+373>:   mov    %rax,0x8(%rsp)
   0x0000564433c126ba <+378>:   add    $0x10,%rdx
   0x0000564433c126be <+382>:   lea    0x120(%rbx),%rax
   0x0000564433c126c5 <+389>:   mov    %rdx,0x100(%rbx)
   0x0000564433c126cc <+396>:   mov    %rax,0x110(%rbx)
   0x0000564433c126d3 <+403>:   movq   $0x0,0x118(%rbx)
   0x0000564433c126de <+414>:   movb   $0x0,0x120(%rbx)
   0x0000564433c126e5 <+421>:   movq   $0x0,0x130(%rbx)
   0x0000564433c126f0 <+432>:   movq   $0x8,0x138(%rbx)
   0x0000564433c126fb <+443>:   vpxor  %xmm0,%xmm0,%xmm0
   0x0000564433c126ff <+447>:   vmovdqu %ymm0,0x140(%rbx)
   0x0000564433c12707 <+455>:   vmovdqu %ymm0,0x160(%rbx)
   0x0000564433c1270f <+463>:   mov    $0x40,%edi
   0x0000564433c12714 <+468>:   vzeroupper 
   0x0000564433c12717 <+471>:   call   0x564433bf2ee0 <_Znwm@plt>
   0x0000564433c1271c <+476>:   mov    0x138(%rbx),%rdx
   0x0000564433c12723 <+483>:   mov    %rax,0x130(%rbx)
   0x0000564433c1272a <+490>:   lea    -0x4(,%rdx,4),%rdx
   0x0000564433c12732 <+498>:   and    $0xfffffffffffffff8,%rdx
   0x0000564433c12736 <+502>:   mov    $0x1f8,%edi
   0x0000564433c1273b <+507>:   lea    (%rax,%rdx,1),%r13
   0x0000564433c1273f <+511>:   call   0x564433bf2ee0 <_Znwm@plt>
   0x0000564433c12744 <+516>:   lea    0x1f8(%rax),%rcx
   0x0000564433c1274b <+523>:   mov    %rax,0x0(%r13)
=> 0x0000564433c1274f <+527>:   vpbroadcastq %rax,%xmm0
   0x0000564433c12755 <+533>:   mov    0x100(%rbx),%rax
   0x0000564433c1275c <+540>:   vmovq  %rcx,%xmm1
   0x0000564433c12761 <+545>:   add    $0x50,%rax
   0x0000564433c12765 <+549>:   vpinsrq $0x1,%r13,%xmm1,%xmm1
   0x0000564433c1276b <+555>:   mov    %rax,0x180(%rbx)
   0x0000564433c12772 <+562>:   vinserti128 $0x1,%xmm1,%ymm0,%ymm0
   0x0000564433c12778 <+568>:   vmovdqu %ymm0,0x140(%rbx)
   0x0000564433c12780 <+576>:   vmovdqu %ymm0,0x160(%rbx)
   0x0000564433c12788 <+584>:   mov    %r14,%rdi
   0x0000564433c1278b <+587>:   lea    0xd0(%rbx),%r15
   0x0000564433c12792 <+594>:   vzeroupper 
   0x0000564433c12795 <+597>:   call   0x564433bf2c30 <_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@plt>
   0x0000564433c1279a <+602>:   mov    0x100(%rbx),%r13
   0x0000564433c127a1 <+609>:   mov    %rax,0x188(%rbx)
   0x0000564433c127a8 <+616>:   mov    0x28(%r13),%r14
   0x0000564433c127ac <+620>:   mov    0x20(%r13),%rax
--Type <RET> for more, q to quit, c to continue without paging--
   0x0000564433c127b0 <+624>:   mov    0x8(%r13),%rsi
   0x0000564433c127b4 <+628>:   mov    %rax,0x10(%rsp)
   0x0000564433c127b9 <+633>:   lea    0x1(%r14),%rax
   0x0000564433c127bd <+637>:   mov    %rax,0x28(%r13)
   0x0000564433c127c1 <+641>:   mov    %r14,0x30(%rsp)
   0x0000564433c127c6 <+646>:   cmp    0x10(%r13),%rsi
   0x0000564433c127ca <+650>:   je     0x564433c129a0 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1120>
   0x0000564433c127d0 <+656>:   mov    %r14,(%rsi)
   0x0000564433c127d3 <+659>:   add    $0x8,%rsi
   0x0000564433c127d7 <+663>:   mov    %rsi,0x8(%r13)
   0x0000564433c127db <+667>:   mov    %r14,0x60(%rsp)
   0x0000564433c127e0 <+672>:   movl   $0x8,0x50(%rsp)
   0x0000564433c127e8 <+680>:   movq   $0xffffffffffffffff,0x58(%rsp)
   0x0000564433c127f1 <+689>:   vmovdqa 0x70(%rsp),%xmm2
   0x0000564433c127f7 <+695>:   vmovdqu 0x50(%rsp),%ymm0
   0x0000564433c127fd <+701>:   vmovdqa %xmm2,0xa0(%rsp)
   0x0000564433c12806 <+710>:   vmovdqa %ymm0,0x80(%rsp)
   0x0000564433c1280f <+719>:   mov    0x40(%r13),%rsi
   0x0000564433c12813 <+723>:   cmp    0x48(%r13),%rsi
   0x0000564433c12817 <+727>:   je     0x564433c12980 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1088>
   0x0000564433c1281d <+733>:   vmovdqu %ymm0,(%rsi)
   0x0000564433c12821 <+737>:   vmovdqa 0xa0(%rsp),%xmm3
   0x0000564433c1282a <+746>:   vmovdqu %xmm3,0x20(%rsi)
   0x0000564433c1282f <+751>:   mov    0x40(%r13),%rax
   0x0000564433c12833 <+755>:   add    $0x30,%rax
   0x0000564433c12837 <+759>:   mov    %rax,0x40(%r13)
   0x0000564433c1283b <+763>:   vzeroupper 
   0x0000564433c1283e <+766>:   sub    0x38(%r13),%rax
   0x0000564433c12842 <+770>:   mov    %rax,%r15
   0x0000564433c12845 <+773>:   mov    %rax,%r14
   0x0000564433c12848 <+776>:   sar    $0x4,%r15
   0x0000564433c1284c <+780>:   movabs $0xaaaaaaaaaaaaaaab,%rax
   0x0000564433c12856 <+790>:   imul   %rax,%r15
   0x0000564433c1285a <+794>:   cmp    $0x493e00,%r14
   0x0000564433c12861 <+801>:   ja     0x564433c12d44 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+2052>
   0x0000564433c12867 <+807>:   dec    %r15
   0x0000564433c1286a <+810>:   cmpl   $0xb,0x80(%rsp)
   0x0000564433c12872 <+818>:   je     0x564433c12928 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1000>
   0x0000564433c12878 <+824>:   cmpl   $0xb,0x50(%rsp)
   0x0000564433c1287d <+829>:   je     0x564433c12956 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1046>
   0x0000564433c12883 <+835>:   mov    0x10(%rsp),%rax
   0x0000564433c12888 <+840>:   mov    %rbx,%rdi
--Type <RET> for more, q to quit, c to continue without paging--
   0x0000564433c1288b <+843>:   lea    (%rax,%rax,2),%rax
   0x0000564433c1288f <+847>:   shl    $0x4,%rax
   0x0000564433c12893 <+851>:   add    0x38(%r13),%rax
   0x0000564433c12897 <+855>:   mov    %r15,0x8(%rax)
   0x0000564433c1289b <+859>:   lea    0xd0(%rbx),%r15
   0x0000564433c128a2 <+866>:   call   0x564433c121d0 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEE14_M_disjunctionEv>
   0x0000564433c128a7 <+871>:   cmpl   $0x1b,0x98(%rbx)
   0x0000564433c128ae <+878>:   lea    0xd0(%rbx),%r15
   0x0000564433c128b5 <+885>:   je     0x564433c129c0 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1152>
   0x0000564433c128bb <+891>:   mov    $0x5,%edi
   0x0000564433c128c0 <+896>:   call   0x564433bf2b70 <_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@plt>
   0x0000564433c128c5 <+901>:   nopl   (%rax)
   0x0000564433c128c8 <+904>:   cmp    $0x80,%eax
   0x0000564433c128cd <+909>:   je     0x564433c1258b <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+75>
   0x0000564433c128d3 <+915>:   jbe    0x564433c12900 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+960>
   0x0000564433c128d5 <+917>:   sub    $0x100,%eax
   0x0000564433c128da <+922>:   test   $0xfffffef0,%eax
   0x0000564433c128df <+927>:   je     0x564433c1258b <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+75>
   0x0000564433c128e5 <+933>:   lea    0x227a6(%rip),%rsi        # 0x564433c35092
   0x0000564433c128ec <+940>:   mov    $0xe,%edi
   0x0000564433c128f1 <+945>:   call   0x564433bf4bed <_ZSt19__throw_regex_errorNSt15regex_constants10error_typeEPKc>
   0x0000564433c128f6 <+950>:   cs nopw 0x0(%rax,%rax,1)
   0x0000564433c12900 <+960>:   sub    $0x10,%eax
   0x0000564433c12903 <+963>:   cmp    $0x30,%eax
   0x0000564433c12906 <+966>:   ja     0x564433c128e5 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+933>
   0x0000564433c12908 <+968>:   movabs $0x1000000010001,%rdx
   0x0000564433c12912 <+978>:   bt     %rax,%rdx
   0x0000564433c12916 <+982>:   setb   %al
   0x0000564433c12919 <+985>:   test   %al,%al
   0x0000564433c1291b <+987>:   je     0x564433c128e5 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+933>
   0x0000564433c1291d <+989>:   jmp    0x564433c1258b <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+75>
   0x0000564433c12922 <+994>:   nopw   0x0(%rax,%rax,1)
   0x0000564433c12928 <+1000>:  mov    0xa0(%rsp),%rax
   0x0000564433c12930 <+1008>:  test   %rax,%rax
   0x0000564433c12933 <+1011>:  je     0x564433c12878 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+824>
   0x0000564433c12939 <+1017>:  lea    0x90(%rsp),%rdi
   0x0000564433c12941 <+1025>:  mov    $0x3,%edx
   0x0000564433c12946 <+1030>:  mov    %rdi,%rsi
   0x0000564433c12949 <+1033>:  call   *%rax
   0x0000564433c1294b <+1035>:  cmpl   $0xb,0x50(%rsp)
   0x0000564433c12950 <+1040>:  jne    0x564433c12883 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+835>
   0x0000564433c12956 <+1046>:  mov    0x70(%rsp),%rax
--Type <RET> for more, q to quit, c to continue without paging--
   0x0000564433c1295b <+1051>:  test   %rax,%rax
   0x0000564433c1295e <+1054>:  je     0x564433c12883 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+835>
   0x0000564433c12964 <+1060>:  lea    0x60(%rsp),%rdi
   0x0000564433c12969 <+1065>:  mov    $0x3,%edx
   0x0000564433c1296e <+1070>:  mov    %rdi,%rsi
   0x0000564433c12971 <+1073>:  call   *%rax
   0x0000564433c12973 <+1075>:  jmp    0x564433c12883 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+835>
   0x0000564433c12978 <+1080>:  nopl   0x0(%rax,%rax,1)
   0x0000564433c12980 <+1088>:  lea    0x80(%rsp),%r14
   0x0000564433c12988 <+1096>:  lea    0x38(%r13),%rdi
   0x0000564433c1298c <+1100>:  mov    %r14,%rdx
   0x0000564433c1298f <+1103>:  vzeroupper 
   0x0000564433c12992 <+1106>:  call   0x564433c02380 <_ZNSt6vectorINSt8__detail6_StateIcEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_>
   0x0000564433c12997 <+1111>:  mov    0x40(%r13),%rax
   0x0000564433c1299b <+1115>:  jmp    0x564433c1283e <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+766>
   0x0000564433c129a0 <+1120>:  mov    %r12,%rdx
   0x0000564433c129a3 <+1123>:  mov    %r13,%rdi
   0x0000564433c129a6 <+1126>:  lea    0xd0(%rbx),%r15
   0x0000564433c129ad <+1133>:  call   0x564433c01b30 <_ZNSt6vectorImSaImEE17_M_realloc_insertIJRKmEEEvN9__gnu_cxx17__normal_iteratorIPmS1_EEDpOT_>
   0x0000564433c129b2 <+1138>:  jmp    0x564433c127db <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+667>
   0x0000564433c129b7 <+1143>:  nopw   0x0(%rax,%rax,1)
   0x0000564433c129c0 <+1152>:  mov    0x8(%rsp),%rdi
   0x0000564433c129c5 <+1157>:  mov    %r15,%rsi
   0x0000564433c129c8 <+1160>:  call   0x564433bf2ce0 <_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_@plt>
   0x0000564433c129cd <+1165>:  mov    0x18(%rsp),%rdi
   0x0000564433c129d2 <+1170>:  call   0x564433c020c0 <_ZNSt8__detail8_ScannerIcE10_M_advanceEv>
   0x0000564433c129d7 <+1175>:  mov    %rbx,%rsi
   0x0000564433c129da <+1178>:  mov    %r12,%rdi
   0x0000564433c129dd <+1181>:  call   0x564433c00ea0 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEE6_M_popEv>
   0x0000564433c129e2 <+1186>:  mov    0x38(%r13),%rax
   0x0000564433c129e6 <+1190>:  mov    0x38(%rsp),%rdx
   0x0000564433c129eb <+1195>:  mov    0x100(%rbx),%r12
   0x0000564433c129f2 <+1202>:  mov    %rdx,-0x28(%rax,%r14,1)
   0x0000564433c129f7 <+1207>:  movq   $0xffffffffffffffff,0x58(%rsp)
   0x0000564433c12a00 <+1216>:  movl   $0x9,0x50(%rsp)
   0x0000564433c12a08 <+1224>:  mov    0x40(%rsp),%rax
   0x0000564433c12a0d <+1229>:  mov    %rax,0x18(%rsp)
   0x0000564433c12a12 <+1234>:  mov    0x8(%r12),%rax
   0x0000564433c12a17 <+1239>:  mov    -0x8(%rax),%rdx
   0x0000564433c12a1b <+1243>:  sub    $0x8,%rax
   0x0000564433c12a1f <+1247>:  mov    %rdx,0x60(%rsp)
   0x0000564433c12a24 <+1252>:  mov    %rax,0x8(%r12)
--Type <RET> for more, q to quit, c to continue without paging--
   0x0000564433c12a29 <+1257>:  vmovdqu 0x50(%rsp),%ymm0
   0x0000564433c12a2f <+1263>:  vmovdqa 0x70(%rsp),%xmm4
   0x0000564433c12a35 <+1269>:  vmovdqa %ymm0,0x80(%rsp)
   0x0000564433c12a3e <+1278>:  vmovdqa %xmm4,0xa0(%rsp)
   0x0000564433c12a47 <+1287>:  mov    0x40(%r12),%rsi
   0x0000564433c12a4c <+1292>:  cmp    0x48(%r12),%rsi
   0x0000564433c12a51 <+1297>:  je     0x564433c12b9b <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1627>
   0x0000564433c12a57 <+1303>:  vmovdqu %ymm0,(%rsi)
   0x0000564433c12a5b <+1307>:  vmovdqa 0xa0(%rsp),%xmm5
   0x0000564433c12a64 <+1316>:  lea    0x80(%rsp),%r14
   0x0000564433c12a6c <+1324>:  vmovdqu %xmm5,0x20(%rsi)
   0x0000564433c12a71 <+1329>:  mov    0x40(%r12),%rax
   0x0000564433c12a76 <+1334>:  add    $0x30,%rax
   0x0000564433c12a7a <+1338>:  mov    %rax,0x40(%r12)
   0x0000564433c12a7f <+1343>:  vzeroupper 
   0x0000564433c12a82 <+1346>:  sub    0x38(%r12),%rax
   0x0000564433c12a87 <+1351>:  mov    %rax,%rcx
   0x0000564433c12a8a <+1354>:  mov    %rax,%r12
   0x0000564433c12a8d <+1357>:  sar    $0x4,%rcx
   0x0000564433c12a91 <+1361>:  movabs $0xaaaaaaaaaaaaaaab,%rax
   0x0000564433c12a9b <+1371>:  imul   %rax,%rcx
   0x0000564433c12a9f <+1375>:  cmp    $0x493e00,%r12
   0x0000564433c12aa6 <+1382>:  ja     0x564433c12d1e <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+2014>
   0x0000564433c12aac <+1388>:  dec    %rcx
   0x0000564433c12aaf <+1391>:  cmpl   $0xb,0x80(%rsp)
   0x0000564433c12ab7 <+1399>:  je     0x564433c12c1f <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1759>
   0x0000564433c12abd <+1405>:  cmpl   $0xb,0x50(%rsp)
   0x0000564433c12ac2 <+1410>:  je     0x564433c12bf3 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1715>
   0x0000564433c12ac8 <+1416>:  mov    0x18(%rsp),%rax
   0x0000564433c12acd <+1421>:  mov    0x100(%rbx),%rdi
   0x0000564433c12ad4 <+1428>:  lea    (%rax,%rax,2),%rax
   0x0000564433c12ad8 <+1432>:  shl    $0x4,%rax
   0x0000564433c12adc <+1436>:  add    0x38(%r13),%rax
   0x0000564433c12ae0 <+1440>:  mov    %rcx,0x8(%rax)
   0x0000564433c12ae4 <+1444>:  movl   $0xc,0x80(%rsp)
   0x0000564433c12aef <+1455>:  movq   $0xffffffffffffffff,0x88(%rsp)
   0x0000564433c12afb <+1467>:  mov    %r14,%rsi
   0x0000564433c12afe <+1470>:  call   0x564433c02690 <_ZNSt8__detail4_NFAINSt7__cxx1112regex_traitsIcEEE15_M_insert_stateENS_6_StateIcEE>
   0x0000564433c12b03 <+1475>:  mov    %r14,%rdi
   0x0000564433c12b06 <+1478>:  mov    %rax,%r15
   0x0000564433c12b09 <+1481>:  call   0x564433c01060 <_ZNSt8__detail6_StateIcED2Ev>
   0x0000564433c12b0e <+1486>:  mov    0x100(%rbx),%rsi
--Type <RET> for more, q to quit, c to continue without paging--
   0x0000564433c12b15 <+1493>:  mov    0x38(%r13),%rax
   0x0000564433c12b19 <+1497>:  mov    0x40(%rsi),%rdi
   0x0000564433c12b1d <+1501>:  mov    0x38(%rsi),%rdx
   0x0000564433c12b21 <+1505>:  mov    %r15,-0x28(%rax,%r12,1)
   0x0000564433c12b26 <+1510>:  cmp    %rdi,%rdx
   0x0000564433c12b29 <+1513>:  je     0x564433c12b75 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1589>
   0x0000564433c12b2b <+1515>:  nopl   0x0(%rax,%rax,1)
   0x0000564433c12b30 <+1520>:  mov    0x8(%rdx),%rax
   0x0000564433c12b34 <+1524>:  test   %rax,%rax
   0x0000564433c12b37 <+1527>:  js     0x564433c12b5d <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1565>
   0x0000564433c12b39 <+1529>:  mov    0x38(%rsi),%rcx
   0x0000564433c12b3d <+1533>:  jmp    0x564433c12b4d <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1549>
   0x0000564433c12b3f <+1535>:  nop
   0x0000564433c12b40 <+1536>:  mov    0x8(%rax),%rax
   0x0000564433c12b44 <+1540>:  mov    %rax,0x8(%rdx)
   0x0000564433c12b48 <+1544>:  test   %rax,%rax
   0x0000564433c12b4b <+1547>:  js     0x564433c12b5d <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1565>
   0x0000564433c12b4d <+1549>:  lea    (%rax,%rax,2),%rax
   0x0000564433c12b51 <+1553>:  shl    $0x4,%rax
   0x0000564433c12b55 <+1557>:  add    %rcx,%rax
   0x0000564433c12b58 <+1560>:  cmpl   $0xa,(%rax)
   0x0000564433c12b5b <+1563>:  je     0x564433c12b40 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1536>
   0x0000564433c12b5d <+1565>:  mov    (%rdx),%eax
   0x0000564433c12b5f <+1567>:  lea    -0x1(%rax),%ecx
   0x0000564433c12b62 <+1570>:  cmp    $0x1,%ecx
   0x0000564433c12b65 <+1573>:  jbe    0x564433c12bc0 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1664>
   0x0000564433c12b67 <+1575>:  cmp    $0x7,%eax
   0x0000564433c12b6a <+1578>:  je     0x564433c12bc0 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1664>
   0x0000564433c12b6c <+1580>:  add    $0x30,%rdx
   0x0000564433c12b70 <+1584>:  cmp    %rdx,%rdi
   0x0000564433c12b73 <+1587>:  jne    0x564433c12b30 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1520>
   0x0000564433c12b75 <+1589>:  mov    0xb8(%rsp),%rax
   0x0000564433c12b7d <+1597>:  sub    %fs:0x28,%rax
   0x0000564433c12b86 <+1606>:  jne    0x564433c12c51 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1809>
   0x0000564433c12b8c <+1612>:  lea    -0x28(%rbp),%rsp
   0x0000564433c12b90 <+1616>:  pop    %rbx
   0x0000564433c12b91 <+1617>:  pop    %r12
   0x0000564433c12b93 <+1619>:  pop    %r13
   0x0000564433c12b95 <+1621>:  pop    %r14
   0x0000564433c12b97 <+1623>:  pop    %r15
   0x0000564433c12b99 <+1625>:  pop    %rbp
   0x0000564433c12b9a <+1626>:  ret    
--Type <RET> for more, q to quit, c to continue without paging--
   0x0000564433c12b9b <+1627>:  lea    0x80(%rsp),%r14
   0x0000564433c12ba3 <+1635>:  lea    0x38(%r12),%rdi
   0x0000564433c12ba8 <+1640>:  mov    %r14,%rdx
   0x0000564433c12bab <+1643>:  vzeroupper 
   0x0000564433c12bae <+1646>:  call   0x564433c02380 <_ZNSt6vectorINSt8__detail6_StateIcEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_>
   0x0000564433c12bb3 <+1651>:  mov    0x40(%r12),%rax
   0x0000564433c12bb8 <+1656>:  jmp    0x564433c12a82 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1346>
   0x0000564433c12bbd <+1661>:  nopl   (%rax)
   0x0000564433c12bc0 <+1664>:  mov    0x10(%rdx),%rax
   0x0000564433c12bc4 <+1668>:  test   %rax,%rax
   0x0000564433c12bc7 <+1671>:  jns    0x564433c12bdd <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1693>
   0x0000564433c12bc9 <+1673>:  jmp    0x564433c12b6c <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1580>
   0x0000564433c12bcb <+1675>:  nopl   0x0(%rax,%rax,1)
   0x0000564433c12bd0 <+1680>:  mov    0x8(%rax),%rax
   0x0000564433c12bd4 <+1684>:  mov    %rax,0x10(%rdx)
   0x0000564433c12bd8 <+1688>:  test   %rax,%rax
   0x0000564433c12bdb <+1691>:  js     0x564433c12b6c <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1580>
   0x0000564433c12bdd <+1693>:  lea    (%rax,%rax,2),%rax
   0x0000564433c12be1 <+1697>:  shl    $0x4,%rax
   0x0000564433c12be5 <+1701>:  add    0x38(%rsi),%rax
   0x0000564433c12be9 <+1705>:  cmpl   $0xa,(%rax)
   0x0000564433c12bec <+1708>:  je     0x564433c12bd0 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1680>
   0x0000564433c12bee <+1710>:  jmp    0x564433c12b6c <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1580>
   0x0000564433c12bf3 <+1715>:  mov    0x70(%rsp),%rax
   0x0000564433c12bf8 <+1720>:  test   %rax,%rax
   0x0000564433c12bfb <+1723>:  je     0x564433c12ac8 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1416>
   0x0000564433c12c01 <+1729>:  lea    0x60(%rsp),%rdi
   0x0000564433c12c06 <+1734>:  mov    $0x3,%edx
   0x0000564433c12c0b <+1739>:  mov    %rdi,%rsi
   0x0000564433c12c0e <+1742>:  mov    %rcx,0x10(%rsp)
   0x0000564433c12c13 <+1747>:  call   *%rax
   0x0000564433c12c15 <+1749>:  mov    0x10(%rsp),%rcx
   0x0000564433c12c1a <+1754>:  jmp    0x564433c12ac8 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1416>
   0x0000564433c12c1f <+1759>:  mov    0xa0(%rsp),%rax
   0x0000564433c12c27 <+1767>:  test   %rax,%rax
   0x0000564433c12c2a <+1770>:  je     0x564433c12abd <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1405>
   0x0000564433c12c30 <+1776>:  lea    0x90(%rsp),%rdi
   0x0000564433c12c38 <+1784>:  mov    $0x3,%edx
   0x0000564433c12c3d <+1789>:  mov    %rdi,%rsi
   0x0000564433c12c40 <+1792>:  mov    %rcx,0x10(%rsp)
   0x0000564433c12c45 <+1797>:  call   *%rax
   0x0000564433c12c47 <+1799>:  mov    0x10(%rsp),%rcx
--Type <RET> for more, q to quit, c to continue without paging--
   0x0000564433c12c4c <+1804>:  jmp    0x564433c12abd <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1405>
   0x0000564433c12c51 <+1809>:  call   0x564433bf2f70 <__stack_chk_fail@plt>
   0x0000564433c12c56 <+1814>:  endbr64 
   0x0000564433c12c5a <+1818>:  mov    %rax,%r12
   0x0000564433c12c5d <+1821>:  jmp    0x564433c12c68 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1832>
   0x0000564433c12c5f <+1823>:  endbr64 
   0x0000564433c12c63 <+1827>:  mov    %rax,%r12
   0x0000564433c12c66 <+1830>:  jmp    0x564433c12cb4 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1908>
   0x0000564433c12c68 <+1832>:  mov    %r14,%rdi
   0x0000564433c12c6b <+1835>:  vzeroupper 
   0x0000564433c12c6e <+1838>:  call   0x564433c01060 <_ZNSt8__detail6_StateIcED2Ev>
   0x0000564433c12c73 <+1843>:  lea    0x50(%rsp),%rdi
   0x0000564433c12c78 <+1848>:  call   0x564433c01060 <_ZNSt8__detail6_StateIcED2Ev>
   0x0000564433c12c7d <+1853>:  cmpq   $0x0,0x130(%rbx)
   0x0000564433c12c85 <+1861>:  je     0x564433c12cd0 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1936>
   0x0000564433c12c87 <+1863>:  mov    0x178(%rbx),%rax
   0x0000564433c12c8e <+1870>:  mov    0x158(%rbx),%r14
   0x0000564433c12c95 <+1877>:  lea    0x8(%rax),%r13
   0x0000564433c12c99 <+1881>:  vzeroupper 
   0x0000564433c12c9c <+1884>:  cmp    %r13,%r14
   0x0000564433c12c9f <+1887>:  jae    0x564433c12d01 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1985>
   0x0000564433c12ca1 <+1889>:  mov    (%r14),%rdi
   0x0000564433c12ca4 <+1892>:  mov    $0x1f8,%esi
   0x0000564433c12ca9 <+1897>:  call   0x564433bf2ef0 <_ZdlPvm@plt>
   0x0000564433c12cae <+1902>:  add    $0x8,%r14
   0x0000564433c12cb2 <+1906>:  jmp    0x564433c12c9c <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1884>
   0x0000564433c12cb4 <+1908>:  mov    %r14,%rdi
   0x0000564433c12cb7 <+1911>:  vzeroupper 
   0x0000564433c12cba <+1914>:  call   0x564433c01060 <_ZNSt8__detail6_StateIcED2Ev>
   0x0000564433c12cbf <+1919>:  jmp    0x564433c12c7d <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1853>
   0x0000564433c12cc1 <+1921>:  vzeroupper 
   0x0000564433c12cc4 <+1924>:  lea    0xd0(%rbx),%r15
   0x0000564433c12ccb <+1931>:  call   0x564433bf3230 <__cxa_end_catch@plt>
   0x0000564433c12cd0 <+1936>:  mov    0x8(%rsp),%rdi
   0x0000564433c12cd5 <+1941>:  vzeroupper 
   0x0000564433c12cd8 <+1944>:  call   0x564433bf3020 <_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@plt>
   0x0000564433c12cdd <+1949>:  mov    0x108(%rbx),%rdi
   0x0000564433c12ce4 <+1956>:  test   %rdi,%rdi
   0x0000564433c12ce7 <+1959>:  je     0x564433c12cee <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1966>
   0x0000564433c12ce9 <+1961>:  call   0x564433bf8a30 <_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv>
   0x0000564433c12cee <+1966>:  mov    %r15,%rdi
   0x0000564433c12cf1 <+1969>:  vzeroupper 
--Type <RET> for more, q to quit, c to continue without paging--
   0x0000564433c12cf4 <+1972>:  call   0x564433bf3020 <_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@plt>
   0x0000564433c12cf9 <+1977>:  mov    %r12,%rdi
   0x0000564433c12cfc <+1980>:  call   0x564433bf32c0 <_Unwind_Resume@plt>
   0x0000564433c12d01 <+1985>:  mov    0x138(%rbx),%rax
   0x0000564433c12d08 <+1992>:  mov    0x130(%rbx),%rdi
   0x0000564433c12d0f <+1999>:  lea    0x0(,%rax,8),%rsi
   0x0000564433c12d17 <+2007>:  call   0x564433bf2ef0 <_ZdlPvm@plt>
   0x0000564433c12d1c <+2012>:  jmp    0x564433c12cd0 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1936>
   0x0000564433c12d1e <+2014>:  lea    0x21fab(%rip),%rsi        # 0x564433c34cd0
   0x0000564433c12d25 <+2021>:  mov    $0x9,%edi
   0x0000564433c12d2a <+2026>:  call   0x564433bf4bed <_ZSt19__throw_regex_errorNSt15regex_constants10error_typeEPKc>
   0x0000564433c12d2f <+2031>:  endbr64 
   0x0000564433c12d33 <+2035>:  mov    %rax,%r12
   0x0000564433c12d36 <+2038>:  jmp    0x564433c12c7d <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1853>
   0x0000564433c12d3b <+2043>:  endbr64 
   0x0000564433c12d3f <+2047>:  mov    %rax,%rbx
   0x0000564433c12d42 <+2050>:  jmp    0x564433c12d5d <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+2077>
   0x0000564433c12d44 <+2052>:  lea    0x21f85(%rip),%rsi        # 0x564433c34cd0
   0x0000564433c12d4b <+2059>:  mov    $0x9,%edi
   0x0000564433c12d50 <+2064>:  lea    0x80(%rsp),%r14
   0x0000564433c12d58 <+2072>:  call   0x564433bf4bed <_ZSt19__throw_regex_errorNSt15regex_constants10error_typeEPKc>
   0x0000564433c12d5d <+2077>:  mov    %r12,%rdi
   0x0000564433c12d60 <+2080>:  vzeroupper 
   0x0000564433c12d63 <+2083>:  call   0x564433bf3120 <_ZNSt6localeD1Ev@plt>
   0x0000564433c12d68 <+2088>:  mov    %rbx,%rdi
   0x0000564433c12d6b <+2091>:  call   0x564433bf32c0 <_Unwind_Resume@plt>
   0x0000564433c12d70 <+2096>:  endbr64 
   0x0000564433c12d74 <+2100>:  mov    %rax,%r12
   0x0000564433c12d77 <+2103>:  jmp    0x564433c12d82 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+2114>
   0x0000564433c12d79 <+2105>:  endbr64 
   0x0000564433c12d7d <+2109>:  mov    %rax,%rdi
   0x0000564433c12d80 <+2112>:  jmp    0x564433c12da3 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+2147>
   0x0000564433c12d82 <+2114>:  mov    %r14,%rdi
   0x0000564433c12d85 <+2117>:  vzeroupper 
   0x0000564433c12d88 <+2120>:  call   0x564433c01060 <_ZNSt8__detail6_StateIcED2Ev>
   0x0000564433c12d8d <+2125>:  lea    0x50(%rsp),%rdi
   0x0000564433c12d92 <+2130>:  call   0x564433c01060 <_ZNSt8__detail6_StateIcED2Ev>
   0x0000564433c12d97 <+2135>:  lea    0xd0(%rbx),%r15
   0x0000564433c12d9e <+2142>:  jmp    0x564433c12c7d <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1853>
   0x0000564433c12da3 <+2147>:  vzeroupper 
   0x0000564433c12da6 <+2150>:  call   0x564433bf2c10 <__cxa_begin_catch@plt>
   0x0000564433c12dab <+2155>:  call   0x564433bf3160 <__cxa_rethrow@plt>
--Type <RET> for more, q to quit, c to continue without paging--
   0x0000564433c12db0 <+2160>:  endbr64 
   0x0000564433c12db4 <+2164>:  mov    %rax,%r12
   0x0000564433c12db7 <+2167>:  lea    0xd0(%rbx),%r15
   0x0000564433c12dbe <+2174>:  jmp    0x564433c12cd0 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1936>
   0x0000564433c12dc3 <+2179>:  endbr64 
   0x0000564433c12dc7 <+2183>:  mov    %rax,%r12
   0x0000564433c12dca <+2186>:  lea    0xd0(%rbx),%r15
   0x0000564433c12dd1 <+2193>:  jmp    0x564433c12cee <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1966>
   0x0000564433c12dd6 <+2198>:  endbr64 
   0x0000564433c12dda <+2202>:  mov    %rax,%r12
   0x0000564433c12ddd <+2205>:  vzeroupper 
   0x0000564433c12de0 <+2208>:  call   0x564433bf3230 <__cxa_end_catch@plt>
   0x0000564433c12de5 <+2213>:  mov    %r12,%rdi
   0x0000564433c12de8 <+2216>:  call   0x564433bf2c10 <__cxa_begin_catch@plt>
   0x0000564433c12ded <+2221>:  mov    0x138(%rbx),%rax
   0x0000564433c12df4 <+2228>:  mov    0x130(%rbx),%rdi
   0x0000564433c12dfb <+2235>:  lea    0x0(,%rax,8),%rsi
   0x0000564433c12e03 <+2243>:  call   0x564433bf2ef0 <_ZdlPvm@plt>
   0x0000564433c12e08 <+2248>:  xor    %eax,%eax
   0x0000564433c12e0a <+2250>:  mov    %rax,0x130(%rbx)
   0x0000564433c12e11 <+2257>:  mov    %rax,0x138(%rbx)
   0x0000564433c12e18 <+2264>:  call   0x564433bf3160 <__cxa_rethrow@plt>
   0x0000564433c12e1d <+2269>:  endbr64 
   0x0000564433c12e21 <+2273>:  mov    %rax,%r12
   0x0000564433c12e24 <+2276>:  jmp    0x564433c12cc1 <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+1921>
End of assembler dump.
aniketor commented 10 months ago

Here's the one that crashed the program. An AVX2 instruction.

(gdb) display/i $pc
1: x/i $pc
=> 0x564433c1274f <_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE+527>:   vpbroadcastq %rax,%xmm0
dennisjenkins75 commented 10 months ago

Next time, please only post a dozen or so opcodes before and after the crash site, not pages of the entire method. :)

Program received signal SIGILL, Illegal instruction.
0x0000564433c1274f in std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_Compiler(char const*, char const*, std::locale const&, std::regex_constants::syntax_option_type) ()
(gdb) disassemble 0x0000564433c1274f

   0x0000564433c12744 <+516>:   lea    0x1f8(%rax),%rcx
   0x0000564433c1274b <+523>:   mov    %rax,0x0(%r13)
=> 0x0000564433c1274f <+527>:   vpbroadcastq %rax,%xmm0
   0x0000564433c12755 <+533>:   mov    0x100(%rbx),%rax
   0x0000564433c1275c <+540>:   vmovq  %rcx,%xmm1
   0x0000564433c12761 <+545>:   add    $0x50,%rax

https://stackoverflow.com/questions/49987858/system-claims-avx2-is-supported-but-broadcasts-of-integer-registers-are-unimple

What is the contents of your cat /proc/cpuinfo (filter for just one core, or use lscpu)?

kiplingw commented 10 months ago

vpbroadcastq is AVX2 instruction. My guess is you don't have AVX2 support on the target. Interested to see what @dennisjenkins75 asked for.

aniketor commented 10 months ago

Sorry about the mess @dennisjenkins75 . Below is my CPU info (for 1 core).

processor   : 15
vendor_id   : GenuineIntel
cpu family  : 6
model       : 186
model name  : 13th Gen Intel(R) Core(TM) i5-1340P
stepping    : 2
microcode   : 0x410e
cpu MHz     : 2200.000
cache size  : 12288 KB
physical id : 0
siblings    : 16
core id     : 23
cpu cores   : 12
apicid      : 46
initial apicid  : 46
fpu     : yes
fpu_exception   : yes
cpuid level : 32
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 smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb intel_pt sha_ni xsaveopt xsavec xgetbv1 xsaves avx_vnni dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp hwp_pkg_req hfi umip pku ospke waitpkg gfni vaes vpclmulqdq rdpid movdiri movdir64b fsrm md_clear serialize arch_lbr ibt flush_l1d 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 usr_wait_pause
bugs        : spectre_v1 spectre_v2 spec_store_bypass swapgs eibrs_pbrsb
bogomips    : 4377.60
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

@kiplingw Yes. It's an AVX2 instruction. However the cpuinfo as well as lscpu claims to have AVX2 support.

aniketor commented 10 months ago

Additional experiment I performed by trying to disable both avx512 and avx2. Compiled using -mno-avx512f -mno-avx CFLAGS. Meson build logs confirmed that the flags were applied. Still getting SIGILL on target machine. ref: https://stackoverflow.com/questions/60815316/disabling-all-avx512-extensions

I confirmed that the target machine (Intel 13th Gen) does not support avx512f.

#include <stdio.h>

int main(){
    __builtin_cpu_init ();
    if (__builtin_cpu_supports ("avx512f"))
        printf("Supports avx512f");
    return 0;
}

avx2 is supported while avx512f is not.

aniketor commented 10 months ago

As per https://docs.oracle.com/cd/E37838_01/html/E61064/gsesq.html vpbroadcastq seems to be an AVX512VL instruction. Not sure how it is related. Can we currently disable avx512 in Pistache? Or is there any way to do it?

kiplingw commented 10 months ago

Very few CPUs support AVX512. It's also controversial. Pistache doesn't require it. But your compiler optimization settings might be trying to use it because it can increase performance, such as certain copy or initialization operations.

aniketor commented 10 months ago

I was able to get it working. I removed -ftree-vectorize gcc arg along with -march=native. Then I added -mno-avx512f arg while building Pistache. Basically I disabled avx512 and turned off native optimisation flags as well. By default it uses -march=x86-64 I think.