]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Bug 359201 followup. futex skips argument 5 if op is FUTEX_WAIT_BITSET.
authorMark Wielaard <mark@klomp.org>
Thu, 18 Feb 2016 11:14:47 +0000 (11:14 +0000)
committerMark Wielaard <mark@klomp.org>
Thu, 18 Feb 2016 11:14:47 +0000 (11:14 +0000)
The original fix in svn r15793 read argument 6 separately by using PRA6
unconditionally. This is wrong. We need to first check whether a
track_pre_reg_read callback is registered (only memcheck does).
The PRE_REG_READX macro already had this check. Just add the same
before calling PRA6. Thanks to Tom Hughes for noticing. Without this
helgrind/tests/cond_timedwait_test and drd/tests/pth_inconsistent_cond_wait
regtests would fail.

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

coregrind/m_syswrap/syswrap-linux.c

index b57436cdae34c0a8e50cbc98f5b7e2e61f3e5053..f2d10764312d9b5f1fbdf7945324ab9b6b5aef8f 100644 (file)
@@ -1163,7 +1163,8 @@ PRE(sys_futex)
          PRE_REG_READ4(long, "futex",
                        vki_u32 *, futex, int, op, int, val,
                        struct timespec *, utime);
-         PRA6("futex",int,val3);
+         if (VG_(tdict).track_pre_reg_read)
+            PRA6("futex",int,val3);
       }
       break;
    case VKI_FUTEX_WAKE_BITSET: