From: Rhys Kidd Date: Mon, 1 May 2017 01:44:01 +0000 (+0000) Subject: macos: Fix UNKNOWN task message [id 3447, to mach_task_self(), reply 0x603] (task_reg... X-Git-Tag: svn/VALGRIND_3_13_0~106 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=55728164c430ee16bd758c31241411cdc1e8c811;p=thirdparty%2Fvalgrind.git macos: Fix UNKNOWN task message [id 3447, to mach_task_self(), reply 0x603] (task_register_dyld_shared_cache_image_info). bz#379372 git-svn-id: svn://svn.valgrind.org/valgrind/trunk@16328 --- diff --git a/NEWS b/NEWS index 57fc0d961c..38076a5943 100644 --- a/NEWS +++ b/NEWS @@ -160,6 +160,8 @@ where XXXXXX is the bug number as listed below. 379094 Valgrind reports INTERNAL ERROR in rt_sigsuspend syscall wrapper 379371 UNKNOWN task message [id 3444, to mach_task_self(), reply 0x603] (task_register_dyld_image_infos) +379372 UNKNOWN task message [id 3447, to mach_task_self(), reply 0x603] + (task_register_dyld_shared_cache_image_info) 379390 unhandled syscall: mach:70 (host_create_mach_voucher_trap) Release 3.12.0 (20 October 2016) diff --git a/coregrind/m_syswrap/priv_syswrap-darwin.h b/coregrind/m_syswrap/priv_syswrap-darwin.h index 5942104f7f..6d4e0ab0b8 100644 --- a/coregrind/m_syswrap/priv_syswrap-darwin.h +++ b/coregrind/m_syswrap/priv_syswrap-darwin.h @@ -749,6 +749,7 @@ DECL_TEMPLATE(darwin, pid_for_task); #if DARWIN_VERS >= DARWIN_10_12 DECL_TEMPLATE(darwin, host_create_mach_voucher_trap); DECL_TEMPLATE(darwin, task_register_dyld_image_infos); +DECL_TEMPLATE(darwin, task_register_dyld_shared_cache_image_info); #endif /* DARWIN_VERS >= DARWIN_10_12 */ DECL_TEMPLATE(darwin, mach_timebase_info); diff --git a/coregrind/m_syswrap/syswrap-darwin.c b/coregrind/m_syswrap/syswrap-darwin.c index 6023302b55..a6c5bef174 100644 --- a/coregrind/m_syswrap/syswrap-darwin.c +++ b/coregrind/m_syswrap/syswrap-darwin.c @@ -8212,6 +8212,10 @@ PRE(mach_msg_task) case 3444: CALL_PRE(task_register_dyld_image_infos); return; + + case 3447: + CALL_PRE(task_register_dyld_shared_cache_image_info); + return; #endif /* DARWIN_VERS >= DARWIN_10_12 */ case 3801: @@ -9856,6 +9860,43 @@ POST(task_register_dyld_image_infos) } } +PRE(task_register_dyld_shared_cache_image_info) +{ +#pragma pack(4) + typedef struct { + mach_msg_header_t Head; + NDR_record_t NDR; + dyld_kernel_image_info_t dyld_cache_image; + boolean_t no_cache; + boolean_t private_cache; + } Request; +#pragma pack() + + // Request *req = (Request *)ARG1; + + PRINT("task_register_dyld_shared_cache_image_info(%s)", + name_for_port(MACH_REMOTE)); + + AFTER = POST_FN(task_register_dyld_shared_cache_image_info); +} + +POST(task_register_dyld_shared_cache_image_info) +{ +#pragma pack(4) + typedef struct { + mach_msg_header_t Head; + NDR_record_t NDR; + kern_return_t RetCode; + } Reply; +#pragma pack() + + Reply *reply = (Reply *)ARG1; + if (!reply->RetCode) { + } else { + PRINT("mig return %d", reply->RetCode); + } +} + #endif /* DARWIN_VERS >= DARWIN_10_12 */