Hi Ilya, On Mon, Mar 16, 2020 at 10:49:26AM +0100, Tim Düsterhus wrote: > Ilya, > > Am 16.03.20 um 07:52 schrieb ???? ???????: > > we use clang because of its address sanitizer. I found gcc asan more noisy > > and less usable.
Going back to this, I spent the whole day trying to figure what broke on travis to finally find that it's clang's broken ASAN which generates bad code at -O2. Function b_alloc_margin() sees its "buf" pointer change from valid to null in the middle of the function while not being assigned. Just printing it or assigning it from itself is enough to stop the bug, I suspect it's doing something wrong with the register where it placed the pointer. I'm really fed up with this bogus address sanitizer, it has wasted a huge amount of time and patience trying to find bugs that did not exist and because of this yet-another fake one I haven't finished addressing a real one :-( Could we once for all disable this monster crap and mention in the commit message that it must never be turned on until it stops doing stupid things ? Sadly I couldn't find a way to detect it from within the code. I'd like to prevent haproxy from being built with this crap without explicit debug flags because the wrong code it produces triggers segfaults at runtime in random locations and as such it's extremely dangerous. There's definitely a risk that some people are not aware of its breakage and would build haproxy with it and run it on their production, which is scary. If anyone knows how to reliably detect it (ideally at build time), feel free to suggest! Thanks, Willy