Re: Out-of-line memory checks

2014-04-21 Thread Yuri Gribov
Re-attaching updated implementation just in case. On Mon, Apr 21, 2014 at 10:33 AM, Yuri Gribov tetra2...@gmail.com wrote: So even though my implementation is slightly faster we're still getting a 70% perf hit. interesting. can you show the assembly (objdump -d) for __asan_load8 in both

Re: Out-of-line memory checks

2014-04-21 Thread Konstantin Serebryany
On Mon, Apr 21, 2014 at 1:03 PM, Yuri Gribov tetra2...@gmail.com wrote: You call __asan_report_load8 directly. This will only work if __asan_load8 does not have its own frame. You mean you don't want asan callbacks to be present in stacktraces? That too, but we also need to be able to unwind

Re: Out-of-line memory checks

2014-04-21 Thread Yuri Gribov
BTW note that we will suffer significant PLT penalty in sanitized shared libs. Don't use shared libs :) I don't ;) - it's all about the users. Solution here is obvious - throw in another static lib that would get linked into DSOs. But this would complicate driver of course. -Y -- You

Re: Out-of-line memory checks

2014-04-21 Thread Konstantin Serebryany
On Mon, Apr 21, 2014 at 2:29 PM, Yuri Gribov tetra2...@gmail.com wrote: Solution here is obvious - throw in another static lib that would get linked into DSOs. But this would complicate driver of course. immensely GCC with it's default dynamic runtime would suffer quite a bit... Only if the

Re: Out-of-line memory checks

2014-04-21 Thread Konstantin Serebryany
On Mon, Apr 21, 2014 at 3:31 PM, Yuri Gribov tetra2...@gmail.com wrote: GCC with it's default dynamic runtime would suffer quite a bit... Only if the out-line calls will be used (in clang, this is a workaround for a bad compile-time, we'll use out-line functions only when there are more than

Re: Out-of-line memory checks

2014-04-21 Thread Konstantin Serebryany
On Mon, Apr 21, 2014 at 7:10 PM, Yuri Gribov tetra2...@gmail.com wrote: asan may still emit inlined checks for things like 'long double' Is this intentional? Just not done yet. How about replacing these with a call to __asan_{load,store}N? Yep. --kcc -Y -- You received this message

Re: Out-of-line memory checks

2014-04-18 Thread Yuri Gribov
I wonder where such big difference is coming from. I'll examine perf when I finally get my hands on SPEC2006. You don't need SPEC, just run something small like bzip2. Ok, good to know. Here are my results for bunzipping a vmtouched 100M file: gcc: 0m6.315s clang: 0m5.570s clang

Re: Out-of-line memory checks

2014-04-17 Thread Konstantin Serebryany
Meanwhile we've made the first step for Out-of-line memory checks. http://llvm.org/viewvc/llvm-project?view=revisionrevision=206387 and http://llvm.org/viewvc/llvm-project?view=revisionrevision=206383 introduce a new hidden flag -mllvm -asan-instrumentation-with-call-threshold=N which will use

Re: Out-of-line memory checks

2014-04-17 Thread Konstantin Serebryany
470.lbm, 5.85, 3.00, 0.51 482.sphinx3, 3.55, 2.02, 0.57 --kcc On Thu, Apr 17, 2014 at 12:45 PM, Konstantin Serebryany konstantin.s.serebry...@gmail.com wrote: Meanwhile we've made the first step for Out-of-line memory checks. http

Re: Out-of-line memory checks

2014-04-17 Thread Yuri Gribov
Meanwhile we've made the first step for Out-of-line memory checks. Looks like an effort duplication, I've been working on this for the last couple of days. btw, I've run SPEC (test data, C only) and it shows that out-of-line instrumentation is 2x slower. I wonder whether this is due to PLT

Re: Out-of-line memory checks

2014-04-17 Thread Konstantin Serebryany
On Thu, Apr 17, 2014 at 3:36 PM, Yuri Gribov tetra2...@gmail.com wrote: Meanwhile we've made the first step for Out-of-line memory checks. Looks like an effort duplication, I've been working on this for the last couple of days. Sorry. btw, I've run SPEC (test data, C only) and it shows

Re: Out-of-line memory checks

2014-04-17 Thread Yuri Gribov
btw, I've run SPEC (test data, C only) and it shows that out-of-line instrumentation is 2x slower. I wonder whether this is due to PLT redirection. clang uses static asan-rt by default, no PLT. Agreed, this will only matter for sanitized shared libraries. I wonder where such big

Re: Out-of-line memory checks

2014-04-17 Thread Konstantin Serebryany
On Thu, Apr 17, 2014 at 4:56 PM, Yuri Gribov tetra2...@gmail.com wrote: btw, I've run SPEC (test data, C only) and it shows that out-of-line instrumentation is 2x slower. I wonder whether this is due to PLT redirection. clang uses static asan-rt by default, no PLT. Agreed, this

Re: Out-of-line memory checks

2014-03-31 Thread Evgeniy Stepanov
I don't think there are an short term plans for that. We can not use clang to compile linux kernel yet. It could be an interesting experiment. On Fri, Mar 28, 2014 at 8:44 PM, Yuri Gribov tetra2...@gmail.com wrote: All, I was wondering whether there are plans to add (optional) out-of-line

Re: Out-of-line memory checks

2014-03-31 Thread Yuri Gribov
That will add some more complexity to the build system. E.g. __asan_read1co will have to reside in a separate library. Yup. You probably want to implement them in hand-written assembly, because otherwise we'll get the same bad code generated by the same compiler. Sure, that goes w/o saying.

Out-of-line memory checks

2014-03-28 Thread Yuri Gribov
All, I was wondering whether there are plans to add (optional) out-of-line instrumentation of memory accesses i.e. use function calls like __asan_read1 instead of explicit instruction sequence to access shadow memory? AFAIK KernelSanitizer is already using this approach. Memory savings would be