|
From: <sv...@va...> - 2012-06-10 10:44:24
|
bart 2012-06-10 11:44:05 +0100 (Sun, 10 Jun 2012)
New Revision: 12629
Log:
drd: Don't sporadically report false positives on newly allocated memory. Fixes #297147.
Modified files:
trunk/drd/drd_main.c
Modified: trunk/drd/drd_main.c (+13 -0)
===================================================================
--- trunk/drd/drd_main.c 2012-06-09 17:19:31 +01:00 (rev 12628)
+++ trunk/drd/drd_main.c 2012-06-10 11:44:05 +01:00 (rev 12629)
@@ -325,8 +325,21 @@
a1, len, DRD_(running_thread_inside_pthread_create)()
? " (inside pthread_create())" : "");
+#if 0
if (!is_stack_mem && DRD_(g_free_is_write))
DRD_(thread_stop_using_mem)(a1, a2);
+#else
+ /*
+ * Sometimes it happens that a client starts using a memory range that has
+ * been accessed before but for which drd_stop_using_mem() has not been
+ * called for the entire range. It is not yet clear whether this is an
+ * out-of-range access by the client, an issue in the Valgrind core or an
+ * issue in DRD. Avoid that this issue triggers false positive reports by
+ * always clearing accesses for newly allocated memory ranges. See also
+ * http://bugs.kde.org/show_bug.cgi?id=297147.
+ */
+ DRD_(thread_stop_using_mem)(a1, a2);
+#endif
if (UNLIKELY(DRD_(any_address_is_traced)()))
{
|