1e04b953eSDavid Xu /* Test stack unwinding for libc's sem */ 2e04b953eSDavid Xu 3e04b953eSDavid Xu #include <pthread.h> 4e04b953eSDavid Xu #include <stdio.h> 5e04b953eSDavid Xu #include <semaphore.h> 6e04b953eSDavid Xu #include <unistd.h> 7e04b953eSDavid Xu 8e04b953eSDavid Xu #include "Test.cpp" 9e04b953eSDavid Xu 10*ef135466SEd Maste static sem_t sem; 11e04b953eSDavid Xu 12*ef135466SEd Maste static void * thr(void * arg __unused)13*ef135466SEd Mastethr(void *arg __unused) 14e04b953eSDavid Xu { 15e04b953eSDavid Xu Test t; 16e04b953eSDavid Xu 17e04b953eSDavid Xu sem_wait(&sem); 18e04b953eSDavid Xu printf("Bug, thread shouldn't be here.\n"); 19e04b953eSDavid Xu return (0); 20e04b953eSDavid Xu } 21e04b953eSDavid Xu 22e04b953eSDavid Xu int main()23e04b953eSDavid Xumain() 24e04b953eSDavid Xu { 25e04b953eSDavid Xu pthread_t td; 26e04b953eSDavid Xu 27e04b953eSDavid Xu sem_init(&sem, 0, 0); 28e04b953eSDavid Xu pthread_create(&td, NULL, thr, NULL); 29e04b953eSDavid Xu sleep(1); 30e04b953eSDavid Xu pthread_cancel(td); 31e04b953eSDavid Xu pthread_join(td, NULL); 32e04b953eSDavid Xu check_destruct(); 33e04b953eSDavid Xu return (0); 34e04b953eSDavid Xu } 35