nickg / nvc

VHDL compiler and simulator
https://www.nickg.me.uk/nvc/
GNU General Public License v3.0
589 stars 75 forks source link

JIT throwing illegal instructions #887

Closed albydnc closed 1 month ago

albydnc commented 1 month ago

I am using a docker image in CI to execute my simulations. When I run the image locally, all tests are successful, however when I run in CI or on a different machine, I get SIGILL.

*** Caught signal 4 (SIGILL) [address=0x7f22e6631007, ip=0x7f22e6631007] ***

[0x42586d] ../src/util.c:870 signal_handler.lto_priv.0
[0x7f22f7c4970f] (/usr/lib64/libc.so.6) 
[0x7f22e6631007] OSVVM.COVERAGEPKG.CALCPERCENTCOV(II)R+0x7 [VHDL]
*** Caught signal 4 (SIGILL) [address=0x7fcaae020a06, ip=0x7fcaae020a06] ***

[0x42586d] ../src/util.c:870 signal_handler.lto_priv.0
[0x7fcabf73e70f] (/usr/lib64/libc.so.6) 
[0x7fcaae020a06] OSVVM.RANDOMPKG.RANDOMPTYPE.RANDUNSIGNED(N)25IEEE.NUMERIC_STD.UNSIGNED+0x6 [VHDL]

The errors are gone when I remove the --jit flag

nickg commented 1 month ago

Can you try installing capstone (e.g. libcapstone-dev in Ubuntu/Debian) and then re-run configure, make clean, make, make install? That should print a disassembly dump of the instruction that causes the problem.

Are there any differences between the machine where it works and the one which doesn't? E.g. CPU type, model, etc.

nickg commented 1 month ago

I also improved the crash reporting a bit so it prints a hexdump if capstone is not installed.

albydnc commented 1 month ago

hello @nickg, here is the dump:

------------------------------------- OSVVM.COVERAGEPKG.CALCPERCENTCOV(II)R ----
7fcf0fe10600 0000             add byte ptr [rax], al
7fcf0fe10602 0000             add byte ptr [rax], al
7fcf0fe10604 0000             add byte ptr [rax], al
7fcf0fe10606 59               pop rcx
7fcf0fe10607 40               .byte 0x40
7fcf0fe10608 ff               .byte 0xff                          <=============
    RAX 7fcf0fe10600
    RCX 507ae0
    RDX 7ffc118d8a90
    RBX 2c54d58
    RSP 7ffc118d6760
    RBP 7ffc118d72b0
    RSI 7ffc118d7210
    RDI 2a7bce0
    R8  7ffc118d8aa0
    R9  7fcf1156fa98
    R10 2
    R11 1
    R12 c8
    R13 7ffc118d6770
    R14 0
    R15 2b2a2e0
7fcf0fe10609 ff               .byte 0xff
7fcf0fe1060a ff               .byte 0xff
7fcf0fe1060b ff               .byte 0xff
7fcf0fe1060c ff               .byte 0xff
7fcf0fe1060d ff               .byte 0xff
7fcf0fe1060e ef               out dx, eax
7fcf0fe1060f ff               .byte 0xff
7fcf0fe10610 ff               .byte 0xff
7fcf0fe10611 ff               .byte 0xff
7fcf0fe10612 ff               .byte 0xff
7fcf0fe10613 ff               .byte 0xff
7fcf0fe10614 ff               .byte 0xff
7fcf0fe10615 ff               .byte 0xff
7fcf0fe10616 ef               out dx, eax
7fcf0fe10617 7f90             jg 0x7fcf0fe105a9
7fcf0fe10619 90               nop 
7fcf0fe1061a 90               nop 
7fcf0fe1061b 90               nop 
7fcf0fe1061c 90               nop 
7fcf0fe1061d 90               nop 
7fcf0fe1061e 90               nop 
7fcf0fe1061f 90               nop 
7fcf0fe10620 f30f1efa         endbr64 
7fcf0fe10624 4883ec18         sub rsp, 0x18
7fcf0fe10628 48893424         mov qword ptr [rsp], rsi
7fcf0fe1062c 48897c2408       mov qword ptr [rsp + 8], rdi
7fcf0fe10631 c744241000000000 mov dword ptr [rsp + 0x10], 0
7fcf0fe10639 8b4110           mov eax, dword ptr [rcx + 0x10]
7fcf0fe1063c 89442414         mov dword ptr [rsp + 0x14], eax
7fcf0fe10640 488b4210         mov rax, qword ptr [rdx + 0x10]
7fcf0fe10644 4885c0           test rax, rax
7fcf0fe10647 0f8e9b000000     jle 0x7fcf0fe106e8
7fcf0fe1064d f2480f2a4208     cvtsi2sd xmm0, qword ptr [rdx + 8]
7fcf0fe10653 48be0006e10fcf7f movabs rsi, 0x7fcf0fe10600
                -0000            
7fcf0fe1065d f20f5906         mulsd xmm0, qword ptr [rsi]
7fcf0fe10661 f2480f2ac8       cvtsi2sd xmm1, rax
7fcf0fe10666 f20f5ec1         divsd xmm0, xmm1
7fcf0fe1066a 66480f7ec0       movq rax, xmm0
7fcf0fe1066f 48be0806e10fcf7f movabs rsi, 0x7fcf0fe10608
                -0000            
7fcf0fe10679 f20f100e         movsd xmm1, qword ptr [rsi]
7fcf0fe1067d 660f2ec8         ucomisd xmm1, xmm0
7fcf0fe10681 7710             ja 0x7fcf0fe10693
7fcf0fe10683 48be1006e10fcf7f movabs rsi, 0x7fcf0fe10610
                -0000            
7fcf0fe1068d 660f2e06         ucomisd xmm0, qword ptr [rsi]
7fcf0fe10691 766d             jbe 0x7fcf0fe10700
7fcf0fe10693 488902           mov qword ptr [rdx], rax
7fcf0fe10696 48b8ffffffffffff movabs rax, 0xffefffffffffffff
                -efff            
7fcf0fe106a0 48894208         mov qword ptr [rdx + 8], rax
7fcf0fe106a4 48b8ffffffffffff movabs rax, 0x7fefffffffffffff
                -ef7f            
7fcf0fe106ae 48894210         mov qword ptr [rdx + 0x10], rax
7fcf0fe106b2 48c7421800000000 mov qword ptr [rdx + 0x18], 0
7fcf0fe106ba 48b85085bdf6ce7f movabs rax, 0x7fcef6bd8550
                -0000            
7fcf0fe106c4 48894220         mov qword ptr [rdx + 0x20], rax
7fcf0fe106c8 48894228         mov qword ptr [rdx + 0x28], rax
7fcf0fe106cc c744241011000000 mov dword ptr [rsp + 0x10], 0x11
7fcf0fe106d4 48b8f04050000000 movabs rax, 0x5040f0           ; __nvc_do_exit
                -0000            
7fcf0fe106de 4889e6           mov rsi, rsp
7fcf0fe106e1 bf09000000       mov edi, 9
7fcf0fe106e6 ffd0             call rax
7fcf0fe106e8 740c             je 0x7fcf0fe106f6
7fcf0fe106ea 48b8ffffffffffff movabs rax, 0x7fefffffffffffff
                -ef7f            
7fcf0fe106f4 eb0a             jmp 0x7fcf0fe10700
7fcf0fe106f6 48b8000000000000 movabs rax, 0x4059000000000000
                -5940            
7fcf0fe10700 488902           mov qword ptr [rdx], rax
7fcf0fe10703 4883c418         add rsp, 0x18
7fcf0fe10707 c3               ret 
--------------------------------------------------------------------------------

