mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-03 18:13:01 +00:00
Resync after {wq,p}thread_hijack rather than merely doing a check.
Believed to help with, although not fix, the underlying problem in #192634. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10751
This commit is contained in:
parent
aa85156872
commit
2c168a6128
@ -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
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -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.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user