Thread overview
ASan blacklist
Dec 27, 2017
Johan Engelen
Dec 31, 2017
kinke
Dec 31, 2017
Johan Engelen
Dec 31, 2017
Seb
Jan 17, 2018
Kagamin
Feb 27, 2018
Johan Engelen
December 27, 2017
Hi all,
  I want to add ASan blacklists to our repo as Jon Degenhardt suggested, so we can collaborate on working towards ASan-enabled standard libraries.
What would you prefer?
Option 1:  create separate blacklists for phobos and druntime, and put them in the submodules
Option 2: one blacklist for all, put it in LDC's runtime directory.
Option 3: something else.

Thanks for feedback,
  Johan

December 31, 2017
On Wednesday, 27 December 2017 at 19:32:25 UTC, Johan Engelen wrote:
> Hi all,
>   I want to add ASan blacklists to our repo as Jon Degenhardt suggested, so we can collaborate on working towards ASan-enabled standard libraries.
> What would you prefer?
> Option 1:  create separate blacklists for phobos and druntime, and put them in the submodules
> Option 2: one blacklist for all, put it in LDC's runtime directory.
> Option 3: something else.
>
> Thanks for feedback,
>   Johan

No strong opinion about this; I think it also depends on the number of blacklist entries. I'd expect way more entries for druntime; in case there'd be none for Phobos at all, I'd put them in the druntime repo.
December 31, 2017
On Sunday, 31 December 2017 at 12:20:32 UTC, kinke wrote:
> On Wednesday, 27 December 2017 at 19:32:25 UTC, Johan Engelen wrote:
>> Hi all,
>>   I want to add ASan blacklists to our repo as Jon Degenhardt suggested, so we can collaborate on working towards ASan-enabled standard libraries.
>> What would you prefer?
>> Option 1:  create separate blacklists for phobos and druntime, and put them in the submodules
>> Option 2: one blacklist for all, put it in LDC's runtime directory.
>> Option 3: something else.
>
> No strong opinion about this; I think it also depends on the number of blacklist entries. I'd expect way more entries for druntime; in case there'd be none for Phobos at all, I'd put them in the druntime repo.

After thinking a bit more about it, I feel the blacklist should go into the repo that contains the functions it is blacklisting. That way, the codefix+blacklist-removal  (or code annotation and blacklist update from unchecked section to checked) happens in one commit, instead of two commits in different repos.

Indeed, I also expect that eventually there shouldn't be any blacklist necessary for Phobos code. So then we'll just remove it.

(btw, I think this should be upstreamed at some point; druntime and Phobos upstream should have permanent ASan testing upstream too)

-Johan

December 31, 2017
On Sunday, 31 December 2017 at 13:10:50 UTC, Johan Engelen wrote:
> (btw, I think this should be upstreamed at some point; druntime and Phobos upstream should have permanent ASan testing upstream too)

Yes, that would be really cool! Just let me/us know in #druntime or #dmd what needs to happen for this to become reality.
January 17, 2018
Huh? ASan is only good for languages without bound checking and mandatory mmm like C. How is it useful for D?
February 27, 2018
On Wednesday, 27 December 2017 at 19:32:25 UTC, Johan Engelen wrote:
> Hi all,
>   I want to add ASan blacklists to our repo as Jon Degenhardt suggested, so we can collaborate on working towards ASan-enabled standard libraries.

I've picked this task up again.
The current blacklist is... blacklisting pretty much everything :) But then I can get all druntime tests to pass, and also almost all Phobos tests (I think the failures are unrelated).
Note: tests need to be run with env variable ASAN_OPTIONS=allocator_may_return_null=1.

```
fun:_D*callWithStackShell*
fun:_D*getcacheinfoCPUID2*

# Blanket blacklist druntime module trees
fun:_D2gc*
fun:_D4core*
fun:_D4rt*
fun:_D6object*
# Blacklist extern(C) druntime functions
fun:_thread_scanAll
fun:*_d_array*
fun:*_d_alloc*
fun:*_d_new*
fun:*_d_del*
fun:*_d_critical*
fun:*_d_eh*
fun:*_d_throw*

# Blanket blacklist Phobos
fun:_D3std*
```

Hope to put this in place soon, then add a CI job with it, and then the fun can start :-)

Cheers,
  Johan