On 12/13/06, Peter Dalgaard <[EMAIL PROTECTED]> wrote: > Göran Broström wrote: > > I tried once more under the debugger, and > > > > ++++++++++++++++++++++++++++++++++++++++++ > > [EMAIL PROTECTED]:~/R/BEMANNING/Doc$ R -d gdb > > GNU gdb 6.5-debian > > Copyright (C) 2006 Free Software Foundation, Inc. > > GDB is free software, covered by the GNU General Public License, and you are > > welcome to change it and/or distribute copies of it under certain > > conditions. > > Type "show copying" to see the conditions. > > There is absolutely no warranty for GDB. Type "show warranty" for details. > > This GDB was configured as "i486-linux-gnu"...Using host libthread_db > > library "/lib/tls/i686/cmov/libthread_db.so.1". > > > > (gdb) run > > Starting program: /usr/local/lib/R/bin/exec/R > > Failed to read a valid object file image from memory. > > > > R version 2.4.0 Patched (2006-10-29 r39744) > > Copyright (C) 2006 The R Foundation for Statistical Computing > > ISBN 3-900051-07-0 > > > > R is free software and comes with ABSOLUTELY NO WARRANTY. > > You are welcome to redistribute it under certain conditions. > > Type 'license()' or 'licence()' for distribution details. > > > > Natural language support but running in an English locale > > > > R is a collaborative project with many contributors. > > Type 'contributors()' for more information and > > 'citation()' on how to cite R or R packages in publications. > > > > Type 'demo()' for some demos, 'help()' for on-line help, or > > 'help.start()' for an HTML browser interface to help. > > Type 'q()' to quit R. > > > > [Previously saved workspace restored] > > > > > >> library(xtable) > >> ?xtable) > >> > > Error: syntax error in "?xtable)" > > > >> ?xtable > >> help.start() > >> > > Making links in per-session dir ... > > If '/usr/bin/firefox' is already running, it is *not* restarted, and > > you must switch to its window. > > Otherwise, be patient ... > > > >> library(bemanning) > >> load("bemanning07-32.rda") > >> courses("Ingrid") > >> > > > > Program received signal SIGSEGV, Segmentation fault. > > 0x080f5026 in R_gc_internal (size_needed=17588127) at memory.c:1313 > > 1313 PROCESS_NODES(); > > (gdb) > > ++++++++++++++++++++++++++++++++++++++++++++ > > > > How do I continue? > > > > Ouch. Call the marines... > > The error comes from the garbage collector, which means that something > got corrupted in internal data structures some time previously. > > The most important thing is to preserve the bug. Rebuild anything and > the symptom disappears, but the bug will still be there. So keep the R > binary, the script, and the .RData file around.
OK, I'll do that. However, I have no time this week to look into the things you suggest below, but I'll try to get at it next week. Göran > > Some ideas: > > Is it reproducible on other machines? > > Do you have valgrind installed? Notes for using it are on > http://developer.r-project.org/valgrind-internal.html > > Turning on gctorture() may trigger the bug at an earlier state. > > The last resort is to painstakingly backtrace to the point of the > damage using watchpoints and whatever, but I'd rather not go there > right away. > > -p > > Göran > > > > On 12/12/06, Göran Broström <[EMAIL PROTECTED]> wrote: > > > >> On 12/12/06, Peter Dalgaard <[EMAIL PROTECTED]> wrote: > >> > >>> Göran Broström wrote: > >>> > >>>> I just caught a segfault: > >>>> > >>>> > >>>> > >>>>> courses("Ingrid") > >>>>> > >>>>> > >>>> *** caught segfault *** > >>>> address 0x99b279c, cause 'memory not mapped' > >>>> > >>>> Traceback: > >>>> 1: structure(y, class = oldClass(x), row.names = attr(x, "row.names")) > >>>> 2: `[.data.frame`(gudata, -(1:5)) > >>>> 3: gudata[-(1:5)] > >>>> 4: names(gudata[-(1:5)]) > >>>> 5: inherits(x, "factor") > >>>> 6: is.factor(table) > >>>> 7: match(x, table, nomatch = 0) > >>>> 8: who %in% names(gudata[-(1:5)]) > >>>> 9: courses("Ingrid") > >>>> > >>>> when running a function 'courses' in an R package without compiled > >>>> code. Is this "possible"? I have got many segfaults when testing my > >>>> own packages, but it has always been caused by stupidities in C or > >>>> Fortran code, never with pure R code. > >>>> > >>>> So, before I start debugging, I'd like to know if a segfault in pure R > >>>> code indicates a bug in R itself, or if it can be in my function? > >>>> > >>>> > >>>> > >>> By definition, reproducible segfaults in R code are bugs in R, unless > >>> caused by abuse of .C calls or similar. (Irreproducible ones are often > >>> hardware faults.) > >>> > >>> However, at least presently, you are the only one with a handle on the > >>> bug. So either you get to do the debugging or you have to provide > >>> something that others can reproduce. > >>> > >>> Astarting point could be to run R under the debugger (R -d gdb) and > >>> generate a C backtrace, then look at the variables involved. > >>> > >> Thanks, Peter, > >> > >> the error is reproducible. The full session is > >> > >> +++++++++++++++++++++++++++++++++++++++++ > >> [EMAIL PROTECTED]:~/R/BEMANNING/Doc$ R > >> > >> R version 2.4.0 Patched (2006-10-29 r39744) > >> Copyright (C) 2006 The R Foundation for Statistical Computing > >> ISBN 3-900051-07-0 > >> > >> R is free software and comes with ABSOLUTELY NO WARRANTY. > >> You are welcome to redistribute it under certain conditions. > >> Type 'license()' or 'licence()' for distribution details. > >> > >> Natural language support but running in an English locale > >> > >> R is a collaborative project with many contributors. > >> Type 'contributors()' for more information and > >> 'citation()' on how to cite R or R packages in publications. > >> > >> Type 'demo()' for some demos, 'help()' for on-line help, or > >> 'help.start()' for an HTML browser interface to help. > >> Type 'q()' to quit R. > >> > >> [Previously saved workspace restored] > >> > >> > >>> library(xtable) > >>> ?xtable) > >>> > >> Error: syntax error in "?xtable)" > >> > >>> ?xtable > >>> help.start() > >>> > >> Making links in per-session dir ... > >> If '/usr/bin/firefox' is already running, it is *not* restarted, and > >> you must switch to its window. > >> Otherwise, be patient ... > >> > >>> library(bemanning) > >>> load("bemanning07-32.rda") > >>> courses("Ingrid") > >>> > >> *** caught segfault *** > >> address 0x99b279c, cause 'memory not mapped' > >> > >> Traceback: > >> 1: structure(y, class = oldClass(x), row.names = attr(x, "row.names")) > >> 2: `[.data.frame`(gudata, -(1:5)) > >> 3: gudata[-(1:5)] > >> 4: names(gudata[-(1:5)]) > >> 5: inherits(x, "factor") > >> 6: is.factor(table) > >> 7: match(x, table, nomatch = 0) > >> 8: who %in% names(gudata[-(1:5)]) > >> 9: courses("Ingrid") > >> > >> Possible actions: > >> 1: abort (with core dump) > >> 2: normal R exit > >> 3: exit R without saving workspace > >> 4: exit R saving workspace > >> Selection: > >> +++++++++++++++++++++++++++++++++++++++++++++ > >> > >> Notes: > >> > >> 1. Tried to remove one line at a time, but then no error. > >> 2. R -d gdb: No errors > >> 3. Starting with 'R --vanilla': No errors. > >> > >> i.e., it seems as if my previously saved workspace '.RData' is part of > >> the error. > >> Could it be corrupt and cause a segfault in a bug free R? > >> > >> I'll try to build a newer version of R and check (but not tonight). > >> > >> Göran > >> > >> > >>> (Further discussion should probably go on r-devel instead of r-help). > >>> > >>> -p > >>> > >>> > >>>> I have used 'courses' many times before without problems. > >>>> > >>>> Thanks, > >>>> > >>>> Göran > >>>> ++++++++++++++++++++++++++++++++++++++ > >>>> > >>>> > >>>>> sessionInfo() > >>>>> > >>>>> > >>>> R version 2.4.0 Patched (2006-10-29 r39744) > >>>> i686-pc-linux-gnu > >>>> > >>>> > >>>> > >>>> > >>> > >>> > >> -- > >> Göran Broström > >> > >> > > > > > > > > > -- Göran Broström ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel