#include <stdio.h>
#include <signal.h>
#include <pthread.h>

pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;

void *
sub(void *data)
{ pthread_mutex_lock(&lock);
  pthread_mutex_lock(&lock);
}

void
handler(int sig)
{ fprintf(stderr, "Called handler\n");
}


main(int argc, char **argv)
{ pthread_t tid;

  pthread_mutex_lock(&lock);
  pthread_create(&tid, NULL, sub, NULL);
  sleep(1),				/* wait for sub to lock */
  signal(SIGUSR1, handler);
  pthread_kill(tid, SIGUSR1);
  sleep(1);				/* give sub some time to react */
  pthread_mutex_unlock(&lock);
}
