possible problems with kernel threading code?

From: Chris Friesen
Date: Fri Feb 20 2004 - 13:10:56 EST



I'm running the following code under 2.4.18-2.4.20, with the standard thread library, and sometimes I get an error of "No such process". How can this possibly happen? The pthread_setschedparam() call is running in the thread that it is trying to operate on, but somehow it can't find itself?

I also have managed to trigger reboots with this code, and I'm not sure how.

Anyone have any ideas? Is this a kernel problem? I can trigger it on ppc hardware under kernel versions 2.4.18-2.4.20 and a modified 2.4.22. (I haven't tried 2.4.21) My x86 with a 2.4.18-19.8.0 redhat kernel doesn't show the problem.

Thanks,

Chris



#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <pthread.h>
#include <stdlib.h>
#include <string.h>

pthread_t t1;

void *func(void *p)
{
pid_t pid;
int status;

struct sched_param schedParam;
int policy = SCHED_RR;
int priority = 40;

schedParam.sched_priority = priority;
int schedRc = pthread_setschedparam(t1, policy, &schedParam);
if (schedRc){
fprintf(stderr, "pthread_setschedparam error:%s, priority:%d,
policy:%d\n",strerror(schedRc), priority, policy);
}
pthread_exit(EXIT_SUCCESS);
return 0;
}


int main(int argc, char **argv)
{
pthread_create(&t1, 0, func,(void*)1);
pthread_join(t1,0);
return 0;
}


--
Chris Friesen | MailStop: 043/33/F10
Nortel Networks | work: (613) 765-0557
3500 Carling Avenue | fax: (613) 765-2986
Nepean, ON K2H 8E9 Canada | email: cfriesen@xxxxxxxxxxxxxxxxxx
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/