*** Caught signal 4 (SIGILL) [address=0x7fcf0fe10607, ip=0x7fcf0fe10607] ***

[0x42596d] ../src/util.c:870 signal_handler.lto_priv.0
[0x7fcf154cf70f] (/usr/lib64/libc.so.6) 
[0x7fcf0fe10607] OSVVM.COVERAGEPKG.CALCPERCENTCOV(II)R+0x7 [VHDL]
---- OSVVM.RANDOMPKG.RANDOMPTYPE.RANDUNSIGNED(N)25IEEE.NUMERIC_STD.UNSIGNED ----
7f77c9e01300 0000             add byte ptr [rax], al
7f77c9e01302 0000             add byte ptr [rax], al
7f77c9e01304 0000             add byte ptr [rax], al
7f77c9e01306 3e               .byte 0x3e
7f77c9e01307 40               .byte 0x40                          <=============
    RAX 7f77c9e01300
    RCX d2d7d8
    RDX 7ffccb2d6d60
    RBX 1f25b08
    RSP 7ffccb2d6898
    RBP 7ffccb2d6a20
    RSI 7ffccb2d6980
    RDI 1d0c550
    R8  7ffccb2d6d68
    R9  d2d7d8
    R10 1c12f52
    R11 20
    R12 2
    R13 7ffccb2d68b0
    R14 0
    R15 1d14380
7f77c9e01308 ff               .byte 0xff
7f77c9e01309 ff               .byte 0xff
7f77c9e0130a ff               .byte 0xff
7f77c9e0130b ff               .byte 0xff
7f77c9e0130c ff               .byte 0xff
7f77c9e0130d ff               .byte 0xff
7f77c9e0130e ef               out dx, eax
7f77c9e0130f ff               .byte 0xff
7f77c9e01310 ff               .byte 0xff
7f77c9e01311 ff               .byte 0xff
7f77c9e01312 ff               .byte 0xff
7f77c9e01313 ff               .byte 0xff
7f77c9e01314 ff               .byte 0xff
7f77c9e01315 ff               .byte 0xff
7f77c9e01316 ef               out dx, eax
7f77c9e01317 7f90             jg 0x7f77c9e012a9
7f77c9e01319 90               nop 
7f77c9e0131a 90               nop 
7f77c9e0131b 90               nop 
7f77c9e0131c 90               nop 
7f77c9e0131d 90               nop 
7f77c9e0131e 90               nop 
7f77c9e0131f 90               nop 
7f77c9e01320 0000             add byte ptr [rax], al
7f77c9e01322 0000             add byte ptr [rax], al
7f77c9e01324 0000             add byte ptr [rax], al
7f77c9e01326 008000000000     add byte ptr [rax], al
7f77c9e0132c 0000             add byte ptr [rax], al
7f77c9e0132e 008000000000     add byte ptr [rax], al
7f77c9e01334 0000             add byte ptr [rax], al
7f77c9e01336 e03f             loopne 0x7f77c9e01377
7f77c9e01338 0000             add byte ptr [rax], al
7f77c9e0133a 0000             add byte ptr [rax], al
7f77c9e0133c 0000             add byte ptr [rax], al
7f77c9e0133e e03f             loopne 0x7f77c9e0137f
7f77c9e01340 f30f1efa         endbr64 
7f77c9e01344 55               push rbp
7f77c9e01345 4157             push r15
7f77c9e01347 4156             push r14
7f77c9e01349 4155             push r13
7f77c9e0134b 4154             push r12
7f77c9e0134d 53               push rbx
7f77c9e0134e 4883ec68         sub rsp, 0x68
7f77c9e01352 4889cd           mov rbp, rcx
7f77c9e01355 4989d6           mov r14, rdx
7f77c9e01358 4889742408       mov qword ptr [rsp + 8], rsi
7f77c9e0135d 48897c2410       mov qword ptr [rsp + 0x10], rdi
7f77c9e01362 c744241800000000 mov dword ptr [rsp + 0x18], 0
7f77c9e0136a 8b4110           mov eax, dword ptr [rcx + 0x10]
7f77c9e0136d 8944241c         mov dword ptr [rsp + 0x1c], eax
7f77c9e01371 488b02           mov rax, qword ptr [rdx]
7f77c9e01374 4889442438       mov qword ptr [rsp + 0x38], rax
7f77c9e01379 488b5a08         mov rbx, qword ptr [rdx + 8]
7f77c9e0137d 488b0425a087d200 mov rax, qword ptr [0xd287a0]
7f77c9e01385 f2480f2ac3       cvtsi2sd xmm0, rbx
7f77c9e0138a 48b90013e0c9777f movabs rcx, 0x7f77c9e01300
                -0000            
7f77c9e01394 f20f5e01         divsd xmm0, qword ptr [rcx]
7f77c9e01398 66480f7ec1       movq rcx, xmm0
7f77c9e0139d 48ba0813e0c9777f movabs rdx, 0x7f77c9e01308
                -0000            
7f77c9e013a7 f20f100a         movsd xmm1, qword ptr [rdx]
7f77c9e013ab 660f2ec8         ucomisd xmm1, xmm0
7f77c9e013af 0f87f7060000     ja 0x7f77c9e01aac
7f77c9e013b5 48ba1013e0c9777f movabs rdx, 0x7f77c9e01310
                -0000            
7f77c9e013bf 660f2e02         ucomisd xmm0, qword ptr [rdx]
7f77c9e013c3 0f87e3060000     ja 0x7f77c9e01aac
7f77c9e013c9 498906           mov qword ptr [r14], rax
7f77c9e013cc 49894e08         mov qword ptr [r14 + 8], rcx
7f77c9e013d0 c744241813000000 mov dword ptr [rsp + 0x18], 0x13
7f77c9e013d8 488b042500f9d001 mov rax, qword ptr [0x1d0f900]
7f77c9e013e0 488d742408       lea rsi, [rsp + 8]
7f77c9e013e5 bf00f9d001       mov edi, 0x1d0f900
7f77c9e013ea 4c89f2           mov rdx, r14
7f77c9e013ed 4889e9           mov rcx, rbp
7f77c9e013f0 ffd0             call rax
7f77c9e013f2 f2410f1006       movsd xmm0, qword ptr [r14]
7f77c9e013f7 48b82013e0c9777f movabs rax, 0x7f77c9e01320
                -0000            
7f77c9e01401 660f2808         movapd xmm1, xmmword ptr [rax]
7f77c9e01405 660f54c8         andpd xmm1, xmm0
7f77c9e01409 48b83013e0c9777f movabs rax, 0x7f77c9e01330
                -0000            
7f77c9e01413 660f5608         orpd xmm1, xmmword ptr [rax]
7f77c9e01417 f20f58c8         addsd xmm1, xmm0
7f77c9e0141b f2480f2cc9       cvttsd2si rcx, xmm1
7f77c9e01420 4881f900000080   cmp rcx, -0x80000000
7f77c9e01427 0f8cde060000     jl 0x7f77c9e01b0b
7f77c9e0142d b800000080       mov eax, 0x80000000
7f77c9e01432 4839c1           cmp rcx, rax
7f77c9e01435 0f8dd0060000     jge 0x7f77c9e01b0b
7f77c9e0143b 48894c2430       mov qword ptr [rsp + 0x30], rcx
7f77c9e01440 488d43ff         lea rax, [rbx - 1]
7f77c9e01444 48b9898888888888 movabs rcx, 0x8888888888888889
                -8888            
