|
From: <sv...@va...> - 2014-03-10 18:54:52
|
Author: bart
Date: Mon Mar 10 18:54:40 2014
New Revision: 13862
Log:
coregrind/m_scheduler: Inform tools about thread ID while translating
This patch fixes the following assertion failure in DRD with
ENABLE_DRD_CONSISTENCY_CHECKS defined:
drd: drd_load_store.c:186 (vgDrd_trace_load): the 'impossible' happened.
==9543== at 0x2803C4EC: report_and_quit (m_libcassert.c:279)
==9543== by 0x2803C646: vgPlain_assert_fail (m_libcassert.c:359)
==9543== by 0x2802A488: vgDrd_trace_load (drd_load_store.c:186)
==9543== by 0x2805743E: vgPlain_translate (m_translate.c:1403)
==9543== by 0x28088FCE: vgPlain_scheduler (scheduler.c:1014)
==9543== by 0x280983D2: run_a_thread_NORETURN (syswrap-linux.c:103)
Modified:
trunk/coregrind/m_scheduler/scheduler.c
Modified: trunk/coregrind/m_scheduler/scheduler.c
==============================================================================
--- trunk/coregrind/m_scheduler/scheduler.c (original)
+++ trunk/coregrind/m_scheduler/scheduler.c Mon Mar 10 18:54:40 2014
@@ -1011,6 +1011,7 @@
ip, True/*upd_fast_cache*/ );
if (UNLIKELY(!found)) {
/* Not found; we need to request a translation. */
+ VG_TRACK( start_client_code, tid, bbs_done );
if (VG_(translate)( tid, ip, /*debug*/False, 0/*not verbose*/,
bbs_done, True/*allow redirection*/ )) {
found = VG_(search_transtab)( NULL, NULL, NULL,
@@ -1024,6 +1025,7 @@
// or the thread has been marked for termination. Either
// way, we just need to go back into the scheduler loop.
}
+ VG_TRACK( stop_client_code, tid, bbs_done );
}
}
|