#define WAIT_UNTIL_CREATED_THREAD_STARTED
#define ALLOCATE_THREAD_ARGS_ON_THE_STACK
-#define PTH_FUNC(ret_ty, f, args...) \
- ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args); \
- ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args)
+/**
+ * Macro for generating a Valgrind interception function.
+ * @param[in] ret_ty Return type of the function to be generated.
+ * @param[in] zf Z-encoded name of the interception function.
+ * @param[in] implf Name of the function that implements the intercept.
+ * @param[in] arg_decl Argument declaration list enclosed in parentheses.
+ * @param[in] argl Argument list enclosed in parentheses.
+ */
+#define PTH_FUNC(ret_ty, zf, implf, argl_decl, argl) \
+ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl; \
+ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl \
+ { return implf argl; }
+
+/**
+ * Macro for generating three Valgrind interception functions: one with the
+ * Z-encoded name zf, one with ZAZa ("@*") appended to the name zf and one
+ * with ZDZa ("$*") appended to the name zf. The second generated interception
+ * function will intercept versioned symbols on Linux, and the third will
+ * intercept versioned symbols on Darwin.
+ */
+#define PTH_FUNCS(ret_ty, zf, implf, argl_decl, argl) \
+ PTH_FUNC(ret_ty, zf, implf, argl_decl, argl); \
+ PTH_FUNC(ret_ty, zf ## ZAZa, implf, argl_decl, argl); \
+ PTH_FUNC(ret_ty, zf ## ZDZa, implf, argl_decl, argl);
+/*
+ * Not inlining one of the intercept functions will cause the regression
+ * tests to fail because this would cause an additional stackfram to appear
+ * in the output. The __always_inline macro guarantees that inlining will
+ * happen, even when compiling with optimization disabled.
+ */
+#undef __always_inline /* since already defined in <cdefs.h> */
+#if __GNUC_PREREQ (3,2)
+#define __always_inline __inline__ __attribute__((always_inline))
+#else
+#define __always_inline __inline__
+#endif
/* Local data structures. */
* higher bits for flags like PTHREAD_MUTEXATTR_FLAG_ROBUST and
* PTHREAD_MUTEXATTR_FLAG_PSHARED.
*/
-static __inline__ MutexT DRD_(mutex_type)(pthread_mutex_t* mutex)
+static __always_inline MutexT DRD_(mutex_type)(pthread_mutex_t* mutex)
{
#if defined(HAVE_PTHREAD_MUTEX_T__M_KIND)
/* glibc + LinuxThreads. */
}
/** Tell DRD that the calling thread is about to enter pthread_create(). */
-static __inline__ void DRD_(entering_pthread_create)(void)
+static __always_inline void DRD_(entering_pthread_create)(void)
{
int res;
VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__ENTERING_PTHREAD_CREATE,
}
/** Tell DRD that the calling thread has left pthread_create(). */
-static __inline__ void DRD_(left_pthread_create)(void)
+static __always_inline void DRD_(left_pthread_create)(void)
{
int res;
VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__LEFT_PTHREAD_CREATE,
* glibc-2.9/nptl/pthread_create.c.
*/
-// pthread_create
-PTH_FUNC(int, pthreadZucreateZa, // pthread_create*
- pthread_t *thread, const pthread_attr_t *attr,
- void *(*start) (void *), void *arg)
+static __always_inline
+int pthread_create_intercept(pthread_t* thread, const pthread_attr_t* attr,
+ void* (*start)(void*), void* arg)
{
int res;
int ret;
return ret;
}
-// pthread_join
-PTH_FUNC(int, pthreadZujoinZa, // pthread_join*
- pthread_t pt_joinee, void **thread_return)
+PTH_FUNCS(int, pthreadZucreate, pthread_create_intercept,
+ (pthread_t *thread, const pthread_attr_t *attr,
+ void *(*start) (void *), void *arg),
+ (thread, attr, start, arg));
+
+static __always_inline
+int pthread_join_intercept(pthread_t pt_joinee, void **thread_return)
{
int ret;
int res;
return ret;
}
-// pthread_detach
-PTH_FUNC(int, pthreadZudetach, pthread_t pt_thread)
+PTH_FUNCS(int, pthreadZujoin, pthread_join_intercept,
+ (pthread_t pt_joinee, void **thread_return),
+ (pt_joinee, thread_return));
+
+static __always_inline
+int pthread_detach_intercept(pthread_t pt_thread)
{
int ret;
OrigFn fn;
return ret;
}
-// pthread_cancel
-// Note: make sure not to intercept pthread_cancel_init() on Linux !
-PTH_FUNC(int, pthreadZucancel, pthread_t pt_thread)
+PTH_FUNCS(int, pthreadZudetach, pthread_detach_intercept,
+ (pthread_t thread), (thread));
+
+// NOTE: be careful to intercept only pthread_cancel() and not
+// pthread_cancel_init() on Linux.
+
+static __always_inline
+int pthread_cancel_intercept(pthread_t pt_thread)
{
int res;
int ret;
return ret;
}
-// pthread_once
-PTH_FUNC(int, pthreadZuonceZa, // pthread_once*
- pthread_once_t *once_control, void (*init_routine)(void))
+PTH_FUNCS(int, pthreadZucancel, pthread_cancel_intercept,
+ (pthread_t thread), (thread))
+
+static __always_inline
+int pthread_once_intercept(pthread_once_t *once_control,
+ void (*init_routine)(void))
{
int ret;
OrigFn fn;
return ret;
}
-// pthread_mutex_init
-PTH_FUNC(int, pthreadZumutexZuinit,
- pthread_mutex_t *mutex,
- const pthread_mutexattr_t* attr)
+PTH_FUNCS(int, pthreadZuonce, pthread_once_intercept,
+ (pthread_once_t *once_control, void (*init_routine)(void)),
+ (once_control, init_routine));
+
+static __always_inline
+int pthread_mutex_init_intercept(pthread_mutex_t *mutex,
+ const pthread_mutexattr_t* attr)
{
int ret;
int res;
return ret;
}
-// pthread_mutex_destroy
-PTH_FUNC(int, pthreadZumutexZudestroy,
- pthread_mutex_t *mutex)
+PTH_FUNCS(int, pthreadZumutexZuinit, pthread_mutex_init_intercept,
+ (pthread_mutex_t *mutex, const pthread_mutexattr_t* attr),
+ (mutex, attr));
+
+static __always_inline
+int pthread_mutex_destroy_intercept(pthread_mutex_t* mutex)
{
int ret;
int res;
return ret;
}
-// pthread_mutex_lock
-PTH_FUNC(int, pthreadZumutexZulock, // pthread_mutex_lock
- pthread_mutex_t *mutex)
+PTH_FUNCS(int, pthreadZumutexZudestroy, pthread_mutex_destroy_intercept,
+ (pthread_mutex_t *mutex), (mutex));
+
+static __always_inline
+int pthread_mutex_lock_intercept(pthread_mutex_t* mutex)
{
int ret;
int res;
return ret;
}
-// pthread_mutex_trylock
-PTH_FUNC(int, pthreadZumutexZutrylock, // pthread_mutex_trylock
- pthread_mutex_t *mutex)
+PTH_FUNCS(int, pthreadZumutexZulock, pthread_mutex_lock_intercept,
+ (pthread_mutex_t *mutex), (mutex));
+
+static __always_inline
+int pthread_mutex_trylock_intercept(pthread_mutex_t* mutex)
{
int ret;
int res;
return ret;
}
-// pthread_mutex_timedlock
-PTH_FUNC(int, pthreadZumutexZutimedlock, // pthread_mutex_timedlock
- pthread_mutex_t *mutex,
- const struct timespec *abs_timeout)
+PTH_FUNCS(int, pthreadZumutexZutrylock, pthread_mutex_trylock_intercept,
+ (pthread_mutex_t *mutex), (mutex));
+
+static __always_inline
+int pthread_mutex_timedlock_intercept(pthread_mutex_t *mutex,
+ const struct timespec *abs_timeout)
{
int ret;
int res;
return ret;
}
-// pthread_mutex_unlock
-PTH_FUNC(int, pthreadZumutexZuunlock, // pthread_mutex_unlock
- pthread_mutex_t *mutex)
+PTH_FUNCS(int, pthreadZumutexZutimedlock, pthread_mutex_timedlock_intercept,
+ (pthread_mutex_t *mutex, const struct timespec *abs_timeout),
+ (mutex, abs_timeout));
+
+static __always_inline
+int pthread_mutex_unlock_intercept(pthread_mutex_t *mutex)
{
int ret;
int res;
return ret;
}
-// pthread_cond_init
-PTH_FUNC(int, pthreadZucondZuinitZa, // pthread_cond_init*
- pthread_cond_t* cond,
- const pthread_condattr_t* attr)
+PTH_FUNCS(int, pthreadZumutexZuunlock, pthread_mutex_unlock_intercept,
+ (pthread_mutex_t *mutex), (mutex));
+
+static __always_inline
+int pthread_cond_init_intercept(pthread_cond_t* cond,
+ const pthread_condattr_t* attr)
{
int ret;
int res;
return ret;
}
-// pthread_cond_destroy
-PTH_FUNC(int, pthreadZucondZudestroyZa, // pthread_cond_destroy*
- pthread_cond_t* cond)
+PTH_FUNCS(int, pthreadZucondZuinit, pthread_cond_init_intercept,
+ (pthread_cond_t* cond, const pthread_condattr_t* attr),
+ (cond, attr));
+
+static __always_inline
+int pthread_cond_destroy_intercept(pthread_cond_t* cond)
{
int ret;
int res;
return ret;
}
-// pthread_cond_wait
-PTH_FUNC(int, pthreadZucondZuwaitZa, // pthread_cond_wait*
- pthread_cond_t *cond,
- pthread_mutex_t *mutex)
+PTH_FUNCS(int, pthreadZucondZudestroy, pthread_cond_destroy_intercept,
+ (pthread_cond_t* cond), (cond));
+
+static __always_inline
+int pthread_cond_wait_intercept(pthread_cond_t *cond, pthread_mutex_t *mutex)
{
int ret;
int res;
return ret;
}
-// pthread_cond_timedwait
-PTH_FUNC(int, pthreadZucondZutimedwaitZa, // pthread_cond_timedwait*
- pthread_cond_t *cond,
- pthread_mutex_t *mutex,
- const struct timespec* abstime)
+PTH_FUNCS(int, pthreadZucondZuwait, pthread_cond_wait_intercept,
+ (pthread_cond_t *cond, pthread_mutex_t *mutex),
+ (cond, mutex));
+
+static __always_inline
+int pthread_cond_timedwait_intercept(pthread_cond_t *cond,
+ pthread_mutex_t *mutex,
+ const struct timespec* abstime)
{
int ret;
int res;
return ret;
}
+PTH_FUNCS(int, pthreadZucondZutimedwait, pthread_cond_timedwait_intercept,
+ (pthread_cond_t *cond, pthread_mutex_t *mutex,
+ const struct timespec* abstime),
+ (cond, mutex, abstime));
+
// NOTE: be careful to intercept only pthread_cond_signal() and not Darwin's
// pthread_cond_signal_thread_np(). The former accepts one argument; the latter
// two. Intercepting all pthread_cond_signal* functions will cause only one
// argument to be passed to pthread_cond_signal_np() and hence will cause this
// last function to crash.
-// pthread_cond_signal
-PTH_FUNC(int, pthreadZucondZusignal, // pthread_cond_signal
- pthread_cond_t* cond)
+static __always_inline
+int pthread_cond_signal_intercept(pthread_cond_t* cond)
{
int ret;
int res;
return ret;
}
-PTH_FUNC(int, pthreadZucondZusignalZAZa, // pthread_cond_signal@*
- pthread_cond_t* cond)
-{
- int ret;
- int res;
- OrigFn fn;
- VALGRIND_GET_ORIG_FN(fn);
- VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_COND_SIGNAL,
- cond, 0, 0, 0, 0);
- CALL_FN_W_W(ret, fn, cond);
- VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_COND_SIGNAL,
- cond, 0, 0, 0, 0);
- return ret;
-}
+PTH_FUNCS(int, pthreadZucondZusignal, pthread_cond_signal_intercept,
+ (pthread_cond_t* cond), (cond));
-// pthread_cond_broadcast
-PTH_FUNC(int, pthreadZucondZubroadcastZa, // pthread_cond_broadcast*
- pthread_cond_t* cond)
+static __always_inline
+int pthread_cond_broadcast_intercept(pthread_cond_t* cond)
{
int ret;
int res;
return ret;
}
+PTH_FUNCS(int, pthreadZucondZubroadcast, pthread_cond_broadcast_intercept,
+ (pthread_cond_t* cond), (cond));
#if defined(HAVE_PTHREAD_SPIN_LOCK)
-// pthread_spin_init
-PTH_FUNC(int, pthreadZuspinZuinit, // pthread_spin_init
- pthread_spinlock_t *spinlock,
- int pshared)
+static __always_inline
+int pthread_spin_init_intercept(pthread_spinlock_t *spinlock, int pshared)
{
int ret;
int res;
return ret;
}
-// pthread_spin_destroy
-PTH_FUNC(int, pthreadZuspinZudestroy, // pthread_spin_destroy
- pthread_spinlock_t *spinlock)
+PTH_FUNCS(int, pthreadZuspinZuinit, pthread_spin_init_intercept,
+ (pthread_spinlock_t *spinlock, int pshared), (spinlock, pshared));
+
+static __always_inline
+int pthread_spin_destroy_intercept(pthread_spinlock_t *spinlock)
{
int ret;
int res;
return ret;
}
-// pthread_spin_lock
-PTH_FUNC(int, pthreadZuspinZulock, // pthread_spin_lock
- pthread_spinlock_t *spinlock)
+PTH_FUNCS(int, pthreadZuspinZudestroy, pthread_spin_destroy_intercept,
+ (pthread_spinlock_t *spinlock), (spinlock));
+
+static __always_inline
+int pthread_spin_lock_intercept(pthread_spinlock_t *spinlock)
{
int ret;
int res;
return ret;
}
-// pthread_spin_trylock
-PTH_FUNC(int, pthreadZuspinZutrylock, // pthread_spin_trylock
- pthread_spinlock_t *spinlock)
+PTH_FUNCS(int, pthreadZuspinZulock, pthread_spin_lock_intercept,
+ (pthread_spinlock_t *spinlock), (spinlock));
+
+static __always_inline
+int pthread_spin_trylock_intercept(pthread_spinlock_t *spinlock)
{
int ret;
int res;
return ret;
}
-// pthread_spin_unlock
-PTH_FUNC(int, pthreadZuspinZuunlock, // pthread_spin_unlock
- pthread_spinlock_t *spinlock)
+PTH_FUNCS(int, pthreadZuspinZutrylock, pthread_spin_trylock_intercept,
+ (pthread_spinlock_t *spinlock), (spinlock));
+
+static __always_inline
+int pthread_spin_unlock_intercept(pthread_spinlock_t *spinlock)
{
int ret;
int res;
spinlock, 0, 0, 0, 0);
return ret;
}
+
+PTH_FUNCS(int, pthreadZuspinZuunlock, pthread_spin_unlock_intercept,
+ (pthread_spinlock_t *spinlock), (spinlock));
#endif // HAVE_PTHREAD_SPIN_LOCK
#if defined(HAVE_PTHREAD_BARRIER_INIT)
-// pthread_barrier_init
-PTH_FUNC(int, pthreadZubarrierZuinit, // pthread_barrier_init
- pthread_barrier_t* barrier,
- const pthread_barrierattr_t* attr,
- unsigned count)
+static __always_inline
+int pthread_barrier_init_intercept(pthread_barrier_t* barrier,
+ const pthread_barrierattr_t* attr,
+ unsigned count)
{
int ret;
int res;
return ret;
}
-// pthread_barrier_destroy
-PTH_FUNC(int, pthreadZubarrierZudestroy, // pthread_barrier_destroy
- pthread_barrier_t* barrier)
+PTH_FUNCS(int, pthreadZubarrierZuinit, pthread_barrier_init_intercept,
+ (pthread_barrier_t* barrier, const pthread_barrierattr_t* attr,
+ unsigned count), (barrier, attr, count));
+
+static __always_inline
+int pthread_barrier_destroy_intercept(pthread_barrier_t* barrier)
{
int ret;
int res;
return ret;
}
-// pthread_barrier_wait
-PTH_FUNC(int, pthreadZubarrierZuwait, // pthread_barrier_wait
- pthread_barrier_t* barrier)
+PTH_FUNCS(int, pthreadZubarrierZudestroy, pthread_barrier_destroy_intercept,
+ (pthread_barrier_t* barrier), (barrier));
+
+static __always_inline
+int pthread_barrier_wait_intercept(pthread_barrier_t* barrier)
{
int ret;
int res;
ret == PTHREAD_BARRIER_SERIAL_THREAD, 0);
return ret;
}
+
+PTH_FUNCS(int, pthreadZubarrierZuwait, pthread_barrier_wait_intercept,
+ (pthread_barrier_t* barrier), (barrier));
#endif // HAVE_PTHREAD_BARRIER_INIT
-// sem_init
-PTH_FUNC(int, semZuinitZa, // sem_init*
- sem_t *sem,
- int pshared,
- unsigned int value)
+static __always_inline
+int sem_init_intercept(sem_t *sem, int pshared, unsigned int value)
{
int ret;
int res;
return ret;
}
-// sem_destroy
-PTH_FUNC(int, semZudestroyZa, // sem_destroy*
- sem_t *sem)
+PTH_FUNCS(int, semZuinit, sem_init_intercept,
+ (sem_t *sem, int pshared, unsigned int value), (sem, pshared, value));
+
+static __always_inline
+int sem_destroy_intercept(sem_t *sem)
{
int ret;
int res;
return ret;
}
-// sem_open
-PTH_FUNC(sem_t *, semZuopen, // sem_open
- const char *name, int oflag, mode_t mode, unsigned int value)
+PTH_FUNCS(int, semZudestroy, sem_destroy_intercept, (sem_t *sem), (sem));
+
+static __always_inline
+sem_t* sem_open_intercept(const char *name, int oflag, mode_t mode,
+ unsigned int value)
{
sem_t *ret;
int res;
return ret;
}
-// sem_close
-PTH_FUNC(int, semZuclose, // sem_close
- sem_t *sem)
+PTH_FUNCS(sem_t *, semZuopen, sem_open_intercept,
+ (const char *name, int oflag, mode_t mode, unsigned int value),
+ (name, oflag, mode, value));
+
+static __always_inline int sem_close_intercept(sem_t *sem)
{
int ret;
int res;
return ret;
}
-// sem_wait
-PTH_FUNC(int, semZuwaitZa, // sem_wait*
- sem_t *sem)
+PTH_FUNCS(int, semZuclose, sem_close_intercept, (sem_t *sem), (sem));
+
+static __always_inline int sem_wait_intercept(sem_t *sem)
{
int ret;
int res;
return ret;
}
-// sem_trywait
-PTH_FUNC(int, semZutrywaitZa, // sem_trywait*
- sem_t *sem)
+PTH_FUNCS(int, semZuwait, sem_wait_intercept, (sem_t *sem), (sem));
+
+static __always_inline int sem_trywait_intercept(sem_t *sem)
{
int ret;
int res;
return ret;
}
-// sem_timedwait
-PTH_FUNC(int, semZutimedwait, // sem_timedwait
- sem_t *sem, const struct timespec *abs_timeout)
+PTH_FUNCS(int, semZutrywait, sem_trywait_intercept, (sem_t *sem), (sem));
+
+static __always_inline
+int sem_timedwait_intercept(sem_t *sem, const struct timespec *abs_timeout)
{
int ret;
int res;
return ret;
}
-// sem_post
-PTH_FUNC(int, semZupostZa, // sem_post*
- sem_t *sem)
+PTH_FUNCS(int, semZutimedwait, sem_timedwait_intercept,
+ (sem_t *sem, const struct timespec *abs_timeout),
+ (sem, abs_timeout));
+
+static __always_inline int sem_post_intercept(sem_t *sem)
{
int ret;
int res;
return ret;
}
-// pthread_rwlock_init
-PTH_FUNC(int,
- pthreadZurwlockZuinitZa, // pthread_rwlock_init*
- pthread_rwlock_t* rwlock,
- const pthread_rwlockattr_t* attr)
+PTH_FUNCS(int, semZupost, sem_post_intercept, (sem_t *sem), (sem));
+
+static __always_inline
+int pthread_rwlock_init_intercept(pthread_rwlock_t* rwlock,
+ const pthread_rwlockattr_t* attr)
{
int ret;
int res;
return ret;
}
-// pthread_rwlock_destroy
-PTH_FUNC(int,
- pthreadZurwlockZudestroyZa, // pthread_rwlock_destroy*
- pthread_rwlock_t* rwlock)
+PTH_FUNCS(int,
+ pthreadZurwlockZuinit, pthread_rwlock_init_intercept,
+ (pthread_rwlock_t* rwlock, const pthread_rwlockattr_t* attr),
+ (rwlock, attr));
+
+static __always_inline
+int pthread_rwlock_destroy_intercept(pthread_rwlock_t* rwlock)
{
int ret;
int res;
return ret;
}
-// pthread_rwlock_rdlock
-PTH_FUNC(int,
- pthreadZurwlockZurdlockZa, // pthread_rwlock_rdlock*
- pthread_rwlock_t* rwlock)
+PTH_FUNCS(int,
+ pthreadZurwlockZudestroy, pthread_rwlock_destroy_intercept,
+ (pthread_rwlock_t* rwlock), (rwlock));
+
+static __always_inline
+int pthread_rwlock_rdlock_intercept(pthread_rwlock_t* rwlock)
{
int ret;
int res;
return ret;
}
-// pthread_rwlock_wrlock
-PTH_FUNC(int,
- pthreadZurwlockZuwrlockZa, // pthread_rwlock_wrlock*
- pthread_rwlock_t* rwlock)
+PTH_FUNCS(int,
+ pthreadZurwlockZurdlock, pthread_rwlock_rdlock_intercept,
+ (pthread_rwlock_t* rwlock), (rwlock));
+
+static __always_inline
+int pthread_rwlock_wrlock_intercept(pthread_rwlock_t* rwlock)
{
int ret;
int res;
return ret;
}
-// pthread_rwlock_timedrdlock
-PTH_FUNC(int,
- pthreadZurwlockZutimedrdlockZa, // pthread_rwlock_timedrdlock*
- pthread_rwlock_t* rwlock)
+PTH_FUNCS(int,
+ pthreadZurwlockZuwrlock, pthread_rwlock_wrlock_intercept,
+ (pthread_rwlock_t* rwlock), (rwlock));
+
+static __always_inline
+int pthread_rwlock_timedrdlock_intercept(pthread_rwlock_t* rwlock)
{
int ret;
int res;
return ret;
}
-// pthread_rwlock_timedwrlock
-PTH_FUNC(int,
- pthreadZurwlockZutimedwrlockZa, // pthread_rwlock_timedwrlock*
- pthread_rwlock_t* rwlock)
+PTH_FUNCS(int,
+ pthreadZurwlockZutimedrdlock, pthread_rwlock_timedrdlock_intercept,
+ (pthread_rwlock_t* rwlock), (rwlock));
+
+static __always_inline
+int pthread_rwlock_timedwrlock_intercept(pthread_rwlock_t* rwlock)
{
int ret;
int res;
return ret;
}
-// pthread_rwlock_tryrdlock
-PTH_FUNC(int,
- pthreadZurwlockZutryrdlockZa, // pthread_rwlock_tryrdlock*
- pthread_rwlock_t* rwlock)
+PTH_FUNCS(int,
+ pthreadZurwlockZutimedwrlock, pthread_rwlock_timedwrlock_intercept,
+ (pthread_rwlock_t* rwlock), (rwlock));
+
+static __always_inline
+int pthread_rwlock_tryrdlock_intercept(pthread_rwlock_t* rwlock)
{
int ret;
int res;
return ret;
}
-// pthread_rwlock_trywrlock
-PTH_FUNC(int,
- pthreadZurwlockZutrywrlockZa, // pthread_rwlock_trywrlock*
- pthread_rwlock_t* rwlock)
+PTH_FUNCS(int,
+ pthreadZurwlockZutryrdlock, pthread_rwlock_tryrdlock_intercept,
+ (pthread_rwlock_t* rwlock), (rwlock));
+
+static __always_inline
+int pthread_rwlock_trywrlock_intercept(pthread_rwlock_t* rwlock)
{
int ret;
int res;
return ret;
}
-// pthread_rwlock_unlock
-PTH_FUNC(int,
- pthreadZurwlockZuunlockZa, // pthread_rwlock_unlock*
- pthread_rwlock_t* rwlock)
+PTH_FUNCS(int,
+ pthreadZurwlockZutrywrlock, pthread_rwlock_trywrlock_intercept,
+ (pthread_rwlock_t* rwlock), (rwlock));
+
+static __always_inline
+int pthread_rwlock_unlock_intercept(pthread_rwlock_t* rwlock)
{
int ret;
int res;
rwlock, ret == 0, 0, 0, 0);
return ret;
}
+
+PTH_FUNCS(int,
+ pthreadZurwlockZuunlock, pthread_rwlock_unlock_intercept,
+ (pthread_rwlock_t* rwlock), (rwlock));
-e "s/was held during [0-9][0-9]*/was held during .../" \
-e "s: BSS section of .*/: BSS section of :g" \
-e "s: vc \[[ ,:0-9]*\]: vc ...:g" \
--e "s/: pthread_cond_wait\* /: pthread_cond_wait /" \
--e "s/: pthread_cond_signal@\* /: pthread_cond_signal /" \
+-e "s/[@\$*]* (drd_pthread_intercepts.c:/ (drd_pthread_intercepts.c:/" \
-e "s/ (\([a-zA-Z_]*\.c\):[0-9]*)/ (\1:?)/" \
-e "s/ (\([a-zA-Z_]*\.h\):[0-9]*)/ (\1:?)/" \
-e "s/ (\([a-zA-Z_]*\.cpp\):[0-9]*)/ (\1:?)/" |
Locking rwlock exclusively ...
Acquired at:
- at 0x........: pthread_rwlock_wrlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_wrlock (drd_pthread_intercepts.c:?)
by 0x........: main (hold_lock.c:?)
Lock on rwlock 0x........ was held during ... ms (threshold: 500 ms).
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (hold_lock.c:?)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (hold_lock.c:?)
Locking rwlock shared ...
Done.
Locking rwlock exclusively ...
Locking rwlock shared ...
Acquired at:
- at 0x........: pthread_rwlock_rdlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_rdlock (drd_pthread_intercepts.c:?)
by 0x........: main (hold_lock.c:?)
Lock on rwlock 0x........ was held during ... ms (threshold: 500 ms).
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (hold_lock.c:?)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (hold_lock.c:?)
Done.
Mutex still locked at thread exit: mutex 0x........, recursion count 1, owner 2.
- at 0x........: pthread_join* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_join (drd_pthread_intercepts.c:?)
by 0x........: main (pth_cancel_locked.c:?)
mutex 0x........ was first observed at:
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
by 0x........: thread_func (pth_cond_race.c:?)
by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
cond 0x........ was first observed at:
- at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
by 0x........: main (pth_cond_race.c:?)
mutex 0x........ was first observed at:
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
Thread 3:
Inconsistent association of condition variable and mutex: condition variable 0x........, mutexes 0x........ and 0x........
- at 0x........: pthread_cond_timedwait* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_cond_timedwait (drd_pthread_intercepts.c:?)
by 0x........: thread_func (pth_inconsistent_cond_wait.c:?)
by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
cond 0x........ was first observed at:
- at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
by 0x........: main (pth_inconsistent_cond_wait.c:?)
mutex 0x........ was first observed at:
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
by 0x........: main (pth_inconsistent_cond_wait.c:?)
cond 0x........ was first observed at:
- at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
by 0x........: main (pth_inconsistent_cond_wait.c:?)
mutex 0x........ was first observed at:
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
by 0x........: main (pth_inconsistent_cond_wait.c:?)
cond 0x........ was first observed at:
- at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
by 0x........: main (pth_inconsistent_cond_wait.c:?)
mutex 0x........ was first observed at:
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
Thread 2:
Inconsistent association of condition variable and mutex: condition variable 0x........, mutexes 0x........ and 0x........
- at 0x........: pthread_cond_timedwait* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_cond_timedwait (drd_pthread_intercepts.c:?)
by 0x........: thread_func (pth_inconsistent_cond_wait.c:?)
by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
cond 0x........ was first observed at:
- at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
by 0x........: main (pth_inconsistent_cond_wait.c:?)
mutex 0x........ was first observed at:
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
by 0x........: main (pth_inconsistent_cond_wait.c:?)
cond 0x........ was first observed at:
- at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
by 0x........: main (pth_inconsistent_cond_wait.c:?)
mutex 0x........ was first observed at:
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
by 0x........: main (pth_inconsistent_cond_wait.c:?)
cond 0x........ was first observed at:
- at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
by 0x........: main (pth_inconsistent_cond_wait.c:?)
mutex 0x........ was first observed at:
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
Attempt to use a user-defined rwlock as a POSIX rwlock: rwlock 0x.........
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (rwlock_type_checking.c:?)
rwlock 0x........ was first observed at:
at 0x........: vgDrdCl_annotate_rwlock (drd.h:?)
at 0x........: vgDrdCl_annotate_rwlock (drd.h:?)
by 0x........: main (rwlock_type_checking.c:?)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (rwlock_type_checking.c:?)
Finished.
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc12_rwl_trivial.c:35)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc12_rwl_trivial.c:24)
ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Semaphore reinitialization: semaphore 0x........
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc18_semabuse.c:26)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc18_semabuse.c:23)
Invalid semaphore: semaphore 0x........
- at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc18_semabuse.c:34)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc18_semabuse.c:23)
ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:179)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:178)
(1) no error on next line
(2) no error on next line
(3) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:196)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
Reader-writer lock reinitialization: rwlock 0x.........
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:199)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
(4) no error on next line
(5) no error on next line
(8) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:212)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
---------------- sem_* ----------------
Semaphore reinitialization: semaphore 0x........
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:231)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
FIXME: can't figure out how to verify wrap of sem_destroy
Invalid semaphore: semaphore 0x........
- at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:242)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
FIXME: can't figure out how to verify wrap of sem_post
Destroying locked rwlock: rwlock 0x.........
at 0x........: main (tc20_verifywrap.c:262)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:216)
Destroying locked mutex: mutex 0x........, recursion count 1, owner 1.
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:179)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:178)
(1) no error on next line
(2) no error on next line
(3) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:196)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
Reader-writer lock reinitialization: rwlock 0x.........
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:199)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
(4) no error on next line
(5) no error on next line
(8) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:212)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
---------------- sem_* ----------------
Semaphore reinitialization: semaphore 0x........
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:231)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
FIXME: can't figure out how to verify wrap of sem_destroy
Invalid semaphore: semaphore 0x........
- at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:242)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
FIXME: can't figure out how to verify wrap of sem_post
Destroying locked rwlock: rwlock 0x.........
at 0x........: main (tc20_verifywrap.c:262)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:216)
Destroying locked mutex: mutex 0x........, recursion count 1, owner 1.
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:179)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:178)
(1) no error on next line
(2) no error on next line
(3) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:196)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
Reader-writer lock reinitialization: rwlock 0x.........
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:199)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
(4) no error on next line
(5) no error on next line
(8) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:212)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
---------------- sem_* ----------------
Semaphore reinitialization: semaphore 0x........
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:231)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
FIXME: can't figure out how to verify wrap of sem_destroy
Invalid semaphore: semaphore 0x........
- at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:242)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
FIXME: can't figure out how to verify wrap of sem_post
Destroying locked rwlock: rwlock 0x.........
at 0x........: main (tc20_verifywrap.c:262)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:216)
ERROR SUMMARY: 13 errors from 13 contexts (suppressed: 0 from 0)
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:179)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:178)
(1) no error on next line
(2) no error on next line
(3) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:196)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
Reader-writer lock reinitialization: rwlock 0x.........
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:199)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
(4) no error on next line
(5) no error on next line
(8) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:212)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
---------------- sem_* ----------------
Semaphore reinitialization: semaphore 0x........
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:231)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
FIXME: can't figure out how to verify wrap of sem_destroy
Invalid semaphore: semaphore 0x........
- at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:242)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
FIXME: can't figure out how to verify wrap of sem_post
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:179)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:178)
(1) no error on next line
(2) no error on next line
(3) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:196)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
Reader-writer lock reinitialization: rwlock 0x.........
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:199)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
(4) no error on next line
(5) no error on next line
(8) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:212)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
---------------- sem_* ----------------
[1] sem_init 0x........ value 0
Semaphore reinitialization: semaphore 0x........
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:231)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
FIXME: can't figure out how to verify wrap of sem_destroy
[1] sem_wait 0x........ value 0 -> 4294967295
Invalid semaphore: semaphore 0x........
- at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:242)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
[1] sem_post 0x........ value 4294967295 -> 0
Destroying locked rwlock: rwlock 0x.........
at 0x........: main (tc20_verifywrap.c:262)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:216)
[1] mutex_destroy error checking mutex 0x........ rc 1 owner 1
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:179)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:178)
(1) no error on next line
(2) no error on next line
(3) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:196)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
Reader-writer lock reinitialization: rwlock 0x.........
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:199)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
(4) no error on next line
(5) no error on next line
(8) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:212)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
---------------- sem_* ----------------
[1] sem_init 0x........ value 0
Semaphore reinitialization: semaphore 0x........
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:231)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
FIXME: can't figure out how to verify wrap of sem_destroy
[1] sem_wait 0x........ value 0 -> 4294967295
Invalid semaphore: semaphore 0x........
- at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:242)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
[1] sem_post 0x........ value 4294967295 -> 0
Destroying locked rwlock: rwlock 0x.........
at 0x........: main (tc20_verifywrap.c:262)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:216)
[1] mutex_destroy error checking mutex 0x........ rc 1 owner 1
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:179)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:178)
(1) no error on next line
(2) no error on next line
(3) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:196)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
Reader-writer lock reinitialization: rwlock 0x.........
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:199)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
(4) no error on next line
(5) no error on next line
(8) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:212)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
---------------- sem_* ----------------
[1] sem_init 0x........ value 0
Semaphore reinitialization: semaphore 0x........
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:231)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
FIXME: can't figure out how to verify wrap of sem_destroy
[1] sem_wait 0x........ value 0 -> 4294967295
Invalid semaphore: semaphore 0x........
- at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:242)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
[1] sem_post 0x........ value 4294967295 -> 0
Destroying locked rwlock: rwlock 0x.........
at 0x........: main (tc20_verifywrap.c:262)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:216)
[1] mutex_destroy error checking mutex 0x........ rc 1 owner 1
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:179)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:178)
(1) no error on next line
(2) no error on next line
(3) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:196)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
Reader-writer lock reinitialization: rwlock 0x.........
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:199)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
(4) no error on next line
(5) no error on next line
(8) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:212)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
---------------- sem_* ----------------
[1] sem_init 0x........ value 0
Semaphore reinitialization: semaphore 0x........
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:231)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
FIXME: can't figure out how to verify wrap of sem_destroy
[1] sem_wait 0x........ value 0 -> 4294967295
Invalid semaphore: semaphore 0x........
- at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:242)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
[1] sem_post 0x........ value 4294967295 -> 0
Destroying locked rwlock: rwlock 0x.........
at 0x........: main (tc20_verifywrap.c:262)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:216)
[1] mutex_trylock recursive mutex 0x........ rc 0 owner 0
[1] post_mutex_lock recursive mutex 0x........ rc 0 owner 0
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:179)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:178)
(1) no error on next line
(2) no error on next line
(3) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:196)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
Reader-writer lock reinitialization: rwlock 0x.........
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:199)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
(4) no error on next line
(5) no error on next line
(8) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:212)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
---------------- sem_* ----------------
[1] sem_init 0x........ value 0
Semaphore reinitialization: semaphore 0x........
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:231)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
FIXME: can't figure out how to verify wrap of sem_destroy
[1] sem_wait 0x........ value 0 -> 4294967295
Invalid semaphore: semaphore 0x........
- at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:242)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
[1] sem_post 0x........ value 4294967295 -> 0
at 0x........: __deallocate_stack (in libpthread-?.?.so)
by 0x........: __free_tcb (in libpthread-?.?.so)
by 0x........: pthread_join (in libpthread-?.?.so)
- by 0x........: pthread_join* (drd_pthread_intercepts.c:?)
+ by 0x........: pthread_join (drd_pthread_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)
at 0x........: __deallocate_stack (in libpthread-?.?.so)
by 0x........: __free_tcb (in libpthread-?.?.so)
by 0x........: pthread_join (in libpthread-?.?.so)
- by 0x........: pthread_join* (drd_pthread_intercepts.c:?)
+ by 0x........: pthread_join (drd_pthread_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)
at 0x........: __deallocate_stack (in libpthread-?.?.so)
by 0x........: __free_tcb (in libpthread-?.?.so)
by 0x........: pthread_join (in libpthread-?.?.so)
- by 0x........: pthread_join* (drd_pthread_intercepts.c:?)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
by 0x........: main (tc22_exit_w_lock.c:43)
Allocation context: stack_used (offset 4, size 8) in libpthread-?.?.so, libpthread.so.0:Data
Other segment start (thread 2)
at 0x........: __deallocate_stack (in libpthread-?.?.so)
by 0x........: __free_tcb (in libpthread-?.?.so)
by 0x........: pthread_join (in libpthread-?.?.so)
- by 0x........: pthread_join* (drd_pthread_intercepts.c:?)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
by 0x........: main (tc22_exit_w_lock.c:43)
Allocation context: stack_used (offset 0, size 8) in libpthread-?.?.so, libpthread.so.0:Data
Other segment start (thread 2)
at 0x........: __deallocate_stack (in libpthread-?.?.so)
by 0x........: __free_tcb (in libpthread-?.?.so)
by 0x........: pthread_join (in libpthread-?.?.so)
- by 0x........: pthread_join* (drd_pthread_intercepts.c:?)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
by 0x........: main (tc22_exit_w_lock.c:43)
Allocation context: stack_cache (offset 0, size 8) in libpthread-?.?.so, libpthread.so.0:Data
Other segment start (thread 2)
at 0x........: __deallocate_stack (in libpthread-?.?.so)
by 0x........: __free_tcb (in libpthread-?.?.so)
by 0x........: pthread_join (in libpthread-?.?.so)
- by 0x........: pthread_join* (drd_pthread_intercepts.c:?)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
by 0x........: main (tc22_exit_w_lock.c:43)
Allocation context: stack_cache (offset 4, size 8) in libpthread-?.?.so, libpthread.so.0:Data
Other segment start (thread 2)
at 0x........: __deallocate_stack (in libpthread-?.?.so)
by 0x........: __free_tcb (in libpthread-?.?.so)
by 0x........: pthread_join (in libpthread-?.?.so)
- by 0x........: pthread_join* (drd_pthread_intercepts.c:?)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
by 0x........: main (tc22_exit_w_lock.c:43)
Allocation context: stack_cache_actsize (offset 0, size 4) in libpthread-?.?.so, libpthread.so.0:BSS
Other segment start (thread 2)
at 0x........: __deallocate_stack (in libpthread-?.?.so)
by 0x........: __free_tcb (in libpthread-?.?.so)
by 0x........: pthread_join (in libpthread-?.?.so)
- by 0x........: pthread_join* (drd_pthread_intercepts.c:?)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
by 0x........: main (tc22_exit_w_lock.c:43)
Allocation context: stack_cache (offset 0, size 8) in libpthread-?.?.so, libpthread.so.0:Data
Other segment start (thread 2)
at 0x........: __deallocate_stack (in libpthread-?.?.so)
by 0x........: __free_tcb (in libpthread-?.?.so)
by 0x........: pthread_join (in libpthread-?.?.so)
- by 0x........: pthread_join* (drd_pthread_intercepts.c:?)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
by 0x........: main (tc22_exit_w_lock.c:43)
Allocation context: stack_cache_actsize (offset 0, size 4) in libpthread-?.?.so, libpthread.so.0:BSS
Other segment start (thread 2)
at 0x........: __deallocate_stack (in libpthread-?.?.so)
by 0x........: __free_tcb (in libpthread-?.?.so)
by 0x........: pthread_join (in libpthread-?.?.so)
- by 0x........: pthread_join* (drd_pthread_intercepts.c:?)
+ by 0x........: pthread_join (drd_pthread_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)
at 0x........: __deallocate_stack (in libpthread-?.?.so)
by 0x........: __free_tcb (in libpthread-?.?.so)
by 0x........: pthread_join (in libpthread-?.?.so)
- by 0x........: pthread_join* (drd_pthread_intercepts.c:?)
+ by 0x........: pthread_join (drd_pthread_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)
Mutex still locked at thread exit: mutex 0x........, recursion count 1, owner 3.
- at 0x........: pthread_join* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_join (drd_pthread_intercepts.c:?)
by 0x........: main (tc22_exit_w_lock.c:43)
mutex 0x........ was first observed at:
at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?)
by 0x........: rescue_me (tc23_bogus_condwait.c:20)
by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
cond 0x........ was first observed at:
- at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:56)
mutex 0x........ was first observed at:
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:75)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:57)
Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 2.
by 0x........: rescue_me (tc23_bogus_condwait.c:24)
by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
cond 0x........ was first observed at:
- at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:56)
mutex 0x........ was first observed at:
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
by 0x........: rescue_me (tc23_bogus_condwait.c:20)
by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
cond 0x........ was first observed at:
- at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:56)
Thread 1:
by 0x........: rescue_me (tc23_bogus_condwait.c:24)
by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
cond 0x........ was first observed at:
- at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:56)
mutex 0x........ was first observed at:
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:75)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:57)
Thread 3:
by 0x........: rescue_me (tc23_bogus_condwait.c:28)
by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
cond 0x........ was first observed at:
- at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:56)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:57)
Thread 1:
by 0x........: rescue_me (tc23_bogus_condwait.c:32)
by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
cond 0x........ was first observed at:
- at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:56)
mutex 0x........ was first observed at:
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
Locking rwlock via pthread_rwlock_timedrdlock().
Attempt to lock for writing recursively (not allowed).
Recursive writer locking not allowed: rwlock 0x.........
- at 0x........: pthread_rwlock_wrlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_wrlock (drd_pthread_intercepts.c:?)
by 0x........: main (trylock.c:?)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (trylock.c:?)
Locking mutex via pthread_mutex_trylock().
Locking mutex via pthread_mutex_lock().