[Rd] SIGSEGV in R_RunWeakRefFinalizer, object allocated with Rcpp

Dirk Eddelbuettel edd @ending from debi@n@org
Thu Aug 9 21:38:20 CEST 2018


On 9 August 2018 at 14:13, luke-tierney using uiowa.edu wrote:
| On Thu, 9 Aug 2018, Dirk Eddelbuettel wrote:
| 
| >
| > On 9 August 2018 at 20:37, Tomas Kalibera wrote:
| > | So to answer your original question, this could probably be handled in
| > | Rcpp,
| >
| > Hm. Why do you say that / what did you have in mind?
| 
| We say it because it is true. Rcpp registers C finalizers and running
| them after unloading will segfault. For now it would be better for Rcpp
| (and everyone else) to explicitly discourage unloading as it is
| unreliable on many levels.
| 
| What Rcpp could do to avoid segfaulting is to keep a weak list of all
| objects to which it attaches C finalizers and arrange for those to be
| cleaned up in an R_unload_<dllname> routine. Not clear it is worth the
| trouble. At the R level we could provide more support for this since
| we already have a weak list of objects with finalizers, but again not
| clear it is worth the trouble.

Ah, noted, thanks for the explainer.

As I remain in camp "don't try unloading" I won't make this a priority
myself, but as always open to credible PRs. Could start with an issue ticket
and discussion if anybody is so inclined.

Dirk

-- 
http://dirk.eddelbuettel.com | @eddelbuettel | edd using debian.org



More information about the R-devel mailing list