ASan has a recover mode, -fsanitize=address -fsanitize-recover=address and then ASAN_OPTIONS=halt_on_error=0. It may be not as well supported as the default mode though.
On Tue, Apr 5, 2016 at 9:24 AM, <[email protected]> wrote: > Gotcha. Thank you! > > On Tuesday, April 5, 2016 at 12:02:45 PM UTC-4, Dmitry Vyukov wrote: >> >> On Tue, Apr 5, 2016 at 5:54 PM, <[email protected]> wrote: >> > >> > >> > On Tuesday, April 5, 2016 at 9:40:26 AM UTC-4, Dmitry Vyukov wrote: >> >> >> >> On Tue, Apr 5, 2016 at 3:33 PM, <[email protected]> wrote: >> >> > Hi, I'm running ASAN on a multiprocess workload, specifically an MPI >> >> > program. ASAN seems to handle this fairly well, by printing the >> >> > process >> >> > number at the beginning of each section. However, the outputs from >> >> > each >> >> > process sometimes get overlapped, and the callstacks are therefore >> >> > sometimes >> >> > overlapping a bit. One feature that I would like (which the valgrind >> >> > tools >> >> > have) is to see the output to different log files, one per process. >> >> > One >> >> > way >> >> > this could work is with a --log-file option where the filename is >> >> > specified >> >> > as such: --log-file=asan.%p.out (where %p is filled in with the pid). >> >> > >> >> > I haven't looked at the ASAN source yet, but I did scour the docs and >> >> > it >> >> > doesn't seem like this is available in >> >> > https://github.com/google/sanitizers/wiki/AddressSanitizerFlags >> >> > >> >> > Does this option happen to exist? >> >> >> >> >> >> Hi Mark, >> >> >> >> The flag is log_path. Added it to wiki. >> >> >> >> >> > >> > Hi Dmitry, thank you; this solves this problem. >> > >> >> > Second question: Is it possible to see ASAN output on a per-thread >> >> > level? >> >> > Right now outputs seem to be aggregated on a per-process basis, even >> >> > if >> >> > each >> >> > process has multiple threads. >> >> >> >> No, there is no such option. >> >> Asan terminates process on first error, so what output do you mean? >> > >> > >> > >> > If a given process p has t threads, I'd ideally like to see these the >> > memory >> > issues broken out on a per-thread basis. TSAN labels different threads >> > with >> > T1, T2, T3, etc. to show where race conditions, etc. occur. However, >> > ASAN >> >> You can assign custom names to threads with pthread_setname_np and >> prctl(PR_SET_NAME). >> >> > seems to lump together issues for all threads of a given process. Is >> > there >> > any way to see more detail about which thread had which memory issue? >> > Please >> > note that the only memory issue I have at this point is from LSAN >> > (leaks) -- >> > all other memory issues are fixed for me at this point. >> >> Leaks are not tied to threads. They are process wide. So it is not >> possible to sort them by threads. >> >> For other bugs, like use-after-free, asan will terminate process >> instantly. So there is no question of sorting either. >> >> >> > Additional related question: Assuming the above situation (all ASAN >> > issues >> > other than leaks fixed), and assuming the program runs successfully to >> > the >> > end (correct return code, output, etc.), does LSAN do a full leak check >> > on >> > the entire program before returning its leak report, or does it >> > sometimes >> > exit early? I'm comparing two versions of a program, and one version >> > apparently leaks 70% more memory than the other version. I would like to >> > know if these totals are reliable and representative of the entire >> > program, >> > or if this could simply be due to the fact that LSAN is exiting early in >> > one >> > case. >> >> I don't know. It well can be that lsan has some limit on number of >> reported objects. So if you have lots of leaks, the report will be >> some sampling. But I am not sure. > > -- > You received this message because you are subscribed to the Google Groups > "address-sanitizer" 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. -- You received this message because you are subscribed to the Google Groups "address-sanitizer" 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.
