On Tue, 16 Nov 2010, Andrew Redd wrote:

so should I use reg.finalizer or overwrite .Last()?

.Last
Error: object '.Last' not found


You create your own .Last - there is nothing to overwrite.

Chuck


 If I use
reg.finalizer, what should be the environment that I specify?  The
straight forward solution would be to have a hook .onExit that a
package could specify to make sure  that the code was unloaded before
the program terminates, that way I don't overwrite .Last if if has
another purpose.

-Andrew

On Tue, Nov 16, 2010 at 11:27 AM, Charles C. Berry <cbe...@tajo.ucsd.edu> wrote:
On Tue, 16 Nov 2010, Andrew Redd wrote:

Just found in the documentation for getHook that packages are not
unloaded on quit.  How should I force a package to unload on quit?

See

       ?q


HTH,

Chuck


-Andrew

On Tue, Nov 16, 2010 at 10:25 AM, Andrew Redd <amr...@gmail.com> wrote:

Are packages unloaded on quit so that the .Last.lib or .onUnload are
called for packages?

-Andrew

On Fri, Nov 12, 2010 at 3:52 PM, Andrew Redd <amr...@gmail.com> wrote:

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


Charles C. Berry                            Dept of Family/Preventive
Medicine
cbe...@tajo.ucsd.edu                        UC San Diego
http://famprevmed.ucsd.edu/faculty/cberry/  La Jolla, San Diego 92093-0901



______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Charles C. Berry                            Dept of Family/Preventive Medicine
cbe...@tajo.ucsd.edu                        UC San Diego
http://famprevmed.ucsd.edu/faculty/cberry/  La Jolla, San Diego 92093-0901

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to