Re: [mpich-discuss] valgrind warning with ROMIO hint file
Hi, we have the same issue here... Reported this 3 days ago: https://github.com/pmodels/mpich/issues/2894 Eric On 19/12/17 07:30 PM, Audet, Martin wrote:
MPI_Developers, It seems that when a program using mpich uses MPI-IO, it try first to open a hint file specified in the ROMIO_HINTS environment variable (or "/etc/romio-hints" if it is undefined) and then try to read it. The problem is that it will try to read from it with the file descriptor returned by open() even if the open() failed and returned a -1 (ex: file not found). When this happens read() also fails and also return -1. The problem is when the program is run under valgrind (with the valgrind friendly ch3:sock device), valgrind notice that an invalid file descriptor was passed to read() and complain with a warning: ==113473== Memcheck, a memory error detector ==113473== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al. ==113473== Using Valgrind-3.12.0 and LibVEX; rerun with -h for copyright info ==113473== Command: ... ==113473== Parent PID: 48694 ==113473== ==113473== Warning: invalid file descriptor -1 in syscall read() ==113473== ==113473== HEAP SUMMARY: ==113473== in use at exit: 0 bytes in 0 blocks ==113473== total heap usage: 4,420 allocs, 4,209 frees, 72,241,561 bytes allocated ==113473== ==113473== All heap blocks were freed -- no leaks are possible ==113473== ==113473== For counts of detected and suppressed errors, rerun with: -v ==113473== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) The problem is that no matter how clean is the program, this warning will appear in its valgrind report. A developer may think that his own code is problematic and start investigating... The solution is of course not trying to read the file if the file descriptor is invalid. This could be done simply as follow (mpich 3.2.1): --- mpich-3.2.1/src/mpi/romio/adio/common/system_hints.c +++ mpich-3.2.1-patch/src/mpi/romio/adio/common/system_hints.c @@ -98,7 +98,7 @@ buffer = (char *)ADIOI_Calloc(HINTFILE_MAX_SIZE, sizeof (char)); if (rank == 0) { - ret = read(fd, buffer, HINTFILE_MAX_SIZE); + ret = (fd >= 0) ? read(fd, buffer, HINTFILE_MAX_SIZE) : -1; /* any error: bad/nonexistent fd, no perms, anything: set up a null * buffer and the subsequent string parsing will quit immediately */ if (ret == -1) Could you consider applying this patch (or an equivalent one) to mpich ? It would be much appreciated. Thanks in advance, Martin Audet
discuss mailing list [email protected] To manage subscription options or unsubscribe: https://lists.mpich.org/mailman/listinfo/discuss
participants (1)
-
Eric Chamberland