[Rd] Linux distribution with gcc 4.8 and AddressSanitizer ?
simon.urbanek at r-project.org
Fri Apr 19 21:36:28 CEST 2013
On Apr 19, 2013, at 2:19 PM, Prof Brian Ripley wrote:
> On 19/04/2013 18:22, Thomas Petzoldt wrote:
>> On 18.04.2013 18:05, José Matos wrote:
>>> On Thursday 18 April 2013 17:38:06 Thomas Petzoldt wrote:
>>>> Dear R developers,
>>>> I've got an information from Prof. Ripley regarding a bug found
>>>> with AdressSanitizer in one of our packages. It is now fixed, thank
>>>> you for this information.
>>>> Now, I would like to run AddressSanitizer myself before submitting
>>>> the patched package to CRAN.
>>>> Is there a recommendation of a suitable Linux distribution with gcc
>>>> 4.8, ideally an ISO image or (even better) a virtual appliance for
>>>> VMware or VirtalBox? My Debian Wheezy machines have only 4.7.2.
>>>> Thank you
>>>> Thomas Petzoldt
>>> I am not sure about all the requisites above (regarding the virtual
>>> appliances although I know that they are available) but Fedora 19
>>> (Alpha) that will be released today has gcc 4.8.
>>> Even although it has the Alpha moniker, and the corresponding stage,
>>> it is relatively stable and thus suitable for your requirements.
>> Thank you for the hint to use Fedora 19 Alpha. I have it now running,
>> together with R 3.0.0. and gcc 4.8.0 20120412 (Red Hat 4.8.0-2).
>> Compilation and installation of packages (without ASAN) workes out of
>> the box.
>> Then I've set:
>> export PKG_CFLAGS="-fsanitize=address -fno-omit-frame-pointer"
>> ... and compilation runs and I see that gcc uses the flags, but package
>> installation still fails:
>> ** testing if installed package can be loaded
>> Error in dyn.load(file, DLLpath = DLLpath, ...) :
>> unable to load shared object
>> /home/user/packages/deSolve.Rcheck/deSolve/libs/deSolve.so: undefined
>> symbol: __asan_report_load8
>> Error: loading failed
>> Execution halted
>> ERROR: loading failed
>> I see that the address sanitizer cannot work yet (__asan_report_load8)
>> and that I missed something important, but what?
> The manual said
> 'It requires code to have been compiled and linked with -fsanitize=address'
> I don't see that you linked with it ...
> I have (in ~/.R/Makevars)
> CC="gcc -std=gnu99 -fsanitize=address -fno-omit-frame-pointer"
> and similar for F77, CXX ....
> I guess PKG_LIBS=-fsanitize=address might work.
Just a data point: that didn't work for me on OS X using clang. I had to compile R with clang + asan, because clang seems to embed the run-time only in executables, not shared objects and when linking the .so to the runtime manually it broke. But building R with clang 3.3 from trunk and gfortran from CRAN did work with some tweaking - this is what I used:
CC=/opt/clang/bin/clang CXX=/opt/clang/bin/clang++ 'CFLAGS=-fsanitize=address -O1 -fno-omit-frame-pointer -g -Wall' 'CXXFLAGS=-fsanitize=address -O1 -fno-omit-frame-pointer -g -Wall' 'LDFLAGS=-fsanitize=address -L/usr/local/lib -lgfortran' 'FC=gfortran-4.2 -m64' 'F77=gfortran-4.2 -m64'
Another data point is that R segfaulted on start for me when compiled with gcc 4.8.0-3 from Debian experimental (amd64) with asan enabled (and I gave up when I couldn't get gfortran-4.8 to mix with clang-3.2 to try that route). Those are all very fragile tools, so it's not unexpected, but essentially it seems that it's not trivial to get a working set of tools...
>> Thomas Petzoldt
> Brian D. Ripley, ripley at stats.ox.ac.uk
> Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
> University of Oxford, Tel: +44 1865 272861 (self)
> 1 South Parks Road, +44 1865 272866 (PA)
> Oxford OX1 3TG, UK Fax: +44 1865 272595
> R-devel at r-project.org mailing list
More information about the R-devel