a bug in multi-processors
frank1997 at gmail.com
Thu Mar 2 01:38:52 UTC 2006
I think there maybe something wrong in the function
_MPCI_receive_server (in mpci.c) I have tested such a programme: I
make two nodes. Node1 creates one task and Node2 creates two tasks.
Task1 creates a semaphore and task 2,3 scramble a semaphore.
Suppose that task2's obtaining request arrives first, Node1 will
fulfill its request and give it a semaphore, and then Node1 handles
task3's obtaining request. However since a semaphore had been given to
task2, task3's request can not be fulfilled so that deadlock happens.
Because _MPCI_receive_server performs remote request, in fact
_MPCI_receive_server of Node1 has a deadlock.
So when task2's release request arrives, nobody come to response which
means task2's release request can't be fulfilled, so task3's abtaining
request can't be fulfilled forever.
Am I right? I hope you would give me a prompt reply. Thanks a lot.
More information about the users