]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Resync after {wq,p}thread_hijack rather than merely doing a check.
authorJulian Seward <jseward@acm.org>
Fri, 7 Aug 2009 20:28:58 +0000 (20:28 +0000)
committerJulian Seward <jseward@acm.org>
Fri, 7 Aug 2009 20:28:58 +0000 (20:28 +0000)
Believed to help with, although not fix, the underlying problem in
#192634.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10751

coregrind/m_syswrap/priv_syswrap-darwin.h
coregrind/m_syswrap/syswrap-darwin.c
coregrind/m_syswrap/syswrap-x86-darwin.c

index 84d87935fa3e4c4c6d1c392c22af2a949def0933..732a05584e92451a31df50328240af66e679aa79 100644 (file)
@@ -50,6 +50,8 @@ extern const UInt ML_(mdep_trap_table_size);
 
 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
index e836f340922ea7f375d571c2ee225ae6d95d63a2..bb1db2c528aece3353c2c6e87809834dbb8af142 100644 (file)
@@ -593,7 +593,7 @@ void VG_(show_open_ports)(void)
    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 @@ POST(mach_msg_receive)
    // 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)
 
 POST(mach_msg_unhandled)
 {
-   sync_mappings("after", "mach_msg_unhandled", 0);
+   ML_(sync_mappings)("after", "mach_msg_unhandled", 0);
 }
 
 
@@ -6973,7 +6973,7 @@ PRE(iokit_user_client_trap)
 
 POST(iokit_user_client_trap)
 {
-   sync_mappings("after", "iokit_user_client_trap", ARG2);
+   ML_(sync_mappings)("after", "iokit_user_client_trap", ARG2);
 }
 
 
index 7fd327d89479271f2b509f733ef97127d436f83d..54dac21f8b65a85d3dd75b6934db0ab36b307d0a 100644 (file)
@@ -332,7 +332,7 @@ void pthread_hijack(Addr self, Addr kport, Addr func, Addr func_arg,
       // 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 @@ void wqthread_hijack(Addr self, Addr kport, Addr stackaddr, Addr workitem,
             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.