|
From: <sv...@va...> - 2009-08-07 20:29:18
|
Author: sewardj
Date: 2009-08-07 21:28:58 +0100 (Fri, 07 Aug 2009)
New Revision: 10751
Log:
Resync after {wq,p}thread_hijack rather than merely doing a check.
Believed to help with, although not fix, the underlying problem in
#192634.
Modified:
trunk/coregrind/m_syswrap/priv_syswrap-darwin.h
trunk/coregrind/m_syswrap/syswrap-darwin.c
trunk/coregrind/m_syswrap/syswrap-x86-darwin.c
Modified: trunk/coregrind/m_syswrap/priv_syswrap-darwin.h
===================================================================
--- trunk/coregrind/m_syswrap/priv_syswrap-darwin.h 2009-08-07 20:20:41 UTC (rev 10750)
+++ trunk/coregrind/m_syswrap/priv_syswrap-darwin.h 2009-08-07 20:28:58 UTC (rev 10751)
@@ -50,6 +50,8 @@
void VG_(show_open_ports)(void);
+void ML_(sync_mappings)(const HChar *when, const HChar *where, Int num);
+
// Unix syscalls.
// GEN = it uses the generic wrapper
// NYI = wrapper not yet implemented in Valgrind
Modified: trunk/coregrind/m_syswrap/syswrap-darwin.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-darwin.c 2009-08-07 20:20:41 UTC (rev 10750)
+++ trunk/coregrind/m_syswrap/syswrap-darwin.c 2009-08-07 20:28:58 UTC (rev 10751)
@@ -593,7 +593,7 @@
sync_mappings
------------------------------------------------------------------ */
-static void sync_mappings(const HChar *when, const HChar *where, Int num)
+void ML_(sync_mappings)(const HChar *when, const HChar *where, Int num)
{
// Usually the number of segments added/removed in a single calls is very
// small e.g. 1. But it sometimes gets up to at least 100 or so (eg. for
@@ -6263,7 +6263,7 @@
// PRINT("UNHANDLED reply %d", mh->msgh_id);
// Assume the call may have mapped or unmapped memory
- sync_mappings("after", "mach_msg_receive", 0);
+ ML_(sync_mappings)("after", "mach_msg_receive", 0);
}
PRE(mach_msg_receive)
@@ -6674,7 +6674,7 @@
POST(mach_msg_unhandled)
{
- sync_mappings("after", "mach_msg_unhandled", 0);
+ ML_(sync_mappings)("after", "mach_msg_unhandled", 0);
}
@@ -6973,7 +6973,7 @@
POST(iokit_user_client_trap)
{
- sync_mappings("after", "iokit_user_client_trap", ARG2);
+ ML_(sync_mappings)("after", "iokit_user_client_trap", ARG2);
}
Modified: trunk/coregrind/m_syswrap/syswrap-x86-darwin.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-x86-darwin.c 2009-08-07 20:20:41 UTC (rev 10750)
+++ trunk/coregrind/m_syswrap/syswrap-x86-darwin.c 2009-08-07 20:28:58 UTC (rev 10751)
@@ -332,7 +332,7 @@
// client allocated stack
find_stack_segment(tst->tid, sp);
}
- VG_(am_do_sync_check)("after", "pthread_hijack", 0);
+ ML_(sync_mappings)("after", "pthread_hijack", 0);
// DDD: should this be here rather than in POST(sys_bsdthread_create)?
// But we don't have ptid here...
@@ -478,7 +478,7 @@
stack-VKI_PAGE_SIZE, VKI_PAGE_SIZE,
0, VKI_MAP_PRIVATE, -1, 0);
- VG_(am_do_sync_check)("after", "wqthread_hijack", 0);
+ ML_(sync_mappings)("after", "wqthread_hijack", 0);
// Go!
/* Same comments as the 'release' in the then-clause.
|