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, ®ional);
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(®ional);
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