Hello Community: I am running into a strange problem. I get a SIGSEGV when I try to execute MPI_Test:
==21076== Process terminating with default action of signal 11 (SIGSEGV) ==21076== Bad permissions for mapped region at address 0x43AEE1 ==21076== at 0x509B957: ompi_request_default_test (req_test.c:68) ==21076== by 0x50EDEBB: PMPI_Test (ptest.c:59) ==21076== by 0x44210D: InterProcessorTransmit::StartTransmission() (InterProcessorTransmit.cpp:111) Here is the relevant piece of code: for ( this->dbIterator = localdb.begin( ) ; this->dbIterator != localdb.end( ); this->dbIterator++) { this->TransmissionDetails = (this->dbIterator)->second; SendComplete = 0; UniqueIDtoSendto = std::get<0>(this->TransmissionDetails); RecepientNode = (this->dbIterator)->first; Isend_request = MPI::COMM_WORLD.Issend(this->transmitbuffer, this->transmissionsize, MPI_BYTE, (this->dbIterator)->first, std::get<0>(this->TransmissionDetails)); /*This is line 111 */MPI_Test(&(this->Isend_request), &(this->SendComplete), &(this->ISend_status)); while(!this->SendComplete) { /* Test whether the transmission was okay*/ MPI_Test(&(this->Isend_request), &(this->SendComplete), &(this->ISend_status)); /**** see if we need to pause or stop ****/ { /* The mutex is released after exiting this block */ std::unique_lock<std::mutex> pr_dblock(this->mutexforPauseResume); while(this->pause==1) { /* pause till resume signal is received */ this->WaitingforResume.wait(pr_dblock); } if(this->stop == 1) { /* stop this transmission */ return(0); } /* mutex is released here */ } /**** End of pause/ stop check ****/ Am I missing something here? The piece of code shown here runs in a thread. Thanks a lot for any pointers. Best Devendra