7f77c9e0144e 48f7e9           imul rcx
7f77c9e01451 488d441aff       lea rax, [rdx + rbx - 1]
7f77c9e01456 4889c1           mov rcx, rax
7f77c9e01459 48c1e93f         shr rcx, 0x3f
7f77c9e0145d 48c1f804         sar rax, 4
7f77c9e01461 4801c8           add rax, rcx
7f77c9e01464 4889c1           mov rcx, rax
7f77c9e01467 48c1e105         shl rcx, 5
7f77c9e0146b 4801c0           add rax, rax
7f77c9e0146e 4829c8           sub rax, rcx
7f77c9e01471 488d4403ff       lea rax, [rbx + rax - 1]
7f77c9e01476 4885c0           test rax, rax
7f77c9e01479 7e06             jle 0x7f77c9e01481
7f77c9e0147b 31c9             xor ecx, ecx
7f77c9e0147d 84c9             test cl, cl
7f77c9e0147f 750b             jne 0x7f77c9e0148c
7f77c9e01481 4885c0           test rax, rax
7f77c9e01484 790a             jns 0x7f77c9e01490
7f77c9e01486 31c9             xor ecx, ecx
7f77c9e01488 84c9             test cl, cl
7f77c9e0148a 7504             jne 0x7f77c9e01490
7f77c9e0148c 4883c01e         add rax, 0x1e
7f77c9e01490 89c1             mov ecx, eax
7f77c9e01492 ffc1             inc ecx
7f77c9e01494 894c242c         mov dword ptr [rsp + 0x2c], ecx
7f77c9e01498 0f807e070000     jo 0x7f77c9e01c1c
7f77c9e0149e 4531ff           xor r15d, r15d
7f77c9e014a1 4885db           test rbx, rbx
7f77c9e014a4 4c0f49fb         cmovns r15, rbx
7f77c9e014a8 c744241835000000 mov dword ptr [rsp + 0x18], 0x35
7f77c9e014b0 48b8901ee0c9777f movabs rax, 0x7f77c9e01e90
                -0000            
7f77c9e014ba 488d542408       lea rdx, [rsp + 8]
7f77c9e014bf 4889ef           mov rdi, rbp
7f77c9e014c2 4c89fe           mov rsi, r15
7f77c9e014c5 ffd0             call rax
7f77c9e014c7 4889442440       mov qword ptr [rsp + 0x40], rax
7f77c9e014cc 48c7442448010000 mov qword ptr [rsp + 0x48], 1
                -00              
7f77c9e014d5 4c897c2450       mov qword ptr [rsp + 0x50], r15
7f77c9e014da 48b910b94dcf777f movabs rcx, 0x7f77cf4db910     ; __memset_avx2_unaligned
                -0000            
7f77c9e014e4 4889c7           mov rdi, rax
7f77c9e014e7 31f6             xor esi, esi
7f77c9e014e9 4c89fa           mov rdx, r15
7f77c9e014ec ffd1             call rcx
7f77c9e014ee 4885db           test rbx, rbx
7f77c9e014f1 0f840d020000     je 0x7f77c9e01704
7f77c9e014f7 488b442430       mov rax, qword ptr [rsp + 0x30]
7f77c9e014fc 83c0fe           add eax, -2
7f77c9e014ff 0f8043070000     jo 0x7f77c9e01c48
7f77c9e01505 4898             cdqe 
7f77c9e01507 4889442458       mov qword ptr [rsp + 0x58], rax
7f77c9e0150c 4885c0           test rax, rax
7f77c9e0150f 48896c2420       mov qword ptr [rsp + 0x20], rbp
7f77c9e01514 0f8918020000     jns 0x7f77c9e01732
7f77c9e0151a 488b442430       mov rax, qword ptr [rsp + 0x30]
7f77c9e0151f 89c1             mov ecx, eax
7f77c9e01521 ffc9             dec ecx
7f77c9e01523 0f8050070000     jo 0x7f77c9e01c79
7f77c9e01529 6bc11e           imul eax, ecx, 0x1e
7f77c9e0152c 0f8073070000     jo 0x7f77c9e01ca5
7f77c9e01532 4863c8           movsxd rcx, eax
7f77c9e01535 89ca             mov edx, ecx
7f77c9e01537 ffc2             inc edx
7f77c9e01539 0f8095070000     jo 0x7f77c9e01cd4
7f77c9e0153f 8b74242c         mov esi, dword ptr [rsp + 0x2c]
7f77c9e01543 4c63ee           movsxd r13, esi
7f77c9e01546 01f0             add eax, esi
7f77c9e01548 0f80b2070000     jo 0x7f77c9e01d00
7f77c9e0154e 4863da           movsxd rbx, edx
7f77c9e01551 4863c8           movsxd rcx, eax
7f77c9e01554 4989cc           mov r12, rcx
7f77c9e01557 4929dc           sub r12, rbx
7f77c9e0155a 4c8b7c2440       mov r15, qword ptr [rsp + 0x40]
7f77c9e0155f 488b442448       mov rax, qword ptr [rsp + 0x48]
7f77c9e01564 488b542450       mov rdx, qword ptr [rsp + 0x50]
7f77c9e01569 7c61             jl 0x7f77c9e015cc
7f77c9e0156b 4889d6           mov rsi, rdx
7f77c9e0156e 48f7d6           not rsi
7f77c9e01571 48c1fe3f         sar rsi, 0x3f
7f77c9e01575 4883ce02         or rsi, 2
7f77c9e01579 4801c6           add rsi, rax
7f77c9e0157c 4801d6           add rsi, rdx
7f77c9e0157f 4889d7           mov rdi, rdx
7f77c9e01582 48c1ef3f         shr rdi, 0x3f
7f77c9e01586 4885d2           test rdx, rdx
7f77c9e01589 4989c1           mov r9, rax
7f77c9e0158c 4c0f48ce         cmovs r9, rsi
7f77c9e01590 4989f0           mov r8, rsi
7f77c9e01593 4c0f48c0         cmovs r8, rax
7f77c9e01597 4c39cb           cmp rbx, r9
7f77c9e0159a 0f8c88070000     jl 0x7f77c9e01d28
7f77c9e015a0 4c39c3           cmp rbx, r8
7f77c9e015a3 0f8f7f070000     jg 0x7f77c9e01d28
7f77c9e015a9 4885ff           test rdi, rdi
7f77c9e015ac 4989c1           mov r9, rax
7f77c9e015af 4c0f45ce         cmovne r9, rsi
7f77c9e015b3 4989f0           mov r8, rsi
7f77c9e015b6 4c0f45c0         cmovne r8, rax
7f77c9e015ba 4c39c9           cmp rcx, r9
7f77c9e015bd 0f8c96070000     jl 0x7f77c9e01d59
7f77c9e015c3 4c39c1           cmp rcx, r8
7f77c9e015c6 0f8f8d070000     jg 0x7f77c9e01d59
7f77c9e015cc 4889c1           mov rcx, rax
7f77c9e015cf 4829d9           sub rcx, rbx
7f77c9e015d2 4829c3           sub rbx, rax
7f77c9e015d5 4885d2           test rdx, rdx
7f77c9e015d8 480f48d9         cmovs rbx, rcx
7f77c9e015dc 488b2c25e07ed200 mov rbp, qword ptr [0xd27ee0]
7f77c9e015e4 4d85ed           test r13, r13
7f77c9e015e7 0f88b4070000     js 0x7f77c9e01da1
7f77c9e015ed 48b8d01ee0c9777f movabs rax, 0x7f77c9e01ed0
                -0000            
