]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
drd: Fix stack growth tracking. Hopefully this is the proper fix for #297147.
authorBart Van Assche <bvanassche@acm.org>
Sun, 10 Mar 2013 11:02:32 +0000 (11:02 +0000)
committerBart Van Assche <bvanassche@acm.org>
Sun, 10 Mar 2013 11:02:32 +0000 (11:02 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13316

drd/drd_main.c

index 92c0f7992aa11b2c85d845c63932e7c67bb95a5e..358ec83ee1005bfbc29f674073f48c208b6193a0 100644 (file)
@@ -580,8 +580,8 @@ void drd_post_deliver_signal(const ThreadId vg_tid, const Int sigNo)
  * Callback function called by the Valgrind core before a stack area is
  * being used by a signal handler.
  *
- * @param[in] a   Start of address range.
- * @param[in] len Address range length.
+ * @param[in] a   Start of address range - VG_STACK_REDZONE_SZB.
+ * @param[in] len Address range length + VG_STACK_REDZONE_SZB.
  * @param[in] tid Valgrind thread ID for whom the signal frame is being
  *                constructed.
  */
@@ -589,12 +589,14 @@ static void drd_start_using_mem_stack_signal(const Addr a, const SizeT len,
                                              ThreadId tid)
 {
    DRD_(thread_set_vg_running_tid)(VG_(get_running_tid)());
-   drd_start_using_mem(a, len, True);
+   drd_start_using_mem(a + VG_STACK_REDZONE_SZB, len - VG_STACK_REDZONE_SZB,
+                       True);
 }
 
 static void drd_stop_using_mem_stack_signal(Addr a, SizeT len)
 {
-   drd_stop_using_mem(a, len, True);
+   drd_stop_using_mem(a + VG_STACK_REDZONE_SZB, len - VG_STACK_REDZONE_SZB,
+                      True);
 }
 
 static