[R-pkg-devel] Package valgrind problem I can't solve: Direction?
i.ucar86 at gmail.com
Thu Oct 26 11:38:09 CEST 2017
2017-10-26 5:16 GMT+02:00 Peter Dunn <PDunn2 at usc.edu.au>:
> Hi all
> I am trying to compile (on my Mac) an R package (tweedie) which includes Fortran 77 code. I’m not much of a programmer, but can still manage to write and update F77 code. I’m new to valgrind.
> In checking my package (which passes the build-and-check with no errors), I use valgrind like this:
> R -d "valgrind --tool=memcheck --leak-check=full --track-origins=yes" --vanilla < tweedie-Ex.R
> …on my package example, which gives me a series of messages like this:
> ==53843== Conditional jump or move depends on uninitialised value(s)
> ==53843== at 0x1118F61FB: smallp_ (in /Users/pdunn2/Library/R/3.4/library/tweedie/libs/tweedie.so)
> ==53843== by 0xBFA4FB88FFFFFFEB: ???
> ==53843== by 0x3FF91CB2DA3A50E7: ???
> ==53843== by 0x104888757: ???
> ==53843== by 0xFFFFFFEC03E375AF: ???
> ==53843== by 0x3FE18C2EE1BE47CB: ???
> ==53843== by 0x104885DEF: ???
> ==53843== by 0x104885DF7: ???
> ==53843== by 0x3FE518F314C67BE7: ???
> ==53843== by 0x11364CEAF: ???
> ==53843== by 0x104885DBF: ???
> ==53843== by 0x100000007: ??? (in /Library/Frameworks/R.framework/Resources/bin/exec/R)
> ==53843== Uninitialised value was created by a stack allocation
> ==53843== at 0x1118F59A6: smallp_ (in /Users/pdunn2/Library/R/3.4/library/tweedie/libs/tweedie.so)
CRAN shows a complete backtrace:
According to it, the offending conditional jump seems to be this one:
if ( ( its .LT. 3 )
& ( ( its .LT. maxit ) .AND.
& ( abs(relerr) .GT. aimrerr )
& ) then
> I can see the piece of R code in the example from which this comes. The subroutine smallp is mentioned in the second line of the output.
> I simply cannot find the issue. (Spent days looking so far.) There are only a few conditional jumps, and everything not passed to the subroutine smallp is initialised. I have checked the calls to smallp as well. I have compiled the fortran code separately (after wrapping into a complete program), with all kinds of flags:
> gfortran -O2 -fimplicit-none -Wall -Wline-truncation -Wcharacter-truncation -Wsurprising -Waliasing -Wunused-parameter -fwhole-file -fcheck=all -std=f2008 -pedantic -fbacktrace),
Did you try "-O0 -g" instead of "-O2"?
More information about the R-package-devel