diff --git a/orte/mca/oob/tcp/oob_tcp.c b/orte/mca/oob/tcp/oob_tcp.c index e8cf9ab153..1a44a26ba2 100644 --- a/orte/mca/oob/tcp/oob_tcp.c +++ b/orte/mca/oob/tcp/oob_tcp.c @@ -463,7 +463,12 @@ static void mca_oob_tcp_recv_handler(int sd, short flags, void* user) } OBJ_RELEASE(event); + /* Some mem checkers don't realize that hdr will guarantee to be + fully filled in during the read(), below :-( */ + OMPI_DEBUG_ZERO(hdr); + /* recv the process identifier */ + hdr.msg_src.cellid = 78; while((rc = recv(sd, (char *)&hdr, sizeof(hdr), 0)) != sizeof(hdr)) { if(rc >= 0) { if(mca_oob_tcp_component.tcp_debug > 1) { @@ -480,6 +485,10 @@ static void mca_oob_tcp_recv_handler(int sd, short flags, void* user) return; } } + assert(rc == sizeof(hdr)); + if (rc != sizeof(hdr)) { + abort(); + } MCA_OOB_TCP_HDR_NTOH(&hdr); /* dispatch based on message type */