Dear All, I'm trying to implement the section of the manual pertaining to the gcc-ubsan test carried by CRAN on my local computer (ubuntu 14.04): http://www.stats.ox.ac.uk/pub/bdr/memtests/gcc-UBSAN/README.txt I was wondering whether someone could tell what the minimal version of the gcc tool chain needed to run the gcc-ASAN and gcc-UBSAN alignment tests on ones local computer is. CRAN seems to use gcc 5.2.0 to do these tests, but the current version of gcc shipped with ubuntu is 4.9.2 (to be updated to 5.1.0 with the 15.10 release latter this month). I hope this is the correct list to post this. Thanks in advance,
Prof Brian Ripley
2015-Oct-14 08:10 UTC
[Rd] gcc ubsan alignement test --minimal gcc version?
On 13/10/2015 14:46, kaveh wrote:> Dear All, > > I'm trying to implement the section of the manual pertaining to the > gcc-ubsan test > carried by CRAN on my local computer (ubuntu 14.04): > > http://www.stats.ox.ac.uk/pub/bdr/memtests/gcc-UBSAN/README.txt > > I was wondering whether someone could tell what the minimal version > of the gcc tool chain needed to run the gcc-ASAN and gcc-UBSAN > alignment > tests on ones local computer is. CRAN seems to use gcc 5.2.0 to do > these tests, > but the current version of gcc shipped with ubuntu is 4.9.2 (to be > updated to > 5.1.0 with the 15.10 release latter this month). > > I hope this is the correct list to post this.The correct thing to do is to read the manual (either the R manual or your gcc manual). The R manual says 'AddressSanitizer (?ASan?) is a tool with similar aims to the memory checker in valgrind. It is available with suitable builds of gcc 4.8.0 or clang 3.1 and later on common Linux and OS X platforms.' '?UBSanitizer? is a tool for C/C++ source code selected by -fsanitize=undefined in suitable builds of clang, and GCC as from 4.9.0.' Note that including these capabilities and their runtimes is optional at least for clang (until recently Apple omitted them), so you need to check your own system's documentation. -- Brian D. Ripley, ripley at stats.ox.ac.uk Emeritus Professor of Applied Statistics, University of Oxford 1 South Parks Road, Oxford OX1 3TG, UK
Dear Prof. Ripley, Thank you for your answer. I think I am way over my head here. (Using Doker adds a level of complexity that I'm afraid I can't manage for now so I am happy with building Rdevel and using it in to run these tests). After building Rdevel with what I think are the correct options** (just to avoid mistakes I have also fully removed R from my system just before and insured that the following packages are all updated) apt-get install bash-completion bison debhelper default-jdk g++ gcc gfortran groff-base libblas-dev libbz2-dev libcairo2-dev libcurl4-openssl-dev libjpeg-dev liblapack-dev liblzma-dev libncurses5-dev libpango1.0-dev libpcre3-dev libpng-dev libreadline-dev libtiff5-dev libx11-dev libxt-dev mpack subversion tcl8.5-dev texinfo texlive-base texlive-extra-utils texlive-fonts-extra texlive-fonts-recommended texlive-generic-recommended texlive-latex-base texlive-latex-extra texlive-latex-recommended tk8.5-dev valgrind x11proto-core-dev xauth xdg-utils xfonts-base xvfb zlib1g-dev cd /tmp svn co http://svn.r-project.org/R/trunk R-devel cd /tmp/R-devel R_PAPERSIZE=letter R_BATCHSAVE="--no-save --no-restore" PAGER=/usr/bin/pager PERL=/usr/bin/perl R_UNZIPCMD=/usr/bin/unzip R_ZIPCMD=/usr/bin/zip R_PRINTCMD=/usr/bin/lpr LIBnn=lib AWK=/usr/bin/awk CFLAGS="-pipe -std=gnu99 -Wall -pedantic -O2" CXXFLAGS="-pipe -Wall -pedantic -O2" CC="gcc -fsanitize=address,undefined" CXX="g++ -fsanitize=address,undefined" CXX1X="g++ -fsanitize=address,undefined" FC="gfortran -fsanitize=address,undefined" F77="gfortran -fsanitize=address,undefined" ./configure --enable-R-shlib --without-blas --without-lapack --with-readline --without-recommended-packages --program-suffix=dev --disable-openmp make make install make clean But I'm not sure how to proceed from there. I tried the obvious thing: Rdevel CMD build my_offending_package Rdevel CMD check --as-cran my_offending_package But I have not been able to replicate the bug I see on cran: /usr/local/gcc5/lib/gcc/x86_64-unknown-linux-gnu/5.2.0/include/emmintrin.h:140:21: runtime error: load of misaligned address 0x61800007fc84 for type 'const double', which requires 8 byte alignment 0x61800007fc84: note: pointer points here 00 00 80 3f 00 00 80 3f 00 00 80 3f 00 00 80 3f 00 00 80 3f 00 00 80 3f 00 00 80 3f 00 00 80 3f **Though the original authors bear no responsibility for these scripts, I have found many of these commands on this file: https://github.com/rocker-org/r-devel-san/blob/master/Dockerfile On 2015-10-14 10:10, Prof Brian Ripley wrote:> On 13/10/2015 14:46, kaveh wrote: >> Dear All, >> >> I'm trying to implement the section of the manual pertaining to the >> gcc-ubsan test >> carried by CRAN on my local computer (ubuntu 14.04): >> >> http://www.stats.ox.ac.uk/pub/bdr/memtests/gcc-UBSAN/README.txt >> >> I was wondering whether someone could tell what the minimal version >> of the gcc tool chain needed to run the gcc-ASAN and gcc-UBSAN >> alignment >> tests on ones local computer is. CRAN seems to use gcc 5.2.0 to do >> these tests, >> but the current version of gcc shipped with ubuntu is 4.9.2 (to be >> updated to >> 5.1.0 with the 15.10 release latter this month). >> >> I hope this is the correct list to post this. > > The correct thing to do is to read the manual (either the R manual or > your gcc manual). The R manual says > > 'AddressSanitizer (?ASan?) is a tool with similar aims to the memory > checker in valgrind. It is available with suitable builds of gcc 4.8.0 > or clang 3.1 and later on common Linux and OS X platforms.' > > '?UBSanitizer? is a tool for C/C++ source code selected by > -fsanitize=undefined in suitable builds of clang, and GCC as from 4.9.0.' > > Note that including these capabilities and their runtimes is optional > at least for clang (until recently Apple omitted them), so you need to > check your own system's documentation. >
Possibly Parallel Threads
- gcc ubsan alignement test --minimal gcc version?
- gcc ubsan alignement test --minimal gcc version?
- possible error in rdevel with --enable-strict-barrier?
- Suggestions for how coroutines and UBSan codegen can play nice with one another?
- Suggestions for how coroutines and UBSan codegen can play nice with one another?