DynamoRIO/drmemory

add High Sierra Mac OSX support

Open

#2 132 ouverte le 28 oct. 2018

Voir sur GitHub
 (5 commentaires) (0 réactions) (0 assignés)C (289 forks)auto 404
OpSys-OSXhelp wanted

Métriques du dépôt

Stars
 (2 727 stars)
Métriques de merge PR
 (Métriques PR en attente)

Description

This is an issue covering both build and execution issues on High Sierra.

The cmake through brew is now 3.12.3 which hits a new policy warning I added to #1375.

/Users/derek/drmemory/git/src/drsyscall/table_macos_bsd.c:43:10: fatal error: 'security/mac.h' file not found
#include <security/mac.h>
         ^~~~~~~~~~~~~~~~

/Users/derek/drmemory/git/src/tests/syscalls_unix.c:172:5: warning: 'syscall' is deprecated: first deprecated in
      macOS 10.12 - syscall(2) is unsupported; please switch to a supported interface. For SYS_kdebug_trace use
      kdebug_signpost(). [-Wdeprecated-declarations]
    syscall(SYS_finit_module, fd, stack_str.str, 0);
    ^
/usr/include/unistd.h:745:6: note: 'syscall' has been explicitly marked deprecated here
int      syscall(int, ...);
         ^
/Users/derek/drmemory/git/src/tests/syscalls_unix.c:184:5: warning: 'syscall' is deprecated: first deprecated in
      macOS 10.12 - syscall(2) is unsupported; please switch to a supported interface. For SYS_kdebug_trace use
      kdebug_signpost(). [-Wdeprecated-declarations]
    syscall(SYS_finit_module, -1, dangling_ptr->str, 0);
    ^
/usr/include/unistd.h:745:6: note: 'syscall' has been explicitly marked deprecated here
int      syscall(int, ...);
         ^
/Users/derek/drmemory/git/src/tests/syscalls_unix.c:236:13: warning: 'syscall' is deprecated: first deprecated in
      macOS 10.12 - syscall(2) is unsupported; please switch to a supported interface. For SYS_kdebug_trace use
      kdebug_signpost(). [-Wdeprecated-declarations]
        n = syscall(SYS_process_vm_readv, getpid(), local, 2, remote, 1, 0);
            ^
/usr/include/unistd.h:745:6: note: 'syscall' has been explicitly marked deprecated here
int      syscall(int, ...);
         ^
/Users/derek/drmemory/git/src/tests/syscalls_unix.c:238:13: warning: 'syscall' is deprecated: first deprecated in
      macOS 10.12 - syscall(2) is unsupported; please switch to a supported interface. For SYS_kdebug_trace use
      kdebug_signpost(). [-Wdeprecated-declarations]
        n = syscall(SYS_process_vm_writev, getpid(), local, 2, remote, 1, 0);
            ^
/usr/include/unistd.h:745:6: note: 'syscall' has been explicitly marked deprecated here
int      syscall(int, ...);
<Application /Users/derek/DrMemory-MacOS-1.11.0-2/executable_path=/Users/derek/dr/test/hello32 (7684) is running on an unsupported operating system (17.7.0)>

After Stopping message when running 1.11.0-2/dynamorio/bin32/drrun on hello,world it hangs.

lldb shows it's hung on read_lock(&callback_registration_lock) b/c the lock_requests is a bogus value:

(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
  * frame #0: 0xa73e14fe libsystem_kernel.dylib`swtch_pri + 10
    frame #1: 0x7156edd7 libdynamorio.dylib`os_thread_yield at os.c:2981
    frame #2: 0x715871e1 libdynamorio.dylib`rwlock_wait_contended_reader(rwlock=0x71676c1c) at os.c:8864
    frame #3: 0x71253110 libdynamorio.dylib`read_lock(rw=0x71676c1c) at utils.c:1155
    frame #4: 0x7140ccd5 libdynamorio.dylib`instrument_exit at instrument.c:765
    frame #5: 0x71096eb8 libdynamorio.dylib`dynamo_shared_exit at dynamo.c:974
    frame #6: 0x71097ec9 libdynamorio.dylib`dynamo_process_exit_cleanup at dynamo.c:1241
    frame #7: 0x7109785e libdynamorio.dylib`dynamo_process_exit at dynamo.c:1297
    frame #8: 0x71542bc4 libdynamorio.dylib`cat_done_saving_dstack + 25
(lldb) frame select 3
frame #3: 0x71253110 libdynamorio.dylib`read_lock(rw=0x71676c1c) at utils.c:1155
(lldb) fr v -f x *rw
(read_write_lock_t) *rw = {
  lock = {
    lock_requests = 0x205c85f5
    contended_event = (sem = 0x00000a28, value = 0x00000000)
    name = 0x71625b76 "callback_registration_lock(readwrite)@/drmemory_package/dynamorio/core/lib/instrument.c:120"
    rank = 0x0000002b
    owner = 0x0000000000000000
    owning_dcontext = 0x00000000
    prev_owned_lock = 0x00000000
    count_times_acquired = 0x00000002
    count_times_contended = 0x1b3cb505
    count_times_spin_pause = 0x00000000
    max_contended_requests = 0x00000000
    count_times_spin_only = 0x00000000
    prev_process_lock = 0x71676158
    next_process_lock = 0x4c51f58c
    callstack = ([0] = 0x00000000, [1] = 0x00000000, [2] = 0x00000000, [3] = 0x00000000)
    app_lock = 0x00
    deleted = 0x00
  }
  num_readers = 0x00000000
  writer = 0x0000000000000000
  num_pending_readers = 0x00000001
  writer_waiting_readers = (sem = 0x00000000, value = 0x00000000)
  readers_waiting_writer = (sem = 0x00000000, value = 0x00000000)
}
Error #1: UNADDRESSABLE ACCESS of freed memory: reading 0x0041f0f3-0x0041f0f4 1 byte(s)
# 0 main               [/Users/derek/drmemory/git/src/tests/free.c:81]
Note: <FB>0:00:00.000 in thread 100688
Note: 0x0041f0f3-0x0041f0f4 overlaps memory 0x0041f0f0-0x0041f104 that was freed here:
Note: # 0 replace_free               
Note: # 1 main                       [/Users/derek/drmemory/git/src/tests/free.c:77]
Note: instruction: mov    0x03(%eax) -> %cl

Guide contributeur