I've seen many similar things in a report from valgrind. But they went
away when compiled without optimization: it seems optimization often does
a fetch one element off the end of an array when attempting to keep the
pipelines full.
I'd start by re-running the valgrind tests without optimization.
On Sat, 18 Jun 2005, Peter Dalgaard wrote:
[EMAIL PROTECTED] writes:
Full_Name: Benjamin Tyner
Version: 2.1.0, 4/18/2005
OS: i686-redhat-linux-gnu
Submission from: (NULL) (4.64.8.220)
# Just run my.test() below in a newly opened R session. Once too many models
have been fit (~20 on my system), the computed standard error jumps to a
different value. This is (superficially) due to a different residual sum of
squares, not a different one.delta. No other aspect of the fit is affected, just
the computed value of s (I've run extensive testing with all.equal() to make
sure). Issuing a garbage collection before doing a loess fit appears to "solve"
the problem, which makes me think this is not a problem in loessc.c or loessf.f.
My point is that a few loess fits in one session should not cause the estimated
standard error computation go awry with no warning.
Right. Valgrind has this to say:
my.test()
==22986== Use of uninitialised value of size 8
==22986== at 0x1C97051B: lowesb_ (loessf.f:1542)
==22986== by 0x1C95B399: loess_raw (loessc.c:98)
==22986== by 0x809C9AE: do_dotCode (dotcode.c:1709)
==22986== by 0x80B368F: Rf_eval (eval.c:405)
[1] "s = 0.857141235910414"
[1] "s = 0.857141235910414"
and that certainly fits the pattern.
Unfortunately this seems to be in the call to ehg31() in this passage
end if
setlf=(iv(27).ne.iv(25))
call ehg131(xx,yy,ww,trl,diagl,iv(20),iv(29),iv(3),iv(2),iv(5),
+ iv(17),iv(4),iv(6),iv(14),iv(19),wv(1),iv(iv(7)),iv(iv(8)),
+ iv(iv(9)),iv(iv(10)),iv(iv(22)),iv(iv(27)),wv(iv(11)),
+ iv(iv(23)),wv(iv(13)),wv(iv(12)),wv(iv(15)),wv(iv(16)),
+ wv(iv(18)),ifloor(iv(3)*wv(2)),wv(3),wv(iv(26)),wv(iv(24)),
+ wv(4),iv(30),iv(33),iv(32),iv(41),iv(iv(25)),wv(iv(34)),
+ setlf)
if(iv(14).lt.iv(6)+DBLE(iv(4))/2.D0)then
call ehg183('k-d tree limited by memory; nvmax=',
+ iv(14),1,1)
(line numbers in optimized code are somewhat unreliable), so there are
quite a few items to check. Dumping out the iv and wv arrays at that
point is probably a good start if you want to chip in with a bit
of debugging. Do yourself a favour and use set.seed() with a value
that gives you a minimal repeat count when you start R in a clean state.
--
O__ ---- Peter Dalgaard Øster Farimagsgade 5, Entr.B
c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - ([EMAIL PROTECTED]) FAX: (+45) 35327907
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
--
Brian D. Ripley, [EMAIL PROTECTED]
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel