RE: can linux RT thread corrupt global variable?

"Rokicki, Andrew" <[email protected]>
Newsgroups gmane.linux.redhat.devel
Message-ID <0329184E605BD41197DF0008C7335BF5F908D6@tiasusmrddc00.mrd.us.tiautomotive.com>
I am not an expert on this.
As a test try using a mutex to protect cpl from thread switching during
modification.

//somewhere on top of your program.
static pthread_mutex_t mtxThread = PTHREAD_MUTEX_INITIALIZER;
....
...
//in you threads.
pthread_mutex_lock(&mtxThread); 
cpl=1234 //however you are modifying it.
pthread_mutex_unlock(&mtxThread);
......


On Monday, May 05, 2003 8:40 PM, Ming Lei [SMTP:[email protected]] wrote:
> Platform:
> Intel Pentium II; RedHat 7.2 with kernel version 2.4.7-10, libc 2.2.4-13
and
> gcc 2.96.
> 
> Problem description:
> 
> a program has a thread of priority 12, a thread of priority 10, a thread
of
> priority 6, and the main process at priority 0. All the threads except
main
> process is created with pthread_create, and defined SCHED_FIFO as real
time
> scheduler policy.
> 
> There is a global variable I define as 'int cpl'. All the threads and main
> process may alter cpl at any time. cpl may have one of these values {0,
> 0xf000006e, 0xf0000068, 0xe0000000, 0xe0000060}.
> 
> <Problem=> at some point of execution which cpl should be a value say
> e0000060, but the actual value retained at cpl is another say e0000000;
that
> is, the value is changed without the program actually done anything on it.
> The retained value I observed is kind of historic value(one of these value
> in the above set), not the arbituary value. The problem had occured just
> after context switch, also occured during a thread execution.
> 
> <Confirm> I used Intel debug register to track any writing to the cpl
memory
> address globally, which is the way GDB use for x86 hardware watchpoint
> implementation. I could see all the writing from my program to change cpl,
> but failed to see the source from which the problem occured. So I dont
know
> what cause the problem.
> 
> Can anyone listening give me a direction or hint on this annoying
situation?
> Any help is thanked here.
> 
> PS. please cc to this email address.
> -Ming
> 
> 
> Related questions:
> 
> Is linux kernel 2.4.10 considered strictly preemptive such as VxWorks or
> other RTOS? I guess 2.4.10 may simulate preemptive with running scheduler
on
> every syscall or interrupt returns. Am I right?
> 
> Is printf() real-time priority thread safe?
> 
> 
> 
> _______________________________________________
> Redhat-devel-list mailing list
> [email protected]
> https://listman.redhat.com/mailman/listinfo/redhat-devel-list
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.