7f77c9e015f7 bf02000000       mov edi, 2
7f77c9e015fc 8b74242c         mov esi, dword ptr [rsp + 0x2c]
7f77c9e01600 ffd0             call rax
7f77c9e01602 f6c201           test dl, 1
7f77c9e01605 0f85cb070000     jne 0x7f77c9e01dd6
7f77c9e0160b 89c1             mov ecx, eax
7f77c9e0160d ffc9             dec ecx
7f77c9e0160f 0f80ea070000     jo 0x7f77c9e01dff
7f77c9e01615 4863c1           movsxd rax, ecx
7f77c9e01618 488b4c2438       mov rcx, qword ptr [rsp + 0x38]
7f77c9e0161d 49890e           mov qword ptr [r14], rcx
7f77c9e01620 49c7460800000000 mov qword ptr [r14 + 8], 0
7f77c9e01628 49894610         mov qword ptr [r14 + 0x10], rax
7f77c9e0162c c744241813010000 mov dword ptr [rsp + 0x18], 0x113
7f77c9e01634 488b04252045d101 mov rax, qword ptr [0x1d14520]
7f77c9e0163c 488d742408       lea rsi, [rsp + 8]
7f77c9e01641 bf2045d101       mov edi, 0x1d14520
7f77c9e01646 4c89f2           mov rdx, r14
7f77c9e01649 488b4c2420       mov rcx, qword ptr [rsp + 0x20]
7f77c9e0164e ffd0             call rax
7f77c9e01650 498b06           mov rax, qword ptr [r14]
7f77c9e01653 4885c0           test rax, rax
7f77c9e01656 0f8803050000     js 0x7f77c9e01b5f
7f77c9e0165c b900000080       mov ecx, 0x80000000
7f77c9e01661 4839c8           cmp rax, rcx
7f77c9e01664 0f8df5040000     jge 0x7f77c9e01b5f
7f77c9e0166a 4d85ed           test r13, r13
7f77c9e0166d 0f883f050000     js 0x7f77c9e01bb2
7f77c9e01673 4939cd           cmp r13, rcx
7f77c9e01676 0f8d36050000     jge 0x7f77c9e01bb2
7f77c9e0167c 49892e           mov qword ptr [r14], rbp
7f77c9e0167f 49894608         mov qword ptr [r14 + 8], rax
7f77c9e01683 4d896e10         mov qword ptr [r14 + 0x10], r13
7f77c9e01687 c74424182d010000 mov dword ptr [rsp + 0x18], 0x12d
7f77c9e0168f 488b042550f74f01 mov rax, qword ptr [0x14ff750]
7f77c9e01697 488d742408       lea rsi, [rsp + 8]
7f77c9e0169c bf50f74f01       mov edi, 0x14ff750
7f77c9e016a1 4c89f2           mov rdx, r14
7f77c9e016a4 4d89f5           mov r13, r14
7f77c9e016a7 4c8b742420       mov r14, qword ptr [rsp + 0x20]
7f77c9e016ac 4c89f1           mov rcx, r14
7f77c9e016af ffd0             call rax
7f77c9e016b1 498b4d10         mov rcx, qword ptr [r13 + 0x10]
7f77c9e016b5 31d2             xor edx, edx
7f77c9e016b7 49ffc4           inc r12
7f77c9e016ba 490f49d4         cmovns rdx, r12
7f77c9e016be 4889c8           mov rax, rcx
7f77c9e016c1 48c1f83f         sar rax, 0x3f
7f77c9e016c5 4831c8           xor rax, rcx
7f77c9e016c8 4839c2           cmp rdx, rax
7f77c9e016cb 0f8575070000     jne 0x7f77c9e01e46
7f77c9e016d1 4901df           add r15, rbx
7f77c9e016d4 498b7500         mov rsi, qword ptr [r13]
7f77c9e016d8 4c89ff           mov rdi, r15
7f77c9e016db 48b8f0ae4dcf777f movabs rax, 0x7f77cf4daef0     ; __memmove_avx_unaligned
                -0000            
