[Rd] gcc ubsan alignement test --minimal gcc version?

kaveh vakili.kaveh.email at gmail.com
Wed Oct 14 10:36:16 CEST 2015

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 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:

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.

More information about the R-devel mailing list