[lld] r194545 - [PECOFF] Fix use-after-return.

Rick Foos rfoos at codeaurora.org
Wed Nov 13 11:41:34 PST 2013


Sorry for the delay,

Our problem with running the sanitizers is that the load average running 
under Ninja reached 146 and a short time after a system crash requiring 
calling someone to power cycle the box...

The address sanitizer by itself leaves a load average 40. This means the 
OS over 100% utilization, and is thrashing a bit. Load Average doesn't 
say what exactly is thrashing.

Ninja supports make's -j, and -l options. The -l maximum load average, 
is the key.

The load average should be less than the total number of cores 
(hyperthreads too) before Ninja launches another task.

A Load Average at or lower than 100%  technically should benefit 
performance, and maximize throughput. However, I will be happy if I 
don't have to call someone to power cycle the server :)

So the maximum load average of a 16 core machine with hyperthreads is 32 
(keeping it simple). This needs to be passed to all make's and Ninja 
build steps on that slave to maximize throughput.

For now, I'm looking at a minimal patch to include jobs and a new 
loadaverage variable for the sanitizers.

Longer term, all buildslaves should define maximum loadaverage, and all 
make/ninja steps should pass -j, and -l options.

Best Regards,
Rick

On 11/13/2013 11:21 AM, Sergey Matveev wrote:
> +kcc
>
>
> On Wed, Nov 13, 2013 at 6:41 AM, Shankar Easwaran 
> <shankare at codeaurora.org <mailto:shankare at codeaurora.org>> wrote:
>
>     Sorry for another indirection. Rick foos is working on it. I think
>     there is some good news here :)
>
>     Cced Rick + adding Galina,Dmitri.
>
>     Thanks
>
>     Shankar Easwaran
>
>
>     On 11/12/2013 8:37 PM, Rui Ueyama wrote:
>
>         Shankar tried to set it up recently.
>
>
>         On Tue, Nov 12, 2013 at 6:31 PM, Sean Silva <silvas at purdue.edu
>         <mailto:silvas at purdue.edu>> wrote:
>
>             Sanitizers?
>
>             There have been a couple of these sorts of bugs
>             recently... we really
>             ought to have some sanitizer bots...
>
>             -- Sean Silva
>
>
>             On Tue, Nov 12, 2013 at 9:21 PM, Rui Ueyama
>             <ruiu at google.com <mailto:ruiu at google.com>> wrote:
>
>                 Author: ruiu
>                 Date: Tue Nov 12 20:21:51 2013
>                 New Revision: 194545
>
>                 URL:
>                 http://llvm.org/viewvc/llvm-project?rev=194545&view=rev
>                 Log:
>                 [PECOFF] Fix use-after-return.
>
>                 Modified:
>                      lld/trunk/lib/Driver/WinLinkDriver.cpp
>
>                 Modified: lld/trunk/lib/Driver/WinLinkDriver.cpp
>                 URL:
>                 http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/WinLinkDriver.cpp?rev=194545&r1=194544&r2=194545&view=diff
>
>                 ==============================================================================
>                 --- lld/trunk/lib/Driver/WinLinkDriver.cpp (original)
>                 +++ lld/trunk/lib/Driver/WinLinkDriver.cpp Tue Nov 12
>                 20:21:51 2013
>                 @@ -842,7 +842,7 @@ WinLinkDriver::parse(int argc,
>                 const cha
>
>                       case OPT_INPUT:
>                        
>                 inputElements.push_back(std::unique_ptr<InputElement>(
>                 -          new PECOFFFileNode(ctx,
>                 inputArg->getValue())));
>                 +          new PECOFFFileNode(ctx,
>                 ctx.allocateString(inputArg->getValue()))));
>                         break;
>
>                   #define DEFINE_BOOLEAN_FLAG(name, setter) \
>                 @@ -892,9 +892,11 @@ WinLinkDriver::parse(int argc,
>                 const cha
>                     // start with a hypen or a slash. This is not
>                 compatible with link.exe
>                     // but useful for us to test lld on Unix.
>                     if (llvm::opt::Arg *dashdash =
>                 parsedArgs->getLastArg(OPT_DASH_DASH)) {
>                 -    for (const StringRef value : dashdash->getValues())
>                 -      inputElements.push_back(
>                 -          std::unique_ptr<InputElement>(new
>                 PECOFFFileNode(ctx, value)));
>                 +    for (const StringRef value : dashdash->getValues()) {
>                 +      std::unique_ptr<InputElement> elem(
>                 +          new PECOFFFileNode(ctx,
>                 ctx.allocateString(value)));
>                 +      inputElements.push_back(std::move(elem));
>                 +    }
>                     }
>
>                     // Add the libraries specified by /defaultlib
>                 unless they are already
>                 added
>
>
>                 _______________________________________________
>                 llvm-commits mailing list
>                 llvm-commits at cs.uiuc.edu <mailto:llvm-commits at cs.uiuc.edu>
>                 http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
>
>
>     -- 
>     Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
>     hosted by the Linux Foundation
>
>
>     _______________________________________________
>     llvm-commits mailing list
>     llvm-commits at cs.uiuc.edu <mailto:llvm-commits at cs.uiuc.edu>
>     http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


-- 
Rick Foos
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20131113/6da2861e/attachment.html>


More information about the llvm-commits mailing list