Perhaps you could help me make some sense of this. Here is a printout of my sessions. --- toys$R -q > library(test2) > gpualloctest() testing allocation on gpu C Finished Collecting Garbage done. > q() Save workspace image? [y/n/c]: n
*** caught segfault *** address 0x7f12ec1add50, cause 'memory not mapped' Possible actions: 1: abort (with core dump, if enabled) 2: normal R exit 3: exit R without saving workspace 4: exit R saving workspace Selection: 1 aborting ... Segmentation fault toys$R -q > library(test2) > gpualloctest() testing allocation on gpu C Finished Collecting Garbage done. > library.dynam.unload('test2',system.file(package='test2')) > q() Save workspace image? [y/n/c]: n toys$ --- I have a in the test2/R/zzz.R file --- .onUnload <- function(libpath) library.dynam.unload("test2", libpath) --- so the code should be unloaded. But it appears that it is not from errors when I explicitly unload the test2.so it does not through a segfault. Why would this be happening? and how do I circumvent it. thanks, Andrew On Fri, Nov 12, 2010 at 3:32 PM, Prof Brian Ripley <rip...@stats.ox.ac.uk> wrote: > On Fri, 12 Nov 2010, Andrew Redd wrote: > >> I have a package that I'm developing that I need to unload the >> library. Long story short I figured out that the leaving the compiled >> code loaded lead to a segmentation fault, but unloading the code will >> fix it. I've read the documentation and it appears that there are >> several ways to do this? What is the popper accepted current standard >> for unloading compiled code? > > Depends how you loaded it: you basically reverse the process. > >> The options as I understand them are: >> 1. dyn.unload >> 2. library.dynam.unload >> used with either >> A. .Last.lib >> B. .onUnload >> >> If it makes a difference my package does use a NAMESPACE so the >> package is loaded through useDynLib. > > So you need an .onUnload action calling library.dynam.unload. > > Slightly longer version: you need the DLL loaded whilst the namepace is in > use, so it has to be in .onUnload, and useDynLib calls library.dynam so you > need library.dynam.unload to do the housekeeping around dyn.unload which > matches what library.dynam does around dyn.load. > > There are quite a lot of examples to look at, including in R itself. MASS is > one example I've just checked. > > Having said all that, my experience is that unloading the DLL often does not > help if you need to load it again (and that is why e.g. tcltk does not > unload its DLL). > >> Thanks, >> Andrew Redd >> >> ______________________________________________ >> R-devel@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel >> > > -- > Brian D. Ripley, rip...@stats.ox.ac.uk > 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