diff --git a/exp-drd/Makefile.am b/exp-drd/Makefile.am
index daca9f2..49c6b34 100644
--- a/exp-drd/Makefile.am
+++ b/exp-drd/Makefile.am
@@ -28,42 +28,47 @@
 vgpreload_exp_drd_x86_linux_so_CCASFLAGS    = $(AM_CCASFLAGS_X86_LINUX)
 vgpreload_exp_drd_x86_linux_so_DEPENDENCIES = $(LIBREPLACEMALLOC_X86_LINUX)
 vgpreload_exp_drd_x86_linux_so_LDFLAGS      = $(PRELOAD_LDFLAGS_X86_LINUX)\
-                                          $(LIBREPLACEMALLOC_LDFLAGS_X86_LINUX)
+                                        $(LIBREPLACEMALLOC_LDFLAGS_X86_LINUX)
 
 vgpreload_exp_drd_amd64_linux_so_SOURCES      = $(VGPRELOAD_DRD_SOURCES_COMMON)
 vgpreload_exp_drd_amd64_linux_so_CPPFLAGS     = $(AM_CPPFLAGS_AMD64_LINUX)
 vgpreload_exp_drd_amd64_linux_so_CFLAGS       = $(AM_CFLAGS_AMD64_LINUX) $(AM_CFLAGS_PIC)
 vgpreload_exp_drd_amd64_linux_so_CCASFLAGS    = $(AM_CCASFLAGS_AMD64_LINUX)
 vgpreload_exp_drd_amd64_linux_so_DEPENDENCIES =
-vgpreload_exp_drd_amd64_linux_so_LDFLAGS      = $(PRELOAD_LDFLAGS_AMD64_LINUX)
+vgpreload_exp_drd_amd64_linux_so_LDFLAGS      = $(PRELOAD_LDFLAGS_AMD64_LINUX)\
+                                        $(LIBREPLACEMALLOC_LDFLAGS_AMD64_LINUX)
 
 vgpreload_exp_drd_ppc32_linux_so_SOURCES      = $(VGPRELOAD_DRD_SOURCES_COMMON)
 vgpreload_exp_drd_ppc32_linux_so_CPPFLAGS     = $(AM_CPPFLAGS_PPC32_LINUX)
 vgpreload_exp_drd_ppc32_linux_so_CFLAGS       = $(AM_CFLAGS_PPC32_LINUX) $(AM_CFLAGS_PIC)
 vgpreload_exp_drd_ppc32_linux_so_CCASFLAGS    = $(AM_CCASFLAGS_PPC32_LINUX)
 vgpreload_exp_drd_ppc32_linux_so_DEPENDENCIES =
-vgpreload_exp_drd_ppc32_linux_so_LDFLAGS      = $(PRELOAD_LDFLAGS_PPC32_LINUX)
+vgpreload_exp_drd_ppc32_linux_so_LDFLAGS      = $(PRELOAD_LDFLAGS_PPC32_LINUX)\
+                                        $(LIBREPLACEMALLOC_LDFLAGS_PPC32_LINUX)
 
 vgpreload_exp_drd_ppc64_linux_so_SOURCES      = $(VGPRELOAD_DRD_SOURCES_COMMON)
 vgpreload_exp_drd_ppc64_linux_so_CPPFLAGS     = $(AM_CPPFLAGS_PPC64_LINUX)
 vgpreload_exp_drd_ppc64_linux_so_CFLAGS       = $(AM_CFLAGS_PPC64_LINUX) $(AM_CFLAGS_PIC)
 vgpreload_exp_drd_ppc64_linux_so_CCASFLAGS    = $(AM_CCASFLAGS_PPC64_LINUX)
 vgpreload_exp_drd_ppc64_linux_so_DEPENDENCIES =
-vgpreload_exp_drd_ppc64_linux_so_LDFLAGS      = $(PRELOAD_LDFLAGS_PPC64_LINUX)
+vgpreload_exp_drd_ppc64_linux_so_LDFLAGS      = $(PRELOAD_LDFLAGS_PPC64_LINUX)\
+                                        $(LIBREPLACEMALLOC_LDFLAGS_PPC64_LINUX)
 
 vgpreload_exp_drd_ppc32_aix5_so_SOURCES      = $(VGPRELOAD_DRD_SOURCES_COMMON)
 vgpreload_exp_drd_ppc32_aix5_so_CPPFLAGS     = $(AM_CPPFLAGS_PPC32_AIX5)
 vgpreload_exp_drd_ppc32_aix5_so_CFLAGS       = $(AM_CFLAGS_PPC32_AIX5) $(AM_CFLAGS_PIC)
 vgpreload_exp_drd_ppc32_aix5_so_CCASFLAGS    = $(AM_CCASFLAGS_PPC32_AIX5)
 vgpreload_exp_drd_ppc32_aix5_so_DEPENDENCIES =
-vgpreload_exp_drd_ppc32_aix5_so_LDFLAGS      = $(PRELOAD_LDFLAGS_PPC32_AIX5)
+vgpreload_exp_drd_ppc32_aix5_so_LDFLAGS      = $(PRELOAD_LDFLAGS_PPC32_AIX5)\
+                                        $(LIBREPLACEMALLOC_LDFLAGS_PPC32_AIX5)
 
 vgpreload_exp_drd_ppc64_aix5_so_SOURCES      = $(VGPRELOAD_DRD_SOURCES_COMMON)
 vgpreload_exp_drd_ppc64_aix5_so_CPPFLAGS     = $(AM_CPPFLAGS_PPC64_AIX5)
 vgpreload_exp_drd_ppc64_aix5_so_CFLAGS       = $(AM_CFLAGS_PPC64_AIX5) $(AM_CFLAGS_PIC)
 vgpreload_exp_drd_ppc64_aix5_so_CCASFLAGS    = $(AM_CCASFLAGS_PPC64_AIX5)
 vgpreload_exp_drd_ppc64_aix5_so_DEPENDENCIES =
-vgpreload_exp_drd_ppc64_aix5_so_LDFLAGS      = $(PRELOAD_LDFLAGS_PPC64_AIX5)
+vgpreload_exp_drd_ppc64_aix5_so_LDFLAGS      = $(PRELOAD_LDFLAGS_PPC64_AIX5)\
+                                        $(LIBREPLACEMALLOC_LDFLAGS_PPC64_AIX5)
 
 
 DRD_SOURCES_COMMON =    \
diff --git a/exp-drd/drd_clientreq.c b/exp-drd/drd_clientreq.c
index 1de6851..07d101b 100644
--- a/exp-drd/drd_clientreq.c
+++ b/exp-drd/drd_clientreq.c
@@ -94,11 +94,11 @@
       break;
 
    case VG_USERREQ__DRD_START_SUPPRESSION:
-      drd_start_suppression(arg[1], arg[1] + arg[2], "client");
+      drd_start_suppression(arg[1], arg[2], "client");
       break;
 
    case VG_USERREQ__DRD_FINISH_SUPPRESSION:
-      drd_finish_suppression(arg[1], arg[1] + arg[2]);
+      drd_finish_suppression(arg[1], arg[2]);
       break;
 
    case VG_USERREQ__DRD_SUPPRESS_CURRENT_STACK:
@@ -110,14 +110,6 @@
       thread_new_segment(PtThreadIdToDrdThreadId(arg[1]));
       break;
 
-   case VG_USERREQ__DRD_START_RECORDING:
-      thread_start_recording(PtThreadIdToDrdThreadId(arg[1]));
-      break;
-
-   case VG_USERREQ__DRD_STOP_RECORDING:
-      thread_stop_recording(PtThreadIdToDrdThreadId(arg[1]));
-      break;
-
    case VG_USERREQ__SET_PTHREADID:
       thread_set_pthreadid(thread_get_running_tid(), arg[1]);
       break;
diff --git a/exp-drd/drd_clientreq.h b/exp-drd/drd_clientreq.h
index 68cf741..daed51f 100644
--- a/exp-drd/drd_clientreq.h
+++ b/exp-drd/drd_clientreq.h
@@ -16,11 +16,11 @@
   /* To tell the drd tool to suppress data race detection on the specified */
   /* address range. */
   VG_USERREQ__DRD_START_SUPPRESSION,
-  /* args: start address, size in bytes */
+  /* args: start address, end address */
   /* To tell the drd tool no longer to suppress data race detection on the */
   /* specified address range. */
   VG_USERREQ__DRD_FINISH_SUPPRESSION,
-  /* args: start address, size in bytes */
+  /* args: start address, end address */
   /* Ask drd to suppress data race reports on all currently allocated stack */
   /* data of the current thread.                                            */
   VG_USERREQ__DRD_SUPPRESS_CURRENT_STACK,
@@ -29,15 +29,6 @@
   VG_USERREQ__DRD_START_NEW_SEGMENT,
   /* args: POSIX thread ID. */
 
-  /* To tell the drd tool to start again recording memory accesses for the */
-  /* specified thread. */
-  VG_USERREQ__DRD_START_RECORDING,
-  /* args: POSIX thread ID. */
-  /* To tell the drd tool to stop recording memory accesses for the */
-  /* specified thread. */
-  VG_USERREQ__DRD_STOP_RECORDING,
-  /* args: POSIX thread ID. */
-
   /* Tell the core the pthread_t of the running thread */
   VG_USERREQ__SET_PTHREADID,
   /* args: pthread_t. */
diff --git a/exp-drd/drd_intercepts.c b/exp-drd/drd_intercepts.c
index fd2ee2b..4c54f5d 100644
--- a/exp-drd/drd_intercepts.c
+++ b/exp-drd/drd_intercepts.c
@@ -40,7 +40,8 @@
    originates from Valgrind.
    ------------------------------------------------------------------ */
 
-// Make sure pthread_spinlock_t is available on glibc 2.3.2 systems.
+// Make sure pthread_spinlock_t is available when compiling with older glibc
+// versions (2.3 or before).
 #ifndef _GNU_SOURCE
 #define _GNU_SOURCE
 #endif
@@ -125,30 +126,7 @@
 {
    int res;
    VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__DRD_START_SUPPRESSION,
-                              p, size, 0, 0, 0);
-}
-
-#if 0
-static void vg_finish_suppression(const void* const p, size_t const size)
-{
-   int res;
-   VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__DRD_FINISH_SUPPRESSION,
-                              p, size, 0, 0, 0);
-}
-#endif
-
-static void vg_start_recording(void)
-{
-   int res;
-   VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__DRD_START_RECORDING,
-                              pthread_self(), 0, 0, 0, 0);
-}
-
-static void vg_stop_recording(void)
-{
-   int res;
-   VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__DRD_STOP_RECORDING,
-                              pthread_self(), 0, 0, 0, 0);
+                              p, (char*)p + size, 0, 0, 0);
 }
 
 static void vg_set_joinable(const pthread_t tid, const int joinable)
@@ -249,9 +227,7 @@
    pthread_cond_init(&vgargs.cond, 0);
    pthread_mutex_lock(&vgargs.mutex);
 #endif
-   vg_stop_recording();
    CALL_FN_W_WWWW(ret, fn, thread, attr, vg_thread_wrapper, &vgargs);
-   vg_start_recording();
 #if 0
    pthread_cond_wait(&vgargs.cond, &vgargs.mutex);
    pthread_mutex_unlock(&vgargs.mutex);
diff --git a/exp-drd/drd_main.c b/exp-drd/drd_main.c
index c4de749..67b583f 100644
--- a/exp-drd/drd_main.c
+++ b/exp-drd/drd_main.c
@@ -150,10 +150,8 @@
 {
    Segment* sg;
 
-   thread_set_vg_running_tid(VG_(get_running_tid)());
-
-   if (! thread_is_recording(thread_get_running_tid()))
-      return;
+   tl_assert(thread_get_running_tid()
+             == VgThreadIdToDrdThreadId(VG_(get_running_tid())));
 
 #if 1
    if (drd_trace_mem || (addr == drd_trace_address))
@@ -192,10 +190,8 @@
 {
    Segment* sg;
 
-   thread_set_vg_running_tid(VG_(get_running_tid)());
-
-   if (! thread_is_recording(thread_get_running_tid()))
-      return;
+   tl_assert(thread_get_running_tid()
+             == VgThreadIdToDrdThreadId(VG_(get_running_tid())));
 
 #if 1
    if (drd_trace_mem || (addr == drd_trace_address))
@@ -242,23 +238,50 @@
    }
 }
 
