68ba190f0a
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
50 lines
1.2 KiB
C
50 lines
1.2 KiB
C
// This testcase, when run with large number of threads
|
|
// under stace -f, may never finish because strace does not
|
|
// ensure any fairness in thread scheduling:
|
|
// it restarts threads as they stop. If daughter threads crowd out
|
|
// the "mother" and _they_ get continually restarted by strace,
|
|
// the end of spawning loop will never be reached.
|
|
//
|
|
// Also, it is a testcase which triggers the
|
|
// "strace: Exit of unknown pid 32457 seen"
|
|
// message when on testcase exit, strace sees deaths of newly-attached
|
|
// threads _before_ their first syscall stop.
|
|
//
|
|
#include <stdio.h>
|
|
#include <pthread.h>
|
|
#include <unistd.h>
|
|
#include <sys/types.h>
|
|
#include <signal.h>
|
|
#include <stdlib.h>
|
|
|
|
static int thd_no;
|
|
|
|
static void *sub_thd(void *c)
|
|
{
|
|
dprintf(1, "sub-thread %d created\n", ++thd_no);
|
|
for (;;)
|
|
getuid();
|
|
return NULL;
|
|
}
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
int i;
|
|
pthread_t *thd;
|
|
int num_threads = 1;
|
|
|
|
if (argv[1])
|
|
num_threads = atoi(argv[1]);
|
|
|
|
thd = malloc(num_threads * sizeof(thd[0]));
|
|
dprintf(1, "test start, num_threads:%d...\n", num_threads);
|
|
|
|
for (i = 0; i < num_threads; i++) {
|
|
pthread_create(&thd[i], NULL, sub_thd, NULL);
|
|
dprintf(1, "after pthread_create\n");
|
|
}
|
|
|
|
/* Exit. This kills all threads */
|
|
return 0;
|
|
}
|