7f77c9e016e5 ffd0             call rax
7f77c9e016e7 488b442440       mov rax, qword ptr [rsp + 0x40]
7f77c9e016ec 488b4c2448       mov rcx, qword ptr [rsp + 0x48]
7f77c9e016f1 488b542450       mov rdx, qword ptr [rsp + 0x50]
7f77c9e016f6 49894500         mov qword ptr [r13], rax
7f77c9e016fa 49894d08         mov qword ptr [r13 + 8], rcx
7f77c9e016fe 49895510         mov qword ptr [r13 + 0x10], rdx
7f77c9e01702 eb1f             jmp 0x7f77c9e01723
7f77c9e01704 488b442438       mov rax, qword ptr [rsp + 0x38]
7f77c9e01709 488b00           mov rax, qword ptr [rax]
7f77c9e0170c 4883c008         add rax, 8
7f77c9e01710 498906           mov qword ptr [r14], rax
7f77c9e01713 49c7460800000000 mov qword ptr [r14 + 8], 0
7f77c9e0171b 49c74610ffffffff mov qword ptr [r14 + 0x10], 0xffffffffffffffff
7f77c9e01723 4883c468         add rsp, 0x68
7f77c9e01727 5b               pop rbx
7f77c9e01728 415c             pop r12
7f77c9e0172a 415d             pop r13
7f77c9e0172c 415e             pop r14
7f77c9e0172e 415f             pop r15
7f77c9e01730 5d               pop rbp
7f77c9e01731 c3               ret 
7f77c9e01732 4531d2           xor r10d, r10d
7f77c9e01735 416bc21e         imul eax, r10d, 0x1e
7f77c9e01739 0f809f010000     jo 0x7f77c9e018de
7f77c9e0173f 90               nop 
7f77c9e01740 4863c8           movsxd rcx, eax
7f77c9e01743 89ca             mov edx, ecx
7f77c9e01745 ffc2             inc edx
7f77c9e01747 0f8028020000     jo 0x7f77c9e01975
7f77c9e0174d 4d89f5           mov r13, r14
7f77c9e01750 83c01e           add eax, 0x1e
7f77c9e01753 0f805c020000     jo 0x7f77c9e019b5
7f77c9e01759 4863da           movsxd rbx, edx
7f77c9e0175c 4863c8           movsxd rcx, eax
7f77c9e0175f 4989cf           mov r15, rcx
7f77c9e01762 4929df           sub r15, rbx
7f77c9e01765 4c8b642440       mov r12, qword ptr [rsp + 0x40]
7f77c9e0176a 488b442448       mov rax, qword ptr [rsp + 0x48]
7f77c9e0176f 488b542450       mov rdx, qword ptr [rsp + 0x50]
7f77c9e01774 7c61             jl 0x7f77c9e017d7
7f77c9e01776 4889d6           mov rsi, rdx
7f77c9e01779 48f7d6           not rsi
7f77c9e0177c 48c1fe3f         sar rsi, 0x3f
7f77c9e01780 4883ce02         or rsi, 2
7f77c9e01784 4801c6           add rsi, rax
7f77c9e01787 4801d6           add rsi, rdx
7f77c9e0178a 4889d7           mov rdi, rdx
7f77c9e0178d 48c1ef3f         shr rdi, 0x3f
7f77c9e01791 4885d2           test rdx, rdx
7f77c9e01794 4989c1           mov r9, rax
7f77c9e01797 4c0f48ce         cmovs r9, rsi
7f77c9e0179b 4989f0           mov r8, rsi
7f77c9e0179e 4c0f48c0         cmovs r8, rax
7f77c9e017a2 4c39cb           cmp rbx, r9
7f77c9e017a5 0f8c4e020000     jl 0x7f77c9e019f9
7f77c9e017ab 4c39c3           cmp rbx, r8
7f77c9e017ae 0f8f45020000     jg 0x7f77c9e019f9
7f77c9e017b4 4885ff           test rdi, rdi
7f77c9e017b7 4989c1           mov r9, rax
7f77c9e017ba 4c0f45ce         cmovne r9, rsi
7f77c9e017be 4989f0           mov r8, rsi
7f77c9e017c1 4c0f45c0         cmovne r8, rax
7f77c9e017c5 4c39c9           cmp rcx, r9
7f77c9e017c8 0f8c57020000     jl 0x7f77c9e01a25
7f77c9e017ce 4c39c1           cmp rcx, r8
7f77c9e017d1 0f8f4e020000     jg 0x7f77c9e01a25
7f77c9e017d7 4c89542460       mov qword ptr [rsp + 0x60], r10
7f77c9e017dc 4889c1           mov rcx, rax
7f77c9e017df 4829d9           sub rcx, rbx
7f77c9e017e2 4829c3           sub rbx, rax
7f77c9e017e5 4885d2           test rdx, rdx
7f77c9e017e8 480f48d9         cmovs rbx, rcx
7f77c9e017ec 488b2c25e07ed200 mov rbp, qword ptr [0xd27ee0]
7f77c9e017f4 4d89ee           mov r14, r13
7f77c9e017f7 488b442438       mov rax, qword ptr [rsp + 0x38]
7f77c9e017fc 49894500         mov qword ptr [r13], rax
7f77c9e01800 49c7450800000000 mov qword ptr [r13 + 8], 0
7f77c9e01808 49c74510ffffff3f mov qword ptr [r13 + 0x10], 0x3fffffff
7f77c9e01810 c7442418b2000000 mov dword ptr [rsp + 0x18], 0xb2
7f77c9e01818 488b04252045d101 mov rax, qword ptr [0x1d14520]
7f77c9e01820 bf2045d101       mov edi, 0x1d14520
7f77c9e01825 488d742408       lea rsi, [rsp + 8]
7f77c9e0182a 4c89ea           mov rdx, r13
7f77c9e0182d 488b4c2420       mov rcx, qword ptr [rsp + 0x20]
7f77c9e01832 ffd0             call rax
7f77c9e01834 498b4500         mov rax, qword ptr [r13]
7f77c9e01838 4885c0           test rax, rax
7f77c9e0183b 0f88c9000000     js 0x7f77c9e0190a
7f77c9e01841 b900000080       mov ecx, 0x80000000
7f77c9e01846 4839c8           cmp rax, rcx
7f77c9e01849 0f8dbb000000     jge 0x7f77c9e0190a
7f77c9e0184f 49896d00         mov qword ptr [r13], rbp
7f77c9e01853 49894508         mov qword ptr [r13 + 8], rax
7f77c9e01857 49c745101e000000 mov qword ptr [r13 + 0x10], 0x1e
7f77c9e0185f c7442418c2000000 mov dword ptr [rsp + 0x18], 0xc2
7f77c9e01867 488b042550f74f01 mov rax, qword ptr [0x14ff750]
7f77c9e0186f bf50f74f01       mov edi, 0x14ff750
7f77c9e01874 488d742408       lea rsi, [rsp + 8]
7f77c9e01879 4c89ea           mov rdx, r13
7f77c9e0187c 488b6c2420       mov rbp, qword ptr [rsp + 0x20]
7f77c9e01881 4d89ee           mov r14, r13
7f77c9e01884 4889e9           mov rcx, rbp
7f77c9e01887 ffd0             call rax
7f77c9e01889 498b4d10         mov rcx, qword ptr [r13 + 0x10]
7f77c9e0188d 49ffc7           inc r15
7f77c9e01890 ba00000000       mov edx, 0
7f77c9e01895 490f49d7         cmovns rdx, r15
7f77c9e01899 4889c8           mov rax, rcx
7f77c9e0189c 48c1f83f         sar rax, 0x3f
7f77c9e018a0 4831c8           xor rax, rcx
7f77c9e018a3 4839c2           cmp rdx, rax
7f77c9e018a6 0f85be010000     jne 0x7f77c9e01a6a
7f77c9e018ac 4901dc           add r12, rbx
7f77c9e018af 498b36           mov rsi, qword ptr [r14]
7f77c9e018b2 4c89e7           mov rdi, r12
7f77c9e018b5 48b8f0ae4dcf777f movabs rax, 0x7f77cf4daef0     ; __memmove_avx_unaligned
                -0000            
7f77c9e018bf ffd0             call rax
7f77c9e018c1 4c8b542460       mov r10, qword ptr [rsp + 0x60]
7f77c9e018c6 4c3b542458       cmp r10, qword ptr [rsp + 0x58]
7f77c9e018cb 0f8449fcffff     je 0x7f77c9e0151a
7f77c9e018d1 49ffc2           inc r10
7f77c9e018d4 416bc21e         imul eax, r10d, 0x1e
7f77c9e018d8 0f8162feffff     jno 0x7f77c9e01740
7f77c9e018de 49c7061e000000   mov qword ptr [r14], 0x1e
7f77c9e018e5 4d895608         mov qword ptr [r14 + 8], r10
7f77c9e018e9 48b8308a09c5777f movabs rax, 0x7f77c5098a30
                -0000            
7f77c9e018f3 4805c0feffff     add rax, -0x140
7f77c9e018f9 49894610         mov qword ptr [r14 + 0x10], rax
7f77c9e018fd c744241877000000 mov dword ptr [rsp + 0x18], 0x77
7f77c9e01905 e992000000       jmp 0x7f77c9e0199c
7f77c9e0190a 49894500         mov qword ptr [r13], rax
7f77c9e0190e 49c7450800000000 mov qword ptr [r13 + 8], 0
7f77c9e01916 49c74510ffffff7f mov qword ptr [r13 + 0x10], 0x7fffffff
7f77c9e0191e 49c7451800000000 mov qword ptr [r13 + 0x18], 0
7f77c9e01926 48b8308a09c5777f movabs rax, 0x7f77c5098a30
                -0000            
7f77c9e01930 4805b0020000     add rax, 0x2b0
7f77c9e01936 49894520         mov qword ptr [r13 + 0x20], rax
7f77c9e0193a 48b8009550000000 movabs rax, 0x509500           ; __nvc_get_object
                -0000            
7f77c9e01944 bfec2eba00       mov edi, 0xba2eec
7f77c9e01949 bea10e0000       mov esi, 0xea1
7f77c9e0194e ffd0             call rax
7f77c9e01950 49894528         mov qword ptr [r13 + 0x28], rax
7f77c9e01954 c7442418bd000000 mov dword ptr [rsp + 0x18], 0xbd
7f77c9e0195c 48b8f04050000000 movabs rax, 0x5040f0           ; __nvc_do_exit
                -0000            
7f77c9e01966 488d742408       lea rsi, [rsp + 8]
7f77c9e0196b bf09000000       mov edi, 9
7f77c9e01970 e9eb000000       jmp 0x7f77c9e01a60
7f77c9e01975 49c70601000000   mov qword ptr [r14], 1
7f77c9e0197c 49894e08         mov qword ptr [r14 + 8], rcx
7f77c9e01980 48b8308a09c5777f movabs rax, 0x7f77c5098a30
                -0000            
7f77c9e0198a 480510feffff     add rax, -0x1f0
7f77c9e01990 49894610         mov qword ptr [r14 + 0x10], rax
7f77c9e01994 c74424187d000000 mov dword ptr [rsp + 0x18], 0x7d
7f77c9e0199c 48b8f04050000000 movabs rax, 0x5040f0           ; __nvc_do_exit
                -0000            