+static void drd_pre_mem_read_asciiz(const CorePart part,
+                                    const ThreadId tid,
+                                    Char* const s,
+                                    const Addr a)
+{
+   const char* p = (void*)a;
+   SizeT size = 0;
+
+   /* Note: the expression '*p' reads client memory and may crash if the */
+   /* client provided an invalid pointer !                               */
+   while (*p)
+   {
+      p++;
+      size++;
+   }
+   // To do: find out what a reasonable upper limit on 'size' is.
+   tl_assert(size < 4096);
+   if (size > 0)
+   {
+      drd_trace_load(a, size);
+   }
+}
+
 static void drd_post_mem_write(const CorePart part,
                                const ThreadId tid,
                                const Addr a,
                                const SizeT size)
 {
+   thread_set_vg_running_tid(VG_(get_running_tid)());
    if (size > 0)
    {
       drd_trace_store(a, size);
    }
 }
 
-static void drd_start_using_mem(const Addr a1, const Addr a2)
+static void drd_start_using_mem(const Addr a1, const SizeT len)
 {
+   const Addr a2 = a1 + len;
+
+   tl_assert(a1 < a2);
+
    thread_set_vg_running_tid(VG_(get_running_tid)());
 
-   if (a1 <= drd_trace_address && drd_trace_address < a2
-       && thread_is_recording(thread_get_running_tid()))
+   if (a1 <= drd_trace_address && drd_trace_address < a2)
    {
       VG_(message)(Vg_UserMsg, "start 0x%lx size %ld %s (tracing 0x%lx)",
                    a1, a2 - a1, thread_get_name(thread_get_running_tid()),
@@ -268,10 +291,13 @@
    }
 }
 
-static void drd_stop_using_mem(const Addr a1, const Addr a2)
+static void drd_stop_using_mem(const Addr a1, const SizeT len)
 {
-   if (a1 <= drd_trace_address && drd_trace_address < a2
-       && thread_is_recording(thread_get_running_tid()))
+   const Addr a2 = a1 + len;
+
+   tl_assert(a1 < a2);
+
+   if (a1 <= drd_trace_address && drd_trace_address < a2)
    {
       VG_(message)(Vg_UserMsg, "end   0x%lx size %ld %s (tracing 0x%lx)",
                    a1, a2 - a1, thread_get_name(thread_get_running_tid()),
@@ -284,13 +310,20 @@
    drd_suppression_stop_using_mem(a1, a2);
 }
 
+static
+void drd_start_using_mem_w_perms(const Addr a, const SizeT len,
+                                 const Bool rr, const Bool ww, const Bool xx)
+{
+   drd_start_using_mem(a, len);
+}
+
 /* Called by the core when the stack of a thread grows, to indicate that */
 /* the addresses in range [ a, a + len [ may now be used by the client.  */
 /* Assumption: stacks grow downward.                                     */
 static void drd_start_using_mem_stack(const Addr a, const SizeT len)
 {
    thread_set_stack_min(thread_get_running_tid(), a - VG_STACK_REDZONE_SZB);
-   drd_start_using_mem(a, a + len);
+   drd_start_using_mem(a, len);
 }
 
 /* Called by the core when the stack of a thread shrinks, to indicate that */
@@ -301,18 +334,17 @@
    thread_set_vg_running_tid(VG_(get_running_tid)());
    thread_set_stack_min(thread_get_running_tid(),
                         a + len - VG_STACK_REDZONE_SZB);
-   drd_stop_using_mem(a, a + len);
+   drd_stop_using_mem(a, len);
 }
 
-static void drd_start_using_mem_mmap(Addr a, SizeT len,
-                                     Bool rr, Bool ww, Bool xx)
+static void drd_start_using_mem_stack_signal(const Addr a, const SizeT len)
 {
-   drd_start_using_mem(a, a + len);
+   drd_start_using_mem(a, len);
 }
 
-static void drd_stop_using_mem_munmap(Addr a, SizeT len)
+static void drd_stop_using_mem_stack_signal(Addr a, SizeT len)
 {
-   drd_stop_using_mem(a, a + len);
+   drd_stop_using_mem(a, len);
 }
 
 static
@@ -797,15 +829,22 @@
                                    drd_print_usage,
                                    drd_print_debug_usage);
 
+   // Error handling.
    drd_register_error_handlers();
 
    // Core event tracking.
    VG_(track_pre_mem_read)         (drd_pre_mem_read);
+   VG_(track_pre_mem_read_asciiz)  (drd_pre_mem_read_asciiz);
    VG_(track_post_mem_write)       (drd_post_mem_write);
+   VG_(track_new_mem_brk)          (drd_start_using_mem);
+   VG_(track_new_mem_mmap)         (drd_start_using_mem_w_perms);
    VG_(track_new_mem_stack)        (drd_start_using_mem_stack);
+   VG_(track_new_mem_stack_signal) (drd_start_using_mem_stack_signal);
+   VG_(track_new_mem_startup)      (drd_start_using_mem_w_perms);
+   VG_(track_die_mem_brk)          (drd_stop_using_mem);
+   VG_(track_die_mem_munmap)       (drd_stop_using_mem);
    VG_(track_die_mem_stack)        (drd_stop_using_mem_stack);
-   VG_(track_new_mem_mmap)         (drd_start_using_mem_mmap);
-   VG_(track_die_mem_munmap)       (drd_stop_using_mem_munmap);
+   VG_(track_die_mem_stack_signal) (drd_stop_using_mem_stack_signal);
    VG_(track_start_client_code)    (drd_start_client_code);
    VG_(track_pre_thread_ll_create) (drd_pre_thread_create);
    VG_(track_pre_thread_first_insn)(drd_post_thread_create);
diff --git a/exp-drd/drd_thread.c b/exp-drd/drd_thread.c
index b233199..6a151d4 100644
--- a/exp-drd/drd_thread.c
+++ b/exp-drd/drd_thread.c
@@ -63,7 +63,6 @@
    /// If true, indicates that there is a corresponding POSIX thread ID and
    /// a corresponding OS thread that is detached.
    Bool      detached_posix_thread;
-   Bool      is_recording;
 } ThreadInfo;
 
 
@@ -155,7 +154,6 @@
          VG_(snprintf)(s_threadinfo[i].name, sizeof(s_threadinfo[i].name),
                        "thread %d", tid);
          s_threadinfo[i].name[sizeof(s_threadinfo[i].name) - 1] = 0;
-         s_threadinfo[i].is_recording  = True;
          if (s_threadinfo[i].first != 0)
             VG_(printf)("drd thread id = %d\n", i);
          tl_assert(s_threadinfo[i].first == 0);
@@ -723,26 +721,6 @@
    }
 }
 
-void thread_start_recording(const DrdThreadId tid)
-{
-   tl_assert(0 <= tid && tid < DRD_N_THREADS && tid != DRD_INVALID_THREADID);
-   tl_assert(! s_threadinfo[tid].is_recording);
-   s_threadinfo[tid].is_recording = True;
-}
-
-void thread_stop_recording(const DrdThreadId tid)
-{
-   tl_assert(0 <= tid && tid < DRD_N_THREADS && tid != DRD_INVALID_THREADID);
-   tl_assert(s_threadinfo[tid].is_recording);
-   s_threadinfo[tid].is_recording = False;
-}
-
-Bool thread_is_recording(const DrdThreadId tid)
-{
-   tl_assert(0 <= tid && tid < DRD_N_THREADS && tid != DRD_INVALID_THREADID);
-   return s_threadinfo[tid].is_recording;
-}
-
 void thread_print_all(void)
 {
    unsigned i;
diff --git a/exp-drd/drd_thread.h b/exp-drd/drd_thread.h
index d08d75c..7e47ed9 100644
--- a/exp-drd/drd_thread.h
+++ b/exp-drd/drd_thread.h
@@ -81,9 +81,6 @@
 void thread_combine_vc(const DrdThreadId joiner, const DrdThreadId joinee);
 void thread_combine_vc2(const DrdThreadId tid, const VectorClock* const vc);
 void thread_stop_using_mem(const Addr a1, const Addr a2);
-void thread_start_recording(const DrdThreadId tid);
-void thread_stop_recording(const DrdThreadId tid);
-Bool thread_is_recording(const DrdThreadId tid);
 void thread_print_all(void);
 void thread_report_races(const DrdThreadId tid);
 void thread_report_races_segment(const DrdThreadId tid,
diff --git a/exp-drd/tests/tc20_verifywrap2.stderr.exp2 b/exp-drd/tests/tc20_verifywrap2.stderr.exp2
index a05efce..92f7898 100644
--- a/exp-drd/tests/tc20_verifywrap2.stderr.exp2
+++ b/exp-drd/tests/tc20_verifywrap2.stderr.exp2
@@ -5,9 +5,6 @@
 
 ---------------- pthread_create/join ----------------
 
-[1/1] mutex_init      recursive mutex 0x........
-[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 0
-[1/1] mutex_unlock    recursive mutex 0x........ rc 1
 Conflicting store by thread 1 at 0x........ size 2
    at 0x........: main (tc20_verifywrap.c:78)
 Allocation context: unknown
@@ -115,7 +112,8 @@
 [1/1] mutex_destroy   error checking mutex 0x........
 [1/1] mutex_destroy   invalid mutex 0x........
 [1/1] mutex_destroy   invalid mutex 0x........
-[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
+[1/1] mutex_init      recursive mutex 0x........
+[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 0
 [1/1] mutex_unlock    recursive mutex 0x........ rc 1
 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
 [1/1] mutex_unlock    recursive mutex 0x........ rc 1
diff --git a/exp-drd/tests/tc22_exit_w_lock.stderr.exp-64bit b/exp-drd/tests/tc22_exit_w_lock.stderr.exp-64bit
index bcf8ef6..e8139b5 100644
--- a/exp-drd/tests/tc22_exit_w_lock.stderr.exp-64bit
+++ b/exp-drd/tests/tc22_exit_w_lock.stderr.exp-64bit
@@ -1,127 +1,6 @@
 
-Conflicting load by thread 1 at 0x........ size 4
-   at 0x........: __deallocate_stack (in libpthread-?.?.so)
-   by 0x........: pthread_join (in libpthread-?.?.so)
-   by 0x........: pthread_join (drd_intercepts.c:?)
-   by 0x........: main (tc22_exit_w_lock.c:43)
-Allocation context: stack_cache_lock (offset 0, size 4) in libpthread-?.?.so, libpthread.so.0:BSS
-Other segment start (thread 2)
-   (thread finished, call stack no longer available)
-Other segment end (thread 2)
-   (thread finished, call stack no longer available)
-
-Conflicting store by thread 1 at 0x........ size 4
-   at 0x........: __deallocate_stack (in libpthread-?.?.so)
-   by 0x........: pthread_join (in libpthread-?.?.so)
-   by 0x........: pthread_join (drd_intercepts.c:?)
-   by 0x........: main (tc22_exit_w_lock.c:43)
-Allocation context: stack_cache_lock (offset 0, size 4) in libpthread-?.?.so, libpthread.so.0:BSS
-Other segment start (thread 2)
-   (thread finished, call stack no longer available)
-Other segment end (thread 2)
-   (thread finished, call stack no longer available)
-
-Conflicting store by thread 1 at 0x........ size 8
-   at 0x........: __deallocate_stack (in libpthread-?.?.so)
-   by 0x........: pthread_join (in libpthread-?.?.so)
-   by 0x........: pthread_join (drd_intercepts.c:?)
-   by 0x........: main (tc22_exit_w_lock.c:43)
-Allocation context: stack_used (offset 8, size 16) in libpthread-?.?.so, libpthread.so.0:Data
-Other segment start (thread 2)
-   (thread finished, call stack no longer available)
-Other segment end (thread 2)
-   (thread finished, call stack no longer available)
-
-Conflicting store by thread 1 at 0x........ size 8
-   at 0x........: __deallocate_stack (in libpthread-?.?.so)
-   by 0x........: pthread_join (in libpthread-?.?.so)
-   by 0x........: pthread_join (drd_intercepts.c:?)
-   by 0x........: main (tc22_exit_w_lock.c:43)
-Allocation context: stack_used (offset 0, size 16) in libpthread-?.?.so, libpthread.so.0:Data
-Other segment start (thread 2)
-   (thread finished, call stack no longer available)
-Other segment end (thread 2)
-   (thread finished, call stack no longer available)
-
-Conflicting load by thread 1 at 0x........ size 8
-   at 0x........: __deallocate_stack (in libpthread-?.?.so)
-   by 0x........: pthread_join (in libpthread-?.?.so)
-   by 0x........: pthread_join (drd_intercepts.c:?)
-   by 0x........: main (tc22_exit_w_lock.c:43)
-Allocation context: stack_cache (offset 0, size 16) in libpthread-?.?.so, libpthread.so.0:Data
-Other segment start (thread 2)
-   (thread finished, call stack no longer available)
-Other segment end (thread 2)
-   (thread finished, call stack no longer available)
-
-Conflicting store by thread 1 at 0x........ size 8
-   at 0x........: __deallocate_stack (in libpthread-?.?.so)
-   by 0x........: pthread_join (in libpthread-?.?.so)
-   by 0x........: pthread_join (drd_intercepts.c:?)
-   by 0x........: main (tc22_exit_w_lock.c:43)
-Allocation context: stack_cache (offset 8, size 16) in libpthread-?.?.so, libpthread.so.0:Data
-Other segment start (thread 2)
-   (thread finished, call stack no longer available)
-Other segment end (thread 2)
-   (thread finished, call stack no longer available)
-
-Conflicting store by thread 1 at 0x........ size 8
-   at 0x........: __deallocate_stack (in libpthread-?.?.so)
-   by 0x........: pthread_join (in libpthread-?.?.so)
-   by 0x........: pthread_join (drd_intercepts.c:?)
-   by 0x........: main (tc22_exit_w_lock.c:43)
-Allocation context: stack_cache (offset 0, size 16) in libpthread-?.?.so, libpthread.so.0:Data
-Other segment start (thread 2)
-   (thread finished, call stack no longer available)
-Other segment end (thread 2)
-   (thread finished, call stack no longer available)
-
-Conflicting load by thread 1 at 0x........ size 8
-   at 0x........: __deallocate_stack (in libpthread-?.?.so)
-   by 0x........: pthread_join (in libpthread-?.?.so)
-   by 0x........: pthread_join (drd_intercepts.c:?)
-   by 0x........: main (tc22_exit_w_lock.c:43)
-Allocation context: stack_cache_actsize (offset 0, size 8) in libpthread-?.?.so, libpthread.so.0:BSS
-Other segment start (thread 2)
-   (thread finished, call stack no longer available)
-Other segment end (thread 2)
-   (thread finished, call stack no longer available)
-
-Conflicting store by thread 1 at 0x........ size 8
-   at 0x........: __deallocate_stack (in libpthread-?.?.so)
-   by 0x........: pthread_join (in libpthread-?.?.so)
-   by 0x........: pthread_join (drd_intercepts.c:?)
-   by 0x........: main (tc22_exit_w_lock.c:43)
-Allocation context: stack_cache_actsize (offset 0, size 8) in libpthread-?.?.so, libpthread.so.0:BSS
-Other segment start (thread 2)
-   (thread finished, call stack no longer available)
-Other segment end (thread 2)
-   (thread finished, call stack no longer available)
-
-Conflicting load by thread 1 at 0x........ size 4
-   at 0x........: __deallocate_stack (in libpthread-?.?.so)
-   by 0x........: pthread_join (in libpthread-?.?.so)
-   by 0x........: pthread_join (drd_intercepts.c:?)
-   by 0x........: main (tc22_exit_w_lock.c:43)
-Allocation context: stack_cache_lock (offset 0, size 4) in libpthread-?.?.so, libpthread.so.0:BSS
-Other segment start (thread 2)
-   (thread finished, call stack no longer available)
-Other segment end (thread 2)
-   (thread finished, call stack no longer available)
-
-Conflicting store by thread 1 at 0x........ size 4
-   at 0x........: __deallocate_stack (in libpthread-?.?.so)
-   by 0x........: pthread_join (in libpthread-?.?.so)
-   by 0x........: pthread_join (drd_intercepts.c:?)
-   by 0x........: main (tc22_exit_w_lock.c:43)
-Allocation context: stack_cache_lock (offset 0, size 4) in libpthread-?.?.so, libpthread.so.0:BSS
-Other segment start (thread 2)
-   (thread finished, call stack no longer available)
-Other segment end (thread 2)
-   (thread finished, call stack no longer available)
-
 Mutex still locked at thread exit: address 0x........, recursion count 1, owner 3.
    at 0x........: pthread_join (drd_intercepts.c:?)
    by 0x........: main (tc22_exit_w_lock.c:43)
 
-ERROR SUMMARY: 12 errors from 12 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
