Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

strange valgrind info with ifort

clabra
New Contributor I
1,201 Views
Hi,

I'm using valgrind to analyze a code compiled with ifort, and I have some extrain information on different points of the code.
Some examples:

==2785== by 0x403CDB: main (in /home/xxxx/bin/e600INTEL-dbg_2009.11.unix.exe)
==2785== Address 0x5a64178 is 112 bytes inside a block of size 116 alloc'd
==2785== at 0x4C265AE: malloc (vg_replace_malloc.c:207)
==2785== by 0x2110962: for__get_vm (in /home/xxxx/bin/e600INTEL-dbg_2009.11.unix.exe)
==2785== by 0x2135456: for__open_proc (in /home/xxxx/bin/e600INTEL-dbg_2009.11.unix.exe)
==2785== by 0x20F627E: for_open (in /home/xxxx/bin/e600INTEL-dbg_2009.11.unix.exe)
==2785== by 0x6FCE94: c_input_mp_openfi_ (c_input.F90:798)
==2785== by 0x1DEACB2: startp_ (startp.f90:21)
==2785== by 0x13079E0: MAIN__ (mainpg.F90:82)
==2785== by 0x403CDB: main (in /home/xxxx/bin/e600INTEL-dbg_2009.11.unix.exe)

or

==2785== Invalid read of size 8
==2785== at 0x20E474F: for__io_return (in /home/xxxx/bin/e600INTEL-dbg_2009.11.unix.exe)
==2785== by 0x2106DDC: for_read_seq_fmt (in /home/xxxx/bin/e600INTEL-dbg_2009.11.unix.exe)
==2785== by 0x720171: c_input_mp_randwr_ (c_input.F90:1302)
==2785== by 0x720011: c_input_mp_genfil_ (c_input.F90:1283)
==2785== by 0x6FD2BA: c_input_mp_openfi_ (c_input.F90:800)
==2785== by 0x1DEACB2: startp_ (startp.f90:21)
==2785== by 0x13079E0: MAIN__ (mainpg.F90:82)
==2785== by 0x403CDB: main (in /home/xxxx/bin/e600INTEL-dbg_2009.11.unix.exe)

or

==2785== Conditional jump or move depends on uninitialised value(s)
==2785== at 0x218CE96: __intel_sse2_strlen (in /home/xxxx/bin/e600INTEL-dbg_2009.11.unix.exe)
==2785== by 0x20E476B: for__io_return (in /home/xxxx/bin/e600INTEL-dbg_2009.11.unix.exe)
==2785== by 0x2106DDC: for_read_seq_fmt (in /home/xxxx/bin/e600INTEL-dbg_2009.11.unix.exe)
==2785== by 0x720171: c_input_mp_randwr_ (c_input.F90:1302)
==2785== by 0x720011: c_input_mp_genfil_ (c_input.F90:1283)
==2785== by 0x6FD2BA: c_input_mp_openfi_ (c_input.F90:800)
==2785== by 0x1DEACB2: startp_ (startp.f90:21)
==2785== by 0x13079E0: MAIN__ (mainpg.F90:82)
==2785== by 0x403CDB: main (in /home/xxxx/bin/e600INTEL-dbg_2009.11.unix.exe)

I have many comments in the valgrind analysis, and I'm not sure about if is right or not....

I'm using intel ifort 11.1.056, and ubuntu 9.04 amd64:
Linux xxxx 2.6.27-15-generic #1 SMP Tue Oct 20 06:50:36 UTC 2009 x86_64 GNU/Linux

compilation: ifort -g -warn all -check all -traceback ....

Someone can give me some information about this kind of "remarks/errors" with valgrind?

Thanks.



0 Kudos
3 Replies
Alexis_R_
New Contributor I
1,201 Views
I have also found that Valgrind becomes almost useless (because of a large number of warnings/errors) when analysing ifort-compiled executables. Maybe I am missing an option in valgrind? As an example, here is the simplest "Hello world" program:
[cpp]program helloworld
print *, 'Hello world'
end program[/cpp]
I compile it like this:
[cpp]ifort -g helloworld.f90[/cpp]
Then run it "under" valgrind:
[cpp]valgrind a.out[/cpp]
And I get a very long list of errors from (i guess) low-level fortran routines:
[cpp]==22344== Memcheck, a memory error detector
==22344== Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al.
==22344== Using Valgrind-3.5.0 and LibVEX; rerun with -h for copyright info
==22344== Command: a.out
==22344==
==22344== Conditional jump or move depends on uninitialised value(s)
==22344== at 0x41E36C: for__open_proc (in /scratch/alr99/helloworld/a.out)
==22344== by 0x40CF94: for__open_default (in /scratch/alr99/helloworld/a.out)
==22344== by 0x412189: for_write_seq_lis (in /scratch/alr99/helloworld/a.out)
==22344== by 0x402B4C: MAIN__ (helloworld.f90:2)
==22344== by 0x402ADB: main (in /scratch/alr99/helloworld/a.out)
==22344==
==22344== Conditional jump or move depends on uninitialised value(s)
==22344== at 0x40F45C: for__get_vm (in /scratch/alr99/helloworld/a.out)
==22344== by 0x41E396: for__open_proc (in /scratch/alr99/helloworld/a.out)
==22344== by 0x40CF94: for__open_default (in /scratch/alr99/helloworld/a.out)
==22344== by 0x412189: for_write_seq_lis (in /scratch/alr99/helloworld/a.out)
==22344== by 0x402B4C: MAIN__ (helloworld.f90:2)
==22344== by 0x402ADB: main (in /scratch/alr99/helloworld/a.out)
(...)
[/cpp]

Does anyone know how to use valgrind with ifort-compiled executables? Are there alternative tools which perform a similar function?
0 Kudos
Alexis_R_
New Contributor I
1,201 Views
Just thought I would update this, since I have found out about error suppression in valgrind (see http://valgrind.org/docs/manual/manual-core.html#manual-core.suppress).

Suppressions such as the one below (which targets for__reopen_file) will clean up the output of valgrind:
[plain]{
   noname
   Memcheck:Cond
   fun:for__reopen_file
   ...
}
{
   noname
   Memcheck:Value8
   fun:for__reopen_file
   ...
}[/plain]

I wonder whether there is a repository of such suppressions in use for ifort? This is definitely something that is tedious to assemble, could be shared & would save a lot of time.
0 Kudos
clabra
New Contributor I
1,201 Views
Thanks Rohou!
I hope will be possible use valgrind without false warnings/errors. I thing the problems are basically with read/write functions.
0 Kudos
Reply