7f77c9e019a6 488d742408       lea rsi, [rsp + 8]
7f77c9e019ab bf01000000       mov edi, 1
7f77c9e019b0 e9e4030000       jmp 0x7f77c9e01d99
7f77c9e019b5 49c745001e000000 mov qword ptr [r13], 0x1e
7f77c9e019bd 49894d08         mov qword ptr [r13 + 8], rcx
7f77c9e019c1 48b8308a09c5777f movabs rax, 0x7f77c5098a30
                -0000            
7f77c9e019cb 480d80000000     or rax, 0x80
7f77c9e019d1 49894510         mov qword ptr [r13 + 0x10], rax
7f77c9e019d5 c744241883000000 mov dword ptr [rsp + 0x18], 0x83
7f77c9e019dd 48b8f04050000000 movabs rax, 0x5040f0           ; __nvc_do_exit
                -0000            
7f77c9e019e7 488d742408       lea rsi, [rsp + 8]
7f77c9e019ec bf01000000       mov edi, 1
7f77c9e019f1 4c89ea           mov rdx, r13
7f77c9e019f4 4889e9           mov rcx, rbp
7f77c9e019f7 ffd0             call rax
7f77c9e019f9 49895d00         mov qword ptr [r13], rbx
7f77c9e019fd 49894508         mov qword ptr [r13 + 8], rax
7f77c9e01a01 49897510         mov qword ptr [r13 + 0x10], rsi
7f77c9e01a05 49897d18         mov qword ptr [r13 + 0x18], rdi
7f77c9e01a09 48b8308a09c5777f movabs rax, 0x7f77c5098a30
                -0000            
7f77c9e01a13 49894520         mov qword ptr [r13 + 0x20], rax
7f77c9e01a17 49894528         mov qword ptr [r13 + 0x28], rax
7f77c9e01a1b c74424189a000000 mov dword ptr [rsp + 0x18], 0x9a
7f77c9e01a23 eb2a             jmp 0x7f77c9e01a4f
7f77c9e01a25 49894d00         mov qword ptr [r13], rcx
7f77c9e01a29 49894508         mov qword ptr [r13 + 8], rax
7f77c9e01a2d 49897510         mov qword ptr [r13 + 0x10], rsi
7f77c9e01a31 49897d18         mov qword ptr [r13 + 0x18], rdi
7f77c9e01a35 48b8308a09c5777f movabs rax, 0x7f77c5098a30
                -0000            
7f77c9e01a3f 49894520         mov qword ptr [r13 + 0x20], rax
7f77c9e01a43 49894528         mov qword ptr [r13 + 0x28], rax
7f77c9e01a47 c7442418a7000000 mov dword ptr [rsp + 0x18], 0xa7
7f77c9e01a4f 48b8f04050000000 movabs rax, 0x5040f0           ; __nvc_do_exit
                -0000            
7f77c9e01a59 488d742408       lea rsi, [rsp + 8]
7f77c9e01a5e 31ff             xor edi, edi
7f77c9e01a60 4c89ea           mov rdx, r13
7f77c9e01a63 488b4c2420       mov rcx, qword ptr [rsp + 0x20]
7f77c9e01a68 ffd0             call rax
7f77c9e01a6a 498916           mov qword ptr [r14], rdx
7f77c9e01a6d 49894608         mov qword ptr [r14 + 8], rax
7f77c9e01a71 49c7461000000000 mov qword ptr [r14 + 0x10], 0
7f77c9e01a79 48b8308a09c5777f movabs rax, 0x7f77c5098a30
                -0000            
7f77c9e01a83 4883c0d0         add rax, -0x30
7f77c9e01a87 49894618         mov qword ptr [r14 + 0x18], rax
7f77c9e01a8b c7442418d0000000 mov dword ptr [rsp + 0x18], 0xd0
7f77c9e01a93 48b8f04050000000 movabs rax, 0x5040f0           ; __nvc_do_exit
                -0000            
7f77c9e01a9d 488d742408       lea rsi, [rsp + 8]
7f77c9e01aa2 bf03000000       mov edi, 3
7f77c9e01aa7 e9ed020000       jmp 0x7f77c9e01d99
7f77c9e01aac 49890e           mov qword ptr [r14], rcx
7f77c9e01aaf 48b8ffffffffffff movabs rax, 0xffefffffffffffff
                -efff            
7f77c9e01ab9 49894608         mov qword ptr [r14 + 8], rax
7f77c9e01abd 48b8ffffffffffff movabs rax, 0x7fefffffffffffff
                -ef7f            
7f77c9e01ac7 49894610         mov qword ptr [r14 + 0x10], rax
7f77c9e01acb 49c7461800000000 mov qword ptr [r14 + 0x18], 0
7f77c9e01ad3 48b8308a09c5777f movabs rax, 0x7f77c5098a30
                -0000            
7f77c9e01add 4805c0f3ffff     add rax, -0xc40
7f77c9e01ae3 49894620         mov qword ptr [r14 + 0x20], rax
7f77c9e01ae7 48b8009550000000 movabs rax, 0x509500           ; __nvc_get_object
                -0000            
7f77c9e01af1 bfbccdbc00       mov edi, 0xbccdbc
7f77c9e01af6 be64010000       mov esi, 0x164
7f77c9e01afb ffd0             call rax
7f77c9e01afd 49894628         mov qword ptr [r14 + 0x28], rax
7f77c9e01b01 c74424180f000000 mov dword ptr [rsp + 0x18], 0xf
7f77c9e01b09 eb3b             jmp 0x7f77c9e01b46
7f77c9e01b0b 49890e           mov qword ptr [r14], rcx
7f77c9e01b0e 49c7460800000080 mov qword ptr [r14 + 8], 0xffffffff80000000
7f77c9e01b16 49c74610ffffff7f mov qword ptr [r14 + 0x10], 0x7fffffff
7f77c9e01b1e 49c7461800000000 mov qword ptr [r14 + 0x18], 0
7f77c9e01b26 48b8308a09c5777f movabs rax, 0x7f77c5098a30
                -0000            
7f77c9e01b30 4805b0f2ffff     add rax, -0xd50
7f77c9e01b36 49894620         mov qword ptr [r14 + 0x20], rax
7f77c9e01b3a 49894628         mov qword ptr [r14 + 0x28], rax
7f77c9e01b3e c74424181f000000 mov dword ptr [rsp + 0x18], 0x1f
7f77c9e01b46 48b8f04050000000 movabs rax, 0x5040f0           ; __nvc_do_exit
                -0000            
7f77c9e01b50 488d742408       lea rsi, [rsp + 8]
7f77c9e01b55 bf09000000       mov edi, 9
7f77c9e01b5a e93a020000       jmp 0x7f77c9e01d99
7f77c9e01b5f 498906           mov qword ptr [r14], rax
7f77c9e01b62 49c7460800000000 mov qword ptr [r14 + 8], 0
7f77c9e01b6a 49c74610ffffff7f mov qword ptr [r14 + 0x10], 0x7fffffff
7f77c9e01b72 49c7461800000000 mov qword ptr [r14 + 0x18], 0
7f77c9e01b7a 48b8308a09c5777f movabs rax, 0x7f77c5098a30
                -0000            
7f77c9e01b84 4805800b0000     add rax, 0xb80
7f77c9e01b8a 49894620         mov qword ptr [r14 + 0x20], rax
7f77c9e01b8e 48b8009550000000 movabs rax, 0x509500           ; __nvc_get_object
                -0000            
