Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • D dynamorio
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 1,467
    • Issues 1,467
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 44
    • Merge requests 44
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • DynamoRIO
  • dynamorio
  • Issues
  • #4458
Closed
Open
Issue created Sep 29, 2020 by Derek Bruening@derekbrueningContributor

AArch64 CRASH with W^X emitting gencode

The -satisfy_w_xor_x test must not be enabled for A64?? There are too many missing tests there.

$ bin64/drrun -satisfy_w_xor_x -- suite/tests/bin/allasm_aarch64_flush
<Starting application /home/derek/dr/build/suite/tests/bin/allasm_aarch64_flush (86542)>
<ERROR: master_signal_handler with no siginfo (i#26?): tid=86542, sig=11>
<Application /home/derek/dr/build/suite/tests/bin/allasm_aarch64_flush (86542). Cannot correctly handle received signal 11 in thread 86542.>

Definitely a W^X bug:

(gdb) bt
#0  0x0000aaaab43086f0 in insert_exit_stub_other_flags ()
#1  0x0000aaaab42a290c in shared_gencode_emit ()
#2  0x0000aaaab42a2ce0 in d_r_arch_init ()
#3  0x0000aaaab42b345c in dynamorio_app_init ()
#4  0x0000aaaab42b5870 in dr_app_setup ()
#5  0x0000aaaab41eae28 in perftools::gwp::DRProfiler::Setup() ()
(gdb) x/8i $pc
=> 0xaaaab43086f0 <insert_exit_stub_other_flags+112>:   stp     w10, w11, [x19]
   0xaaaab43086f4 <insert_exit_stub_other_flags+116>:   ubfx    x10, x20, #16, #16
   0xaaaab43086f8 <insert_exit_stub_other_flags+120>:   cbz     x10, 0xaaaab4308754 <insert_exit_stub_other_flags+212>
   0xaaaab43086fc <insert_exit_stub_other_flags+124>:   orr     w10, w9, w10, lsl #5
   0xaaaab4308700 <insert_exit_stub_other_flags+128>:   add     x22, x19, #0xc
   0xaaaab4308704 <insert_exit_stub_other_flags+132>:   str     w10, [x19, #8]
   0xaaaab4308708 <insert_exit_stub_other_flags+136>:   ubfx    x10, x20, #32, #16
   0xaaaab430870c <insert_exit_stub_other_flags+140>:   cbz     x10, 0xaaaab430871c <insert_exit_stub_other_flags+156>
(gdb) x/8gx $x19
0xaaaa6ab3179c: 0x0000000000000000      0x0000000000000000
0xaaaa6ab317ac: 0x0000000000000000      0x0000000000000000

aaaa6ab30000-aaaa6ab50000 r-xs 00090000 00:01 7340198                    /memfd:/dynamorio_dual_map.16130 (deleted)
Assignee
Assign to
Time tracking