From ernest.turro at ic.ac.uk  Thu Jul 31 20:16:33 2008
From: ernest.turro at ic.ac.uk (Ernest Turro)
Date: Thu, 31 Jul 2008 19:16:33 +0100
Subject: [Rd] R, Macports and C++ streams
In-Reply-To: <B64D9294-A28D-4CFA-B15D-9E770CD9972F@epfl.ch>
References: <37E1D80F-D1CB-4B4B-80B1-DDBDB0EF43BD@ic.ac.uk>
	<25AD1EB9-4E98-4DCB-8C36-43B1247121ED@r-project.org>
	<33D233DE-7D1D-47E1-BC9C-5659A9C4D215@ic.ac.uk>
	<B64D9294-A28D-4CFA-B15D-9E770CD9972F@epfl.ch>
Message-ID: <29961D22-48E5-4F57-B704-0C81B17F350B@ic.ac.uk>


On 31 Jul 2008, at 10:29, Kjell Konis wrote:

> Ernest,
>
> Is it possible to provide a reproducible example of your crash?

Yes. R on macports depends on gcc43, which is causing the problems.  
The best thing would be to make the port not depend on gcc43, and  
instead depend on apple-supplied gcc (if this is possible).  
Alternatively, the macports gcc43 build script should be fixed (e.g.  
by looking at Apple's script, if available). Reproducible example:

Download and install gcc43 from Macports

cat - > foo.txt
Blah
Blah
^D

cat - > foo.cc
#include <stdio.h>
#include <fstream>
extern "C" {
   void foo() {
     char bar;
     std::ifstream ifs("foo.txt");
     std::ofstream ofs("foo2.txt");
     ifs >> bar;
     ofs << bar;
   }
}
^D

cat - > foo.R
dyn.load("foo.so")
.C("foo")
^D

# Crash:
g++-mp-4.3 -shared -fPIC foo.cc -o foo.so
R --vanilla < foo.R

# Don't crash:
g++-4.2 -shared -fPIC foo.cc -o foo.so
R --vanilla < foo.R



>
>
> Kjell
>
>
> On Jul 30, 2008, at 6:32 PM, Ernest Turro wrote:
>
>>
>> On 30 Jul 2008, at 15:46, Simon Urbanek wrote:
>>
>>>
>>> On Jul 30, 2008, at 9:45 , Ernest Turro wrote:
>>>
>>>> Dear all,
>>>>
>>>> R on Macports relies on GCC 4.3 to build packages. I find that
>>>> packages with shared objects that use C++ streams crash R if
>>>> they're compiled using Macports' gcc43, but work fine if compiled
>>>> in exactly the same way using Apple-supplied GCC 4.2. Has anyone
>>>> here had the same issue/know what is causing this problem?
>>>>
>>>
>>> Using compilers from MacPorts and similar suites (Darwin ports, Fink
>>> etc.) is strongly discouraged (and outright not supported by the
>>> CRAN binary) since they have been known to be badly broken in the
>>> past and when whenever tested so far they were incomplete and
>>> incompatible. You have to re-compile R yourself with those tools
>>> (and you're entirely on your own) if you really want to use them.
>>> CRAN binaries work only with Apple's gcc branches, if you want to
>>> use anything else, you have to follow the unix R instructions and
>>> compile everything from sources.
>>
>> Dear Kjell,
>>
>> As you can see above, your R port on Macports appears to be broken  
>> and
>> has a reputation of having been broken for a while. I for one have
>> experienced odd problems as described above. To avoid further issues
>> with unsuspecting Macports users, perhaps it would be good to pull  
>> the
>> port from the repository until a decent level of reliability can be
>> provided ?
>>
>> Cheers,
>>
>> Ernest
>>
>>>
>>>
>>> Cheers,
>>> Simon
>>>
>>
>



[Rd] R, Macports and C++ streams
Ernest Turro