From: Rhys Kidd Date: Mon, 11 May 2015 13:19:48 +0000 (+0000) Subject: OS X task_info: UNKNOWN task message [id 3405, to mach_task_self(), reply 0x....... X-Git-Tag: svn/VALGRIND_3_11_0~408 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fc04f5d4c672717030f45a258be2a11f8c2fc1ad;p=thirdparty%2Fvalgrind.git OS X task_info: UNKNOWN task message [id 3405, to mach_task_self(), reply 0x........] bz#254164 Before: == 593 tests, 234 stderr failures, 22 stdout failures, 0 stderrB failures, 0 stdoutB failures, 30 post failures == After: == 593 tests, 233 stderr failures, 22 stdout failures, 0 stderrB failures, 0 stdoutB failures, 30 post failures == git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15209 --- diff --git a/NEWS b/NEWS index 4d88267914..d57da2c633 100644 --- a/NEWS +++ b/NEWS @@ -70,6 +70,8 @@ where XXXXXX is the bug number as listed below. 211926 Avoid compilation warnings in valgrind.h with -pedantic 226609 Crediting upstream authors in man page 231257 Valgrind omits path when executing script from shebang line +254164 OS X task_info: UNKNOWN task message [id 3405, to mach_task_self(), + reply 0x........] 269360 s390x: Fix addressing mode selection for compare-and-swap 333051 mmap of huge pages fails due to incorrect alignment == 339163 diff --git a/coregrind/m_syswrap/priv_syswrap-darwin.h b/coregrind/m_syswrap/priv_syswrap-darwin.h index 1360719fd4..e6cff5e5ac 100644 --- a/coregrind/m_syswrap/priv_syswrap-darwin.h +++ b/coregrind/m_syswrap/priv_syswrap-darwin.h @@ -595,6 +595,7 @@ DECL_TEMPLATE(darwin, semaphore_destroy); DECL_TEMPLATE(darwin, task_policy_set); DECL_TEMPLATE(darwin, mach_ports_register); DECL_TEMPLATE(darwin, mach_ports_lookup); +DECL_TEMPLATE(darwin, task_info); DECL_TEMPLATE(darwin, task_threads); DECL_TEMPLATE(darwin, task_suspend); DECL_TEMPLATE(darwin, task_resume); diff --git a/coregrind/m_syswrap/syswrap-darwin.c b/coregrind/m_syswrap/syswrap-darwin.c index aca67844f5..adaaea22b8 100644 --- a/coregrind/m_syswrap/syswrap-darwin.c +++ b/coregrind/m_syswrap/syswrap-darwin.c @@ -5869,6 +5869,44 @@ POST(mach_ports_lookup) } +PRE(task_info) +{ +#pragma pack(4) + typedef struct { + mach_msg_header_t Head; + NDR_record_t NDR; + task_flavor_t flavor; + mach_msg_type_number_t task_info_outCnt; + } Request; +#pragma pack() + + Request *req = (Request *)ARG1; + + PRINT("task_info(%s) flavor:%d", name_for_port(MACH_REMOTE), req->flavor); + + AFTER = POST_FN(task_info); +} + +POST(task_info) +{ +#pragma pack(4) + typedef struct { + mach_msg_header_t Head; + NDR_record_t NDR; + kern_return_t RetCode; + mach_msg_type_number_t task_info_outCnt; + integer_t task_info_out[52]; + } Reply; +#pragma pack() + + Reply *reply = (Reply *)ARG1; + if (!reply->RetCode) { + } else { + PRINT("mig return %d", reply->RetCode); + } +} + + PRE(task_threads) { #pragma pack(4) @@ -7758,6 +7796,10 @@ PRE(mach_msg_task) CALL_PRE(mach_ports_lookup); return; + case 3405: + CALL_PRE(task_info); + return; + case 3407: CALL_PRE(task_suspend); return;