[Rd] R, Macports and C++ streams

Ernest Turro ernest.turro at ic.ac.uk
Wed Jul 30 19:10:08 CEST 2008


On 30 Jul 2008, at 17:58, Simon Urbanek wrote:

>
> On Jul 30, 2008, at 12:35 , Ernest Turro wrote:
>
>>
>> On 30 Jul 2008, at 15:18, Kjell Konis wrote:
>>
>>> I found this in Writing R Extensions:
>>>
>>> "Using C++ iostreams, as in this example, is best avoided. There  
>>> is no guarantee that the output will appear in the R console, and  
>>> indeed it will not on the R for Windows console. Use R code or the  
>>> C entry points (see Printing) for all I/O if at all possible."
>>>
>>> That is, use Rprintf() instead. The fact that your code works with  
>>> one version of gcc and not another can probably be chalked up to  
>>> coincidence.
>>>
>>
>> The doc warns that the output to stdout using iostreams may not  
>> appear on the console, there is no indication that doing this may  
>> crash R (and this has never happened to me before). Certainly, the  
>> use of file streams (fstreams) should work just fine.
>>
>
> FWIW I saw this problem when using mismatching compilers before  
> (long time ago when we had to use FSF-built gcc because of bugs in  
> Apple's gcc). Its likely cause is a combination of incompatible ABIs  
> and libstdc++ mismatch. Note that Apple's gcc build script goes into  
> great pains to not mess up system stdc++ because it's asking for  
> trouble.

Yes, this sounds like the most likely culprit. I guess, ultimately,  
Macports GCC maintainers should make sure their build script goes  
through the same hoops as Apple's to avoid this kind of mismatch  
problem with libstdc++. The best thing would be for the R port to  
depend on Apple-supplied gcc rather than the Macports gcc.

Cheers
Ernest


>
>
> Cheers,
> Simon
>
>
>>
>>
>>
>>> Kjell
>>>
>>> On Jul 30, 2008, at 3:45 PM, 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?
>>>>
>>>> Thanks,
>>>>
>>>> Ernest
>>>>
>>>> ______________________________________________
>>>> R-devel at r-project.org mailing list
>>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>
>>
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>>
>



More information about the R-devel mailing list