Yes, optimization sometimes results in writes that are apparently harmless and go away if optimization is removed.
It could be the bug you found (and glibc-2.3.5 had fixed) but it isn't in exactly the right place. But then, valgrind on my system does not have a problem with that one, optimized or not. On Tue, 2 Aug 2005, Duncan Murdoch wrote: > Prof Brian Ripley wrote: >> Did you compile R without optimization? Such reads are often the result of >> read-aheads produced by the optimizer in an attempt to keep pipelines full >> (and are harmless). > > There were both a read and a write. I can see the read being harmless, but > is the write harmless? I suspect this may be the bug I fixed on July 16, > since it had to do with character classes including ranges (like Charlie's > "[a-pr-z]"). > > Charlie, have you tried a recent version of R-patched? > > Duncan Murdoch > >> >> On an un-optimized build of R I am unable to reproduce this. (I also was >> unable to reproduce it on my optimized build of 2.1.1 using gcc 3.4.4, >> although I did get a report on other read-aheads.) >> >> On Mon, 1 Aug 2005 [EMAIL PROTECTED] wrote: >> >> >>> I think I am using objects according to the man page. >>> This seems to be a valid regular expression. But whether >>> I know what I'm doing or no, it still shouldn't be doing >>> what valgrind seems to be saying it's doing. (IMHO) >> >> >> I think you need to take that up with compiler designers: it is common >> practice. >> >> >>> ---------- start of script ---------- >>> Script started on Mon 01 Aug 2005 02:09:00 PM PDT >>> linux$ printenv VALGRIND_OPTS >>> --tool=3Dmemcheck >>> linux$ cat bar.R >>> >>> foo <- 1 >>> bar <- 2:3 >>> baz <- 4:6 >>> qux <- matrix(7:10, 2) >>> >>> ls() >>> rm(list =3D objects(pattern =3D "^[a-pr-z]")) >>> ls() >>> >>> linux$ R --version >>> R 2.1.1 (2005-06-20). >>> Copyright (C) 2005 R Development Core Team >>> >>> R is free software and comes with ABSOLUTELY NO WARRANTY. >>> You are welcome to redistribute it under the terms of the GNU >>> General Public License. For more information about these matters, >>> see http://www.gnu.org/copyleft/gpl.html. >>> linux$ gcc --version >>> =1B[0mgcc (GCC) 3.3.5 20050117 (prerelease) (SUSE Linux) >>> =1B[0mCopyright (C) 2003 Free Software Foundation, Inc. >>> =1B[0mThis is free software; see the source for copying conditions. There >>> = >>> is NO >>> =1B[0mwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR >>> PU= >>> RPOSE. >>> =1B[0m >>> linux$ cat /etc/SuSE-release=20 >>> SuSE Linux 9.3 (i586) >>> VERSION =3D 9.3 >>> linux$ R --vanilla --debugger=3Dvalgrind < bar.R >| bar.Rout >>> =3D=3D22324=3D=3D Memcheck, a memory error detector for x86-linux. >>> =3D=3D22324=3D=3D Copyright (C) 2002-2004, and GNU GPL'd, by Julian Seward >>> = >>> et al. >>> =3D=3D22324=3D=3D Using valgrind-2.2.0, a program supervision framework >>> for= >>> x86-linux. >>> =3D=3D22324=3D=3D Copyright (C) 2000-2004, and GNU GPL'd, by Julian Seward >>> = >>> et al. >>> =3D=3D22324=3D=3D For more details, rerun with: -v >>> =3D=3D22324=3D=3D=20 >>> =3D=3D22324=3D=3D Invalid read of size 4 >>> =3D=3D22324=3D=3D at 0x81255AD: parse_expression (regex.c:5045) >>> =3D=3D22324=3D=3D by 0x8125868: parse_branch (regex.c:4475) >>> =3D=3D22324=3D=3D by 0x8125913: parse_reg_exp (regex.c:4420) >>> =3D=3D22324=3D=3D by 0x81261B3: Rf_regcomp (regex.c:4384) >>> =3D=3D22324=3D=3D Address 0x1C1E23A8 is 0 bytes after a block of size 32 >>> a= >>> lloc'd >>> =3D=3D22324=3D=3D at 0x1B90650D: calloc (in >>> /usr/lib/valgrind/vgpreload_= >>> memcheck.so) >>> =3D=3D22324=3D=3D by 0x81247B5: parse_expression (regex.c:5406) >>> =3D=3D22324=3D=3D by 0x8125868: parse_branch (regex.c:4475) >>> =3D=3D22324=3D=3D by 0x8125913: parse_reg_exp (regex.c:4420) >>> =3D=3D22324=3D=3D=20 >>> =3D=3D22324=3D=3D Invalid write of size 4 >>> =3D=3D22324=3D=3D at 0x81255B2: parse_expression (regex.c:5045) >>> =3D=3D22324=3D=3D by 0x8125868: parse_branch (regex.c:4475) >>> =3D=3D22324=3D=3D by 0x8125913: parse_reg_exp (regex.c:4420) >>> =3D=3D22324=3D=3D by 0x81261B3: Rf_regcomp (regex.c:4384) >>> =3D=3D22324=3D=3D Address 0x1C1E23A8 is 0 bytes after a block of size 32 >>> a= >>> lloc'd >>> =3D=3D22324=3D=3D at 0x1B90650D: calloc (in >>> /usr/lib/valgrind/vgpreload_= >>> memcheck.so) >>> =3D=3D22324=3D=3D by 0x81247B5: parse_expression (regex.c:5406) >>> =3D=3D22324=3D=3D by 0x8125868: parse_branch (regex.c:4475) >>> =3D=3D22324=3D=3D by 0x8125913: parse_reg_exp (regex.c:4420) >>> =3D=3D22324=3D=3D=20 >>> =3D=3D22324=3D=3D ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 39 >>> f= >>> rom 2) >>> =3D=3D22324=3D=3D malloc/free: in use at exit: 12691882 bytes in 6426 >>> block= >>> s. >>> =3D=3D22324=3D=3D malloc/free: 32534 allocs, 26108 frees, 33105500 bytes >>> al= >>> located. >>> =3D=3D22324=3D=3D For a detailed leak analysis, rerun with: --leak-check= >>> =3Dyes >>> =3D=3D22324=3D=3D For counts of detected errors, rerun with: -v >>> linux$ exit >>> >>> Script done on Mon 01 Aug 2005 02:10:42 PM PDT >>> ---------- end of script ---------- >>> --=20 >>> Charles Geyer >>> Professor, School of Statistics >>> University of Minnesota >>> [EMAIL PROTECTED] >>> >>> ______________________________________________ >>> 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