From duncan at research.bell-labs.com  Sat Oct 25 00:01:55 2003
From: duncan at research.bell-labs.com (Duncan Temple Lang)
Date: Sat Oct 25 00:01:09 2003
Subject: [Rd] Segmentation fault in .Call() (PR#4761)
In-Reply-To: <200310242130.h9OLUS0P016175@pubhealth.ku.dk>;
	from jerome@hivnet.ubc.ca on Fri, Oct 24, 2003 at 11:30:28PM +0200
References: <200310242130.h9OLUS0P016175@pubhealth.ku.dk>
Message-ID: <20031024180154.B20750@jessie.research.bell-labs.com>

jerome@hivnet.ubc.ca wrote:
> Full_Name: Jerome Asselin
> Version: 1.8.0
> OS: RedHat Linux 7.2
> Submission from: (NULL) (142.103.177.13)
> 
> 
> 
> I would not expect a segmentation fault; perhaps an error message.
> 
> > .Call("log")
> Segmentation fault
> 
> This is always reproducable for me.

Thanks for the info.  This should definitely not cause a segfault.
However, the explanation means that the cure is not obvious without
upsetting quite a lot of people.  Let me explain what happens.

Without the PACKAGE argument in the .Call(), we look for the symbol
"log" by walking through the array of previously loaded DLLs/shared
libraries.  Many of the standard packages use registration of the
routines that are to be called by R via the
.C/.Call/.Fortran/.External interaces. However, they also permit the
DLL to be searched using regular dynamic lookup.  This is the default
so as not to break anyone's S code that uses non-registered routines.
And this is what causes the problem!  In my case, we first look in the
methods library (although this is not important) and as for the symbol
"log". And we find it there on Linux.  Precisely why is very much
system-dependent and installation depdenent.  

Peforming the dynamic lookup is the problem.  If everyone were to use
registration, then we could turn this off, but that is a little too
much to ask (currently :-)).  If you had asked for a different symbol
and not something that was in the system libraries, the result would
have been better.

This did reveal a bug in that the base library has the dynamic lookup
turned on which it should not.  Trivial fix in progress.

I doubt too many people will get into this particular situation, so I
am not certain the fix is better than the event of small
probability. Opinions?

Thanks,

 D.

 


> 
> Sincerely,
> Jerome Asselin
> 
> ______________________________________________
> R-devel@stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-devel

-- 
_______________________________________________________________

Duncan Temple Lang                duncan@research.bell-labs.com
Bell Labs, Lucent Technologies    office: (908)582-3217
700 Mountain Avenue, Room 2C-259  fax:    (908)582-3340
Murray Hill, NJ  07974-2070       
         http://cm.bell-labs.com/stat/duncan


[Rd] Segmentation fault in .Call() (PR#4761)
Duncan Temple Lang