From 4960f47c7dc39032a216c41b991dd138b91e5e5d Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 10 Apr 2019 01:22:37 +0200 Subject: [PATCH] dhat is broken on x86 (32bit) dhat will crash on x86 (32bit) because it doesn't handle Vg_CoreClientReq in its track_post_mem_write. dh_handle_noninsn_write will be called with Vg_CoreClientReq during shutdown when trying to setup an argument for the freeres_wrapper(). On other architectures this will be done through a register, but on x86 we setup the argument on the stack. See final_tidyup () in coregrind/m_main.c. Just handle it like a syscall memory argument write. https://bugs.kde.org/show_bug.cgi?id=406354 --- NEWS | 1 + dhat/dh_main.c | 1 + 2 files changed, 2 insertions(+) diff --git a/NEWS b/NEWS index 2cc8d2013..6f420cab4 100644 --- a/NEWS +++ b/NEWS @@ -147,6 +147,7 @@ where XXXXXX is the bug number as listed below. 406198 none/tests/ppc64/test_isa_3_0_other test sporadically including CA bit in output. 406352 cachegrind/callgrind fails ann tests because of missing a.c +406354 dhat is broken on x86 (32bit) 406360 memcheck/tests/libstdc++.supp needs more supression variants n-i-bz add syswrap for PTRACE_GET|SET_THREAD_AREA on amd64. diff --git a/dhat/dh_main.c b/dhat/dh_main.c index 47a9327bd..a93332884 100644 --- a/dhat/dh_main.c +++ b/dhat/dh_main.c @@ -794,6 +794,7 @@ void dh_handle_noninsn_write ( CorePart part, ThreadId tid, { switch (part) { case Vg_CoreSysCall: + case Vg_CoreClientReq: dh_handle_write(base, size); break; case Vg_CoreSignal: -- 2.11.4.GIT