Hi Dominique!

On Mi, 25 Jan 2017, Dominique Pellé wrote:

> Christian Brabandt wrote:
> 
> > On Di, 24 Jan 2017, Christian Brabandt wrote:
> >
> >> On Di, 24 Jan 2017, Dominique Pellé wrote:
> >> > How about an address sanitizer build in Travis to catch
> >> > this kind of bugs earlier in CI?
> >
> > Here is a patch.
> >
> > Sample logfiles here:
> > https://travis-ci.org/chrisbra/vim/builds/194982196
> > This was with patch 8.0.225 which did abort on the mentioned test:
> > https://s3.amazonaws.com/archive.travis-ci.org/jobs/194982204/log.txt
> >
> > Best,
> > Christian
> 
> 
> Nice. Thank you!
> 
> Some remarks:
> 
> 1) regarding asan, we could use -O1 instead of -O0 to
> speed up the Jenkins job. This is the advice from the
> asan documentation:
> 
> === BEGIN QUOTE https://github.com/google/sanitizers/wiki/AddressSanitizer
> 
> In order to use AddressSanitizer you will need to
> compile and link your program using clang with
> the -fsanitize=address switch. To get a reasonable
> performance add -O1 or higher. To get nicer stack
> traces in error messages add -fno-omit-frame-pointer.
> === END QUOTE
> 
> 2)  I see that patch also adds a ubsan build.
> Unlike asan which crashes in case of error, ubsan does
> not crash and only prints a message on the terminal.
> So I suppose that CI build will be green in case of
> ubsan error. In fact, running vim tests normally gives
> at least one ubsan error when dividing by 0.0 in
> eval.c:4092:
> 
>  4090     /* We rely on the floating point library to handle divide
>  4091      * by zero to result in "inf" and not a crash. */
>  4092     f1 = f1 / f2;
> 
> If you search for "runtime error:", you can see those
> ubsan errors reported in the  log, despite the build
> being green:
> 
> https://s3.amazonaws.com/archive.travis-ci.org/jobs/194982205/log.txt
> 
> 3) We can also make ubsan report the stack of the error if we do
> export UBSAN_OTIONS=print_stacktrace=1. See:
> 
> https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html#stack-traces-and-report-symbolization
> 
> But I'm not sure that this option is available in old versions
> of clang. I see that Travis uses clang-3.4 which is quite old.

Okay, so how about that:

diff --git a/.travis.yml b/.travis.yml
index 543b033f6..d0da120b2 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -18,13 +18,16 @@ env:
     # Mac OSX build
   - BUILD=yes TEST=test COVERAGE=no FEATURES=huge SHADOWOPT= SRCDIR=./src 
CHECK_AUTOCONF=no
     "CONFOPT='--enable-perlinterp --enable-pythoninterp --enable-rubyinterp 
--enable-luainterp'"
+    # ASAN build
+  - BUILD=yes TEST=test SANITIZER_CFLAGS="-g -O1 -fsanitize=address 
-fno-omit-frame-pointer" FEATURES=huge SRCDIR=./src
+    "CONFOPT='--enable-perlinterp --enable-pythoninterp --enable-rubyinterp 
--enable-luainterp'"

 sudo: false

 git:
   depth: 1

-# instead of a 6*2*2 matrix (2*os + 2*compiler + 6*env),
+# instead of a 8*2*2 matrix (2*os + 2*compiler + 8*env),
 # exclude some builds on mac os x and linux
 # linux: 2*compiler + 5*env + mac: 2*compiler + 2*env
 matrix:
@@ -38,6 +41,9 @@ matrix:
     - os: osx
       env: BUILD=yes TEST=scripttests COVERAGE=yes CFLAGS=--coverage 
LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
             "CONFOPT='--enable-perlinterp --enable-pythoninterp 
--enable-python3interp --enable-rubyinterp --enable-luainterp'"
+    - os: osx
+      env: BUILD=yes TEST=test SANITIZER_CFLAGS="-g -O1 -fsanitize=address 
-fno-omit-frame-pointer" FEATURES=huge SRCDIR=./src
+            "CONFOPT='--enable-perlinterp --enable-pythoninterp 
--enable-rubyinterp --enable-luainterp'"
     - os: linux
       compiler: clang
       env: BUILD=no TEST=unittests COVERAGE=yes CFLAGS=--coverage 
LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=yes
@@ -45,6 +51,10 @@ matrix:
       compiler: clang
       env: BUILD=yes TEST=test COVERAGE=no FEATURES=small CONFOPT= SHADOWOPT= 
SRCDIR=./src CHECK_AUTOCONF=no
     - os: linux
+      compiler: gcc
+      env: BUILD=yes TEST=test SANITIZER_CFLAGS="-g -O1 -fsanitize=address 
-fno-omit-frame-pointer" FEATURES=huge SRCDIR=./src
+            "CONFOPT='--enable-perlinterp --enable-pythoninterp 
--enable-rubyinterp --enable-luainterp'"
+    - os: linux
       env: BUILD=yes TEST=test COVERAGE=no FEATURES=huge SHADOWOPT= 
SRCDIR=./src CHECK_AUTOCONF=no
             "CONFOPT='--enable-perlinterp --enable-pythoninterp 
--enable-rubyinterp --enable-luainterp'"



Mit freundlichen Grüßen
Christian
-- 
Stilblüten aus Polizeiberichten und Gerichtsverhandlungen:
Die alarmierte Feuerwehr hat an Ort und Stelle festgestellt, daß es
bei dem Feuer, daß bei einer Temperatur von 18 Grad C° verlief, zur
vollkommenen Verbrennung des Schobers kam.

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui