test_wq_exit_race_panic_10970548.c   [plain text]


#include <stdio.h>
#include <stdlib.h>
#include <dispatch/dispatch.h>

int main(int argc, char *argv[])
{
	char **envp = { NULL };
	char *mycount = "1";
	char *nargvp[] = { argv[0], mycount , NULL};
	char *progpath = argv[0];
	char buf[50];
	char oldcount[30];
	int envcount=0;
	if (argc >= 2){
		envcount = atoi(argv[1]);
		printf("count = %d \n", envcount);
		sprintf(buf, "%d", envcount+1);
		nargvp[1] = buf;
	}
	char **nargvpp = nargvp;
	if (envcount < 8 )
		fork();
	if (envcount > 320)
		exit(0);
	dispatch_apply(32,
		       dispatch_get_global_queue(0,0),
		       ^(size_t i __attribute__((unused))) {
		execve(progpath,nargvpp,envp);
	});

	return 0;
}