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
  • #2024
Closed
Open
Issue created Oct 14, 2016 by Derek Bruening@derekbrueningContributor

some (disabled) OSX tests failing due to app stack mis-alignment, even natively

The enabled subset works:

# ctest -j3 -L OSX
100% tests passed, 0 tests failed out of 51
Label Time Summary:
OSX    = 1247.70 sec
Total Test time (real) = 423.10 sec

However, some of the non-enabled tests crash due to mis-aligned stacks:

# bin32/drrun -- suite/tests/bin/common.eflags 
<Starting application /Users/username/derek/dr/git/build_x86_dbg_tests/executable_path=/Users/username/derek/dr/git/build_x86_dbg_tests/suite/tests/bin/common.eflags (19638)>
<Initial options = -no_dynamic_options -code_api -stack_size 56K -max_elide_jmp 0 -max_elide_call 0 -no_inline_ignored_syscalls -native_exec_default_list '' -no_native_exec_managed_code -no_indcall2direct >
<Application /Users/username/derek/dr/git/build_x86_dbg_tests/executable_path=/Users/username/derek/dr/git/build_x86_dbg_tests/suite/tests/bin/common.eflags (19638).  Application exception at PC 0x992d52f0.  
Signal 11 delivered to application as default action.
Callstack:
        0x992d52f0   </usr/lib/system/libdyld.dylib+0x12f0>
        0x000df1c7   </Users/username/derek/dr/git/build_x86_dbg_tests/suite/tests/bin/common.eflags+0x11c7>
        0x000deea7   </Users/username/derek/dr/git/build_x86_dbg_tests/suite/tests/bin/common.eflags+0xea7>
        0x000defaf   </Users/username/derek/dr/git/build_x86_dbg_tests/suite/tests/bin/common.eflags+0xfaf>
        0x992d76ad   </usr/lib/system/libdyld.dylib+0x36ad>
        0x00000001  
>
<Stopping application /Users/username/derek/dr/git/build_x86_dbg_tests/executable_path=/Users/username/derek/dr/git/build_x86_dbg_tests/suite/tests/bin/common.eflags (19638)>
Segmentation fault: 11

App's stack is not aligned:

For SIGSEGV at cache pc 0x4d55f5d4, computed target write 0x00000000
        faulting instr: movdqa %xmm0 -> 0x10(%esp)[16byte]
        xsp=0xbff16878
Got signal at pc 0x530bf5d4 in this fragment:
Fragment 355, tag 0x992d52d0, flags 0x1000630, shared, size 81:
interp: start_pc = 0x992d52d0
check_thread_vm_area: pc = 0x992d52d0
prepend_entry_to_fraglist: putting fragment @0x992d52d0 (shared) on vmarea 0x90000000-0x9ed6e000
  0x992d52d0  83 ec 64             sub    $0x00000064 %esp -> %esp
        wrote all 6 flags now!
  0x992d52d3  89 44 24 54          mov    %eax -> 0x54(%esp)[4byte]
  0x992d52d7  8b 44 24 68          mov    0x68(%esp)[4byte] -> %eax
  0x992d52db  89 44 24 60          mov    %eax -> 0x60(%esp)[4byte]
  0x992d52df  89 6c 24 68          mov    %ebp -> 0x68(%esp)[4byte]
  0x992d52e3  89 e5                mov    %esp -> %ebp
  0x992d52e5  83 c5 68             add    $0x00000068 %ebp -> %ebp
  0x992d52e8  89 4c 24 58          mov    %ecx -> 0x58(%esp)[4byte]
  0x992d52ec  89 54 24 5c          mov    %edx -> 0x5c(%esp)[4byte]
  0x992d52f0  66 0f 7f 44 24 10    movdqa %xmm0 -> 0x10(%esp)[16byte]
  0x992d52f6  66 0f 7f 4c 24 20    movdqa %xmm1 -> 0x20(%esp)[16byte]
  0x992d52fc  66 0f 7f 54 24 30    movdqa %xmm2 -> 0x30(%esp)[16byte]
  0x992d5302  66 0f 7f 5c 24 40    movdqa %xmm3 -> 0x40(%esp)[16byte]
  0x992d5308  8b 44 24 64          mov    0x64(%esp)[4byte] -> %eax

module libdyld.dylib segment [0x992d4000,0x992d8000]

It crashes natively as well:

Native crash:
(lldb) bt
+ thread #1: tid = 0x1191b, 0x992d52f0 libdyld.dylib`misaligned_stack_error_, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
  * frame #0: 0x992d52f0 libdyld.dylib`misaligned_stack_error_
    frame #1: 0x000021c7 common.eflags`print(fmt="OK %d %s\n") + 55 at tools.c:291
    frame #2: 0x00001ea7 common.eflags`test_flag(eflags=663, pos=0, set=true) + 215 at eflags.c:69
    frame #3: 0x00001faf common.eflags`test_eflags_pos + 53
    frame #4: 0x992d76ad libdyld.dylib`start + 1
Assignee
Assign to
Time tracking