[Rd] SIGSEGV in R_RunWeakRefFinalizer, object allocated with Rcpp

Iñaki Úcar i@uc@r86 @ending from gm@il@com
Mon Aug 6 17:35:48 CEST 2018


Hi all,

I'm not sure if I'm not supposed to do the following (the dyn.unload
part, I mean) or this could be a bug (in R or Rcpp):

```
Rcpp::sourceCpp(code='
  #include <Rcpp.h>
  class Object {};
  //[[Rcpp::export]]
  SEXP new_object() {
    return Rcpp::XPtr<Object>(new Object());
  }'
)

new_object()
dyn.unload(list.files(tempdir(), ".(so|dll)$", recursive=TRUE, full.names=TRUE))
gc() # segfault in R_RunWeakRefFinalizer

message("This is not printed")
```

This is the backtrace I get with R 3.5.1:

#0  0x61ec4fd0 in ?? ()
#1  0x6ca1cafc in R_RunWeakRefFinalizer (w=0xc786a98) at memory.c:1393
#2  0x6ca1cdba in RunFinalizers () at memory.c:1459
#3  0x6ca1d024 in R_RunPendingFinalizers () at memory.c:1495
#4  R_gc () at memory.c:2893
#5  do_gc (call=0x1d45b88, op=0x15241d0, args=0x1d454b8,
rho=0x1d45318) at memory.c:2013
#6  0x6c9db60f in bcEval (body=body using entry=0x1d45a88,
rho=rho using entry=0x1d45318, useCache=useCache using entry=TRUE)
    at eval.c:6781
#7  0x6c9ecfb2 in Rf_eval (e=0x1d45a88, rho=0x1d45318) at eval.c:624
#8  0x6c9ee6f1 in R_execClosure (call=call using entry=0x0,
newrho=<optimized out>, sysparent=<optimized out>,
    rho=0x15a3370, arglist=0x18c2498, op=0x1d45968) at eval.c:1773
#9  0x6c9ef605 in Rf_applyClosure (call=0x15a3370,
call using entry=0x1d45828, op=0x18c2498, op using entry=0x1d45968,
    arglist=0x1d45968, rho=rho using entry=0x15a3370,
suppliedvars=0x18c2498) at eval.c:1701
#10 0x6c9ecf78 in Rf_eval (e=e using entry=0x1d45828,
rho=rho using entry=0x15a3370) at eval.c:747
#11 0x6ca11170 in Rf_ReplIteration (rho=0x15a3370, savestack=0,
browselevel=0, state=0x142edec) at main.c:258
#12 0x6ca11567 in R_ReplConsole (rho=<optimized out>, savestack=0,
browselevel=0) at main.c:308
#13 0x6ca11604 in run_Rmainloop () at main.c:1082
#14 0x6ca11700 in Rf_mainloop () at main.c:1089
#15 0x00401836 in AppMain (argc=1, argv=0x15c16f8) at rterm.c:86
#16 0x00401649 in WinMain using 16 (Instance=0x400000, PrevInstance=0x0,
CmdLine=0x1904797 "", CmdShow=10)
    at graphappmain.c:23
#17 0x00402a8d in main ()

Any ideas?

Iñaki



More information about the R-devel mailing list