<html><body><div style="font-family: times new roman, new york, times, serif; font-size: 12pt; color: #000000"><div>Hi,</div><div><br></div><div>I wanted to debug a memory corruption in an MPI program using the electric-fence tool, and noticed that electric-fence detects an error already in MPI_Init (thus the program stops and I cannot debug the actual memory corruption that happens later). The following program is a minimal one to exemplify the error:</div><div><br></div><div><p style="margin: 0px;" data-mce-style="margin: 0px;"><span style="font-family: 'courier new', courier, monaco, monospace, sans-serif;">#include <mpi.h></span></p><p style="margin: 0px;" data-mce-style="margin: 0px;"><span style="font-family: 'courier new', courier, monaco, monospace, sans-serif;">int main(int argc, char** argv) {</span><br><span style="font-family: 'courier new', courier, monaco, monospace, sans-serif;">  MPI_Init(&argc,&argv);</span><br><span style="font-family: 'courier new', courier, monaco, monospace, sans-serif;">  MPI_Finalize();</span><br><span style="font-family: 'courier new', courier, monaco, monospace, sans-serif;">  return 0;</span><br><span style="font-family: 'courier new', courier, monaco, monospace, sans-serif;">}</span></p><p style="margin: 0px;" data-mce-style="margin: 0px;"><br></p><p style="margin: 0px;" data-mce-style="margin: 0px;">The error output by electric-fence:</p><p style="margin: 0px;" data-mce-style="margin: 0px;"><br></p><p style="margin: 0px;" data-mce-style="margin: 0px;"><span style="font-family: 'courier new', courier, monaco, monospace, sans-serif;">ElectricFence Aborting: Allocating 0 bytes, probably a bug.</span></p><p style="margin: 0px;" data-mce-style="margin: 0px;"><br></p><p style="margin: 0px;" data-mce-style="margin: 0px;">And the backtrace output by gdb:</p><p style="margin: 0px;" data-mce-style="margin: 0px;"><br></p><p style="margin: 0px;" data-mce-style="margin: 0px;"><span style="font-family: 'courier new', courier, monaco, monospace, sans-serif;">Program received signal SIGILL, Illegal instruction.</span><br><span style="font-family: 'courier new', courier, monaco, monospace, sans-serif;">0x0012d422 in __kernel_vsyscall ()</span><br><span style="font-family: 'courier new', courier, monaco, monospace, sans-serif;">(gdb) backtrace</span><br><span style="font-family: 'courier new', courier, monaco, monospace, sans-serif;">#0 0x0012d422 in __kernel_vsyscall ()</span><br><span style="font-family: 'courier new', courier, monaco, monospace, sans-serif;">#1 0x0040c976 in kill () at ../sysdeps/unix/syscall-template.S:82</span><br><span style="font-family: 'courier new', courier, monaco, monospace, sans-serif;">#2 0x0012fc54 in EF_Abort () from /usr/lib/libefence.so.0</span><br><span style="font-family: 'courier new', courier, monaco, monospace, sans-serif;">#3 0x0012f71b in memalign () from /usr/lib/libefence.so.0</span><br><span style="font-family: 'courier new', courier, monaco, monospace, sans-serif;">#4 0x0012f88b in malloc () from /usr/lib/libefence.so.0</span><br><span style="font-family: 'courier new', courier, monaco, monospace, sans-serif;">#5 0x001e3b6b in MPID_nem_init () from /home/mdorier/deploy/lib/libmpich.so.10</span><br><span style="font-family: 'courier new', courier, monaco, monospace, sans-serif;">#6 0x001d2f4c in MPIDI_CH3_Init () from /home/mdorier/deploy/lib/libmpich.so.10</span><br><span style="font-family: 'courier new', courier, monaco, monospace, sans-serif;">#7 0x001c8c57 in MPID_Init () from /home/mdorier/deploy/lib/libmpich.so.10</span><br><span style="font-family: 'courier new', courier, monaco, monospace, sans-serif;">#8 0x0029d435 in MPIR_Init_thread () from /home/mdorier/deploy/lib/libmpich.so.10</span><br><span style="font-family: 'courier new', courier, monaco, monospace, sans-serif;">#9 0x0029cd33 in PMPI_Init () from /home/mdorier/deploy/lib/libmpich.so.10</span><br><span style="font-family: 'courier new', courier, monaco, monospace, sans-serif;">#10 0x0804859f in main (argc=1, argv=0xbffff994) at m.c:4</span></p><p style="margin: 0px;" data-mce-style="margin: 0px;"><br></p><p style="margin: 0px;" data-mce-style="margin: 0px;">The version of mpich is 3.0.4, gcc 4.6.4, on Ubuntu 10.4, linux kernel 2.6.32.</p><p style="margin: 0px;" data-mce-style="margin: 0px;"><br></p><p style="margin: 0px;" data-mce-style="margin: 0px;">I suspect a call to malloc with 0 as parameter, whose output is properly checked by Mpich, but makes electric-fence think there is an error.</p></div><div><br></div><div><span name="x"></span><span size="2" data-mce-style="font-size: small;" style="font-size: small;"><span size="3" data-mce-style="font-size: medium;" style="font-size: medium;">Matthieu Dorier<br> </span>PhD student at ENS Rennes<br><a href="http://people.irisa.fr/Matthieu.Dorier" data-mce-href="http://people.irisa.fr/Matthieu.Dorier">http://people.irisa.fr/Matthieu.Dorier</a></span><span name="x"></span><br></div></div></body></html>