7f77c9e01b98 bfec2eba00       mov edi, 0xba2eec
7f77c9e01b9d bea10e0000       mov esi, 0xea1
7f77c9e01ba2 ffd0             call rax
7f77c9e01ba4 49894628         mov qword ptr [r14 + 0x28], rax
7f77c9e01ba8 c74424181e010000 mov dword ptr [rsp + 0x18], 0x11e
7f77c9e01bb0 eb51             jmp 0x7f77c9e01c03
7f77c9e01bb2 4d892e           mov qword ptr [r14], r13
7f77c9e01bb5 49c7460800000000 mov qword ptr [r14 + 8], 0
7f77c9e01bbd 49c74610ffffff7f mov qword ptr [r14 + 0x10], 0x7fffffff
7f77c9e01bc5 49c7461800000000 mov qword ptr [r14 + 0x18], 0
7f77c9e01bcd 48b8308a09c5777f movabs rax, 0x7f77c5098a30
                -0000            
7f77c9e01bd7 4805900e0000     add rax, 0xe90
7f77c9e01bdd 49894620         mov qword ptr [r14 + 0x20], rax
7f77c9e01be1 48b8009550000000 movabs rax, 0x509500           ; __nvc_get_object
                -0000            
7f77c9e01beb bfec2eba00       mov edi, 0xba2eec
7f77c9e01bf0 bea50e0000       mov esi, 0xea5
7f77c9e01bf5 ffd0             call rax
7f77c9e01bf7 49894628         mov qword ptr [r14 + 0x28], rax
7f77c9e01bfb c744241828010000 mov dword ptr [rsp + 0x18], 0x128
7f77c9e01c03 48b8f04050000000 movabs rax, 0x5040f0           ; __nvc_do_exit
                -0000            
7f77c9e01c0d 488d742408       lea rsi, [rsp + 8]
7f77c9e01c12 bf09000000       mov edi, 9
7f77c9e01c17 e920020000       jmp 0x7f77c9e01e3c
7f77c9e01c1c 498906           mov qword ptr [r14], rax
7f77c9e01c1f 49c7460801000000 mov qword ptr [r14 + 8], 1
7f77c9e01c27 48b8308a09c5777f movabs rax, 0x7f77c5098a30
                -0000            
7f77c9e01c31 4805d0f6ffff     add rax, -0x930
7f77c9e01c37 49894610         mov qword ptr [r14 + 0x10], rax
7f77c9e01c3b c744241830000000 mov dword ptr [rsp + 0x18], 0x30
7f77c9e01c43 e954fdffff       jmp 0x7f77c9e0199c
7f77c9e01c48 488b442430       mov rax, qword ptr [rsp + 0x30]
7f77c9e01c4d 498906           mov qword ptr [r14], rax
7f77c9e01c50 49c7460802000000 mov qword ptr [r14 + 8], 2
7f77c9e01c58 48b8308a09c5777f movabs rax, 0x7f77c5098a30
                -0000            
7f77c9e01c62 480500fcffff     add rax, -0x400
7f77c9e01c68 49894610         mov qword ptr [r14 + 0x10], rax
7f77c9e01c6c c74424184c000000 mov dword ptr [rsp + 0x18], 0x4c
7f77c9e01c74 e923fdffff       jmp 0x7f77c9e0199c
7f77c9e01c79 498906           mov qword ptr [r14], rax
7f77c9e01c7c 49c7460801000000 mov qword ptr [r14 + 8], 1
7f77c9e01c84 48b8308a09c5777f movabs rax, 0x7f77c5098a30
                -0000            
7f77c9e01c8e 480580060000     add rax, 0x680
7f77c9e01c94 49894610         mov qword ptr [r14 + 0x10], rax
7f77c9e01c98 c744241857000000 mov dword ptr [rsp + 0x18], 0x57
7f77c9e01ca0 e9f7fcffff       jmp 0x7f77c9e0199c
7f77c9e01ca5 4863c1           movsxd rax, ecx
7f77c9e01ca8 49c7061e000000   mov qword ptr [r14], 0x1e
7f77c9e01caf 49894608         mov qword ptr [r14 + 8], rax
7f77c9e01cb3 48b8308a09c5777f movabs rax, 0x7f77c5098a30
                -0000            
7f77c9e01cbd 4805d0050000     add rax, 0x5d0
7f77c9e01cc3 49894610         mov qword ptr [r14 + 0x10], rax
7f77c9e01cc7 c74424185d000000 mov dword ptr [rsp + 0x18], 0x5d
7f77c9e01ccf e9c8fcffff       jmp 0x7f77c9e0199c
7f77c9e01cd4 49c70601000000   mov qword ptr [r14], 1
7f77c9e01cdb 49894e08         mov qword ptr [r14 + 8], rcx
7f77c9e01cdf 48b8308a09c5777f movabs rax, 0x7f77c5098a30
                -0000            
7f77c9e01ce9 480520050000     add rax, 0x520
7f77c9e01cef 49894610         mov qword ptr [r14 + 0x10], rax
7f77c9e01cf3 c744241863000000 mov dword ptr [rsp + 0x18], 0x63
7f77c9e01cfb e99cfcffff       jmp 0x7f77c9e0199c
7f77c9e01d00 4d892e           mov qword ptr [r14], r13
7f77c9e01d03 49894e08         mov qword ptr [r14 + 8], rcx
7f77c9e01d07 48b8308a09c5777f movabs rax, 0x7f77c5098a30
                -0000            
7f77c9e01d11 480570080000     add rax, 0x870
7f77c9e01d17 49894610         mov qword ptr [r14 + 0x10], rax
7f77c9e01d1b c74424186a000000 mov dword ptr [rsp + 0x18], 0x6a
7f77c9e01d23 e974fcffff       jmp 0x7f77c9e0199c
7f77c9e01d28 49891e           mov qword ptr [r14], rbx
7f77c9e01d2b 49894608         mov qword ptr [r14 + 8], rax
7f77c9e01d2f 49897610         mov qword ptr [r14 + 0x10], rsi
7f77c9e01d33 49897e18         mov qword ptr [r14 + 0x18], rdi
7f77c9e01d37 48b8308a09c5777f movabs rax, 0x7f77c5098a30
                -0000            
7f77c9e01d41 4805f0070000     add rax, 0x7f0
7f77c9e01d47 49894620         mov qword ptr [r14 + 0x20], rax
7f77c9e01d4b 49894628         mov qword ptr [r14 + 0x28], rax
7f77c9e01d4f c7442418e9000000 mov dword ptr [rsp + 0x18], 0xe9
7f77c9e01d57 eb2f             jmp 0x7f77c9e01d88
7f77c9e01d59 49890e           mov qword ptr [r14], rcx
7f77c9e01d5c 49894608         mov qword ptr [r14 + 8], rax
7f77c9e01d60 49897610         mov qword ptr [r14 + 0x10], rsi
7f77c9e01d64 49897e18         mov qword ptr [r14 + 0x18], rdi
7f77c9e01d68 48b8308a09c5777f movabs rax, 0x7f77c5098a30
                -0000            
7f77c9e01d72 4805f0070000     add rax, 0x7f0
7f77c9e01d78 49894620         mov qword ptr [r14 + 0x20], rax
7f77c9e01d7c 49894628         mov qword ptr [r14 + 0x28], rax
7f77c9e01d80 c7442418f6000000 mov dword ptr [rsp + 0x18], 0xf6
7f77c9e01d88 48b8f04050000000 movabs rax, 0x5040f0           ; __nvc_do_exit
                -0000            
7f77c9e01d92 488d742408       lea rsi, [rsp + 8]
7f77c9e01d97 31ff             xor edi, edi
7f77c9e01d99 4c89f2           mov rdx, r14
7f77c9e01d9c 4889e9           mov rcx, rbp
7f77c9e01d9f ffd0             call rax
7f77c9e01da1 4d892e           mov qword ptr [r14], r13
7f77c9e01da4 48b8308a09c5777f movabs rax, 0x7f77c5098a30
                -0000            
7f77c9e01dae 4805e00c0000     add rax, 0xce0
7f77c9e01db4 49894608         mov qword ptr [r14 + 8], rax
7f77c9e01db8 c744241802010000 mov dword ptr [rsp + 0x18], 0x102
7f77c9e01dc0 48b8f04050000000 movabs rax, 0x5040f0           ; __nvc_do_exit
                -0000            
7f77c9e01dca 488d742408       lea rsi, [rsp + 8]
7f77c9e01dcf bf06000000       mov edi, 6
7f77c9e01dd4 eb66             jmp 0x7f77c9e01e3c
7f77c9e01dd6 49c70602000000   mov qword ptr [r14], 2
7f77c9e01ddd 4d896e08         mov qword ptr [r14 + 8], r13
7f77c9e01de1 48b8308a09c5777f movabs rax, 0x7f77c5098a30
                -0000            
7f77c9e01deb 4805e00c0000     add rax, 0xce0
7f77c9e01df1 49894610         mov qword ptr [r14 + 0x10], rax
7f77c9e01df5 c744241808010000 mov dword ptr [rsp + 0x18], 0x108
7f77c9e01dfd eb29             jmp 0x7f77c9e01e28
7f77c9e01dff 4898             cdqe 
7f77c9e01e01 498906           mov qword ptr [r14], rax
7f77c9e01e04 49c7460801000000 mov qword ptr [r14 + 8], 1
7f77c9e01e0c 48b8308a09c5777f movabs rax, 0x7f77c5098a30
                -0000            
7f77c9e01e16 4805800d0000     add rax, 0xd80
7f77c9e01e1c 49894610         mov qword ptr [r14 + 0x10], rax
7f77c9e01e20 c74424180e010000 mov dword ptr [rsp + 0x18], 0x10e
7f77c9e01e28 48b8f04050000000 movabs rax, 0x5040f0           ; __nvc_do_exit
                -0000            
7f77c9e01e32 488d742408       lea rsi, [rsp + 8]
7f77c9e01e37 bf01000000       mov edi, 1
7f77c9e01e3c 4c89f2           mov rdx, r14
7f77c9e01e3f 488b4c2420       mov rcx, qword ptr [rsp + 0x20]
7f77c9e01e44 ffd0             call rax
7f77c9e01e46 49895500         mov qword ptr [r13], rdx
7f77c9e01e4a 49894508         mov qword ptr [r13 + 8], rax
7f77c9e01e4e 49c7451000000000 mov qword ptr [r13 + 0x10], 0
7f77c9e01e56 48b8308a09c5777f movabs rax, 0x7f77c5098a30
                -0000            
7f77c9e01e60 4805c0070000     add rax, 0x7c0
7f77c9e01e66 49894518         mov qword ptr [r13 + 0x18], rax
7f77c9e01e6a c74424183b010000 mov dword ptr [rsp + 0x18], 0x13b
7f77c9e01e72 48b8f04050000000 movabs rax, 0x5040f0           ; __nvc_do_exit
                -0000            
7f77c9e01e7c 488d742408       lea rsi, [rsp + 8]
7f77c9e01e81 bf03000000       mov edi, 3
7f77c9e01e86 4c89ea           mov rdx, r13
7f77c9e01e89 4c89f1           mov rcx, r14
7f77c9e01e8c ffd0             call rax
7f77c9e01e8e 6690             nop 
7f77c9e01e90 f30f1efa         endbr64 
7f77c9e01e94 8b4710           mov eax, dword ptr [rdi + 0x10]
7f77c9e01e97 8d4e07           lea ecx, [rsi + 7]
7f77c9e01e9a 83e1f8           and ecx, 0xfffffff8
7f77c9e01e9d 01c1             add ecx, eax
7f77c9e01e9f 3b4f14           cmp ecx, dword ptr [rdi + 0x14]
7f77c9e01ea2 7615             jbe 0x7f77c9e01eb9
7f77c9e01ea4 50               push rax
7f77c9e01ea5 48b8809350000000 movabs rax, 0x509380           ; __nvc_mspace_alloc
                -0000            
7f77c9e01eaf 4889f7           mov rdi, rsi
7f77c9e01eb2 4889d6           mov rsi, rdx
7f77c9e01eb5 ffd0             call rax
7f77c9e01eb7 59               pop rcx
7f77c9e01eb8 c3               ret 
7f77c9e01eb9 894f10           mov dword ptr [rdi + 0x10], ecx
7f77c9e01ebc 4898             cdqe 
7f77c9e01ebe 48034708         add rax, qword ptr [rdi + 8]
7f77c9e01ec2 c3               ret 
7f77c9e01ec3 662e0f1f84000000 nop word ptr cs:[rax + rax]
                -0000            
7f77c9e01ecd 0f1f00           nop dword ptr [rax]
7f77c9e01ed0 f30f1efa         endbr64 
7f77c9e01ed4 b801000000       mov eax, 1
7f77c9e01ed9 31d2             xor edx, edx
7f77c9e01edb 31c9             xor ecx, ecx
7f77c9e01edd eb09             jmp 0x7f77c9e01ee8
7f77c9e01edf 90               nop 
7f77c9e01ee0 d1ee             shr esi, 1
7f77c9e01ee2 0fafff           imul edi, edi
7f77c9e01ee5 0f90c1           seto cl
7f77c9e01ee8 85f6             test esi, esi
7f77c9e01eea 7414             je 0x7f77c9e01f00
7f77c9e01eec 40f6c601         test sil, 1
7f77c9e01ef0 74ee             je 0x7f77c9e01ee0
7f77c9e01ef2 0fafc7           imul eax, edi
7f77c9e01ef5 410f90c0         seto r8b
7f77c9e01ef9 08ca             or dl, cl
7f77c9e01efb 4408c2           or dl, r8b
7f77c9e01efe ebe0             jmp 0x7f77c9e01ee0
7f77c9e01f00 c3               ret 
--------------------------------------------------------------------------------

*** Caught signal 4 (SIGILL) [address=0x7f77c9e01306, ip=0x7f77c9e01306] ***

[0x42596d] ../src/util.c:870 signal_handler.lto_priv.0
[0x7f77cf3b270f] (/usr/lib64/libc.so.6) 
[0x7f77c9e01306] OSVVM.RANDOMPKG.RANDOMPTYPE.RANDUNSIGNED(N)25IEEE.NUMERIC_STD.UNSIGNED+0x6 [VHDL]
albydnc commented 1 month ago

the container image is built on a kube cluster with the buildah rootless environment. It runs fine on my laptop (Intel(R) Core(TM) i5-1245U). I get the issue on a machine with a AMD Ryzen Threadripper 2990WX and on the kube cluster where I compiled.

nickg commented 1 month ago

Thanks. I think I might have fixed it - could you test again with the latest master branch?

I'm a bit confused why I can't reproduce this though. Can you find out what LLVM version is inside the container (nvc --version will print it)?

albydnc commented 1 month ago

nvc version output:

nvc 1.13-devel (29905fb) (Using LLVM 18.1.1)

Thanks! now the issue is fixed! :+1:

nickg commented 1 month ago

Yes the problem is with LLVM 18. I managed to reproduce it myself now.