1213155Sdavidxu/* $FreeBSD$ */ 2213155Sdavidxu/* Test stack unwinding for pthread_cond_wait function */ 3213155Sdavidxu 4213155Sdavidxu#include <pthread.h> 5213155Sdavidxu#include <stdio.h> 6213155Sdavidxu#include <semaphore.h> 7213155Sdavidxu#include <unistd.h> 8213155Sdavidxu 9213155Sdavidxu#include "Test.cpp" 10213155Sdavidxu 11213155Sdavidxupthread_mutex_t mtx; 12213155Sdavidxupthread_cond_t cv; 13213155Sdavidxu 14213155Sdavidxuvoid * 15213155Sdavidxuthr(void *arg) 16213155Sdavidxu{ 17213155Sdavidxu Test t; 18213155Sdavidxu 19213155Sdavidxu pthread_mutex_lock(&mtx); 20213155Sdavidxu pthread_cond_wait(&cv, &mtx); 21213155Sdavidxu pthread_mutex_unlock(&mtx); 22213155Sdavidxu printf("Bug, thread shouldn't be here.\n"); 23213155Sdavidxu return (0); 24213155Sdavidxu} 25213155Sdavidxu 26213155Sdavidxuint 27213155Sdavidxumain() 28213155Sdavidxu{ 29213155Sdavidxu pthread_t td; 30213155Sdavidxu 31213155Sdavidxu pthread_mutex_init(&mtx, NULL); 32213155Sdavidxu pthread_cond_init(&cv, NULL); 33213155Sdavidxu pthread_create(&td, NULL, thr, NULL); 34213155Sdavidxu sleep(1); 35213155Sdavidxu pthread_cancel(td); 36213155Sdavidxu pthread_join(td, NULL); 37213155Sdavidxu check_destruct(); 38213155Sdavidxu return (0); 39213155Sdavidxu} 40