mpiP
mpiP copied to clipboard
unable to find source line info for address
Sorry for leaving this message here because I do not know how to solve this problem.
I have tried using bfd and dwarf/elf to convert the binary to the source line number but all failed.
mpiP Configuration Summary
C compiler : mpicc C++ compiler : mpicxx Fortran compiler : mpif90
Timer : MPI_Wtime Stack Unwinding : libunwind Address to Source Lookup : bfd
MPI-I/O support : yes MPI-RMA support : yes MPI-NBC support : yes
mpiP Configuration Summary
C compiler : mpicc C++ compiler : mpicxx Fortran compiler : mpif90
Timer : MPI_Wtime Stack Unwinding : libunwind Address to Source Lookup : libelf/libdwarf
MPI-I/O support : yes MPI-RMA support : yes MPI-NBC support : yes
The source line of the output always look like this:
28 @--- Callsites: 4 --------------------------------------------------------- 29 --------------------------------------------------------------------------- 30 ID Lev File/Address Line Parent_Funct MPI_Call 31 1 0 0x7fe7d3ae7b2a [unknown] Recv 32 2 0 0x7f260692259a [unknown] Send 33 3 0 0x7f1637a7859a [unknown] Send 34 4 0 0x7f044e9dc59a [unknown] Send
Can someone point me to the right direction? Much appreciated!
I compiled the code with -g -L/path_to_libmpiP.so -lmpiP
请问你解决这个问题了吗
--disable-libunwind
Stack Unwinding: glibc-backtrace
Setting a higher k seems to help
I experienced a similar issue, and thanks to @schulzm, I traced this back to address randomization, which seems to be enabled by default in many distributions. This work around worked for me.
https://askubuntu.com/questions/318315/how-can-i-temporarily-disable-aslr-address-space-layout-randomization
The background is that the address-to-source translation in mpiP seems to only happen on one of the MPI processes (e.g., rank 0), assuming that the addresses are the same on different processes. Address randomization breaks this assumption.