Like a couple of other posters in the past year, I was seeing R 2.8.1 segfault in the foreign package on my Solaris 10 Intel system:

      > library(foreign)

      *** caught segfault ***
      address fe1d5c70, cause 'invalid permissions'

      Traceback:
           1: .C("spss_init", PACKAGE = "foreign")
           2: fun(...)

This happened whether I built with gcc3, gcc4, or SunStudio 12.

Using pstack I found that the code was crashing in avl_create(). Using truss I found that identically named functions in the Solaris /lib/libavl.so.1 library were being used instead of the AVL functions provided in avl.c in the foreign package. To verify, I replaced all of the "avl_" and "AVL_" patterns in foreign/src/*.[ch] with "ravl_" and "RAVL_" respectively. Once I made this change, loading the foreign package caused no further problems.

An alternative workaround was a hack involving symlinks and LD_LIBRARY_PATH, but that was not satisfactory. Since the foreign avl functions are incompatible with the ones provided by the standard Sun library, this approach has other potential gotchas.

FYI.

Jeff

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

Reply via email to