Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set ASAN/UBSAN reporting output

I would like to run my unit test suite with -fsanitize=address,undefined and have all sanitizer errors be written to a report.txt file. By default all sanitizer errors get written to stdout, however the software also writes info to stdout so this makes it difficult to detect errors. I tried:

export ASAN_OPTIONS="log_path=asan.log"
./mytests

And I also tried calling the C API before running tests:

#include <sanitizer/asan_interface.h>

__sanitizer_set_report_path("/tmp/asan.log")

However neither seems to work, all errors just get written to stdout. I am using Debian testing:

root@94e239ad460a:~# gcc --version
gcc (Debian 6.1.1-11) 6.1.1 20160802
Copyright (C) 2016 Free Software Foundation, Inc.

Is there any alternative method that I can save the sanitizer error from my unit tests somewhere?

like image 219
Jeroen Ooms Avatar asked Oct 19 '22 01:10

Jeroen Ooms


2 Answers

Hm, I've successfully used log_path numerous times. If it does not work for you, please report a bug to ASan github (preferably with a minimal repro).

like image 50
yugr Avatar answered Oct 21 '22 16:10

yugr


I realize that my binaries were not having read permissions. A simple chmod 500 <exe_path> solved my problem.

like image 25
leocrimson Avatar answered Oct 21 '22 14:10

leocrimson