X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/39236c6e673c41db228275375ab7fdb0f837b292..c7d2c2c6ee645e10cbccdd01c6191873ec77239d:/libkern/gen/OSDebug.cpp diff --git a/libkern/gen/OSDebug.cpp b/libkern/gen/OSDebug.cpp index f5bbec683..305cfc3cb 100644 --- a/libkern/gen/OSDebug.cpp +++ b/libkern/gen/OSDebug.cpp @@ -49,8 +49,11 @@ __BEGIN_DECLS extern vm_offset_t min_valid_stack_address(void); extern vm_offset_t max_valid_stack_address(void); +// From osfmk/kern/printf.c +extern boolean_t doprnt_hide_pointers; + // From osfmk/kmod.c -extern void kmod_dump_log(vm_offset_t *addr, unsigned int cnt); +extern void kmod_dump_log(vm_offset_t *addr, unsigned int cnt, boolean_t doUnslide); extern addr64_t kvtophys(vm_offset_t va); @@ -106,12 +109,15 @@ OSReportWithBacktrace(const char *str, ...) lck_mtx_lock(sOSReportLock); { + boolean_t old_doprnt_hide_pointers = doprnt_hide_pointers; + doprnt_hide_pointers = FALSE; printf("%s\nBacktrace 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx\n", buf, (unsigned long) VM_KERNEL_UNSLIDE(bt[2]), (unsigned long) VM_KERNEL_UNSLIDE(bt[3]), (unsigned long) VM_KERNEL_UNSLIDE(bt[4]), (unsigned long) VM_KERNEL_UNSLIDE(bt[5]), (unsigned long) VM_KERNEL_UNSLIDE(bt[6]), (unsigned long) VM_KERNEL_UNSLIDE(bt[7]), (unsigned long) VM_KERNEL_UNSLIDE(bt[8])); - kmod_dump_log((vm_offset_t *) &bt[2], cnt - 2); + kmod_dump_log((vm_offset_t *) &bt[2], cnt - 2, TRUE); + doprnt_hide_pointers = old_doprnt_hide_pointers; } lck_mtx_unlock(sOSReportLock); } @@ -166,6 +172,7 @@ OSPrintBacktrace(void) unsigned OSBacktrace(void **bt, unsigned maxAddrs) { unsigned frame; + if (!current_thread()) return 0; #if __x86_64__ #define SANE_x86_64_FRAME_SIZE (kernel_stack_size >> 1)