[Boost-bugs] [Boost C++ Libraries] #13043: Serialized MPI doesn't properly handle cancellation of a request

Subject: [Boost-bugs] [Boost C++ Libraries] #13043: Serialized MPI doesn't properly handle cancellation of a request
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2017-05-22 17:12:00


#13043: Serialized MPI doesn't properly handle cancellation of a request
------------------------------------------------+---------------------
 Reporter: Mike Willaims <michael.williams@…> | Owner: troyer
     Type: Bugs | Status: new
Milestone: To Be Determined | Component: mpi
  Version: Boost 1.62.0 | Severity: Problem
 Keywords: |
------------------------------------------------+---------------------
 Hi - Think I've found a bug - If you try version A with mpiexec -n 2 then
 you get a clean exit - if you try version B, it hangs indefinitely.
 request::handle_serialized_irecv isn't handling cancellation. This is
 bothersome when you have to MPI_comm_disconnect from things. I can
 workaround by wrapping the transmission but that's not optimal. Please
 advise if you need more info, I'm using MSMPI and MSVC. Had previously
 posted this on Stack Overflow who thought it was a bug. Thanks for the
 library and look forward to hearing from you all soon.

 {{{
 #include "boost/mpi.hpp"
 #include "mpi.h"
 #include <list>
 #include "boost/serialization/list.hpp"

 int main()
 {
     MPI_Init(NULL, NULL);
     MPI_Comm regional;
     MPI_Comm_dup(MPI_COMM_WORLD, &regional);
     boost::mpi::communicator comm = boost::mpi::communicator(regional,
 boost::mpi::comm_attach);
     if (comm.rank() == 1)
     {

         //VERSION A:
         std::list<int> q;
         boost::mpi::request z = comm.irecv<std::list<int>>(1, 0, q);
         z.cancel();
         z.wait();

         //VERSION B:
 // int q;
 // boost::mpi::request z = comm.irecv<int>(1, 0, q);
 // z.cancel();
 // z.wait();

     }
     MPI_Comm_disconnect(&regional);
     MPI_Finalize();
     return 0;
 }
 }}}

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/13043>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-05-22 17:15:40 UTC