diff options
-rw-r--r-- | ui/build/config.go | 18 | ||||
-rw-r--r-- | ui/build/kati.go | 3 |
2 files changed, 16 insertions, 5 deletions
diff --git a/ui/build/config.go b/ui/build/config.go index f5007b1b..e21e1fab 100644 --- a/ui/build/config.go +++ b/ui/build/config.go @@ -319,13 +319,21 @@ func (c *configImpl) HostPrebuiltTag() string { } } -func (c *configImpl) PrebuiltBuildTool(name string) string { +func (c *configImpl) HostAsan() bool { if v, ok := c.environ.Get("SANITIZE_HOST"); ok { if sanitize := strings.Fields(v); inList("address", sanitize) { - asan := filepath.Join("prebuilts/build-tools", c.HostPrebuiltTag(), "asan/bin", name) - if _, err := os.Stat(asan); err == nil { - return asan - } + return true + } + } + return false +} + +func (c *configImpl) PrebuiltBuildTool(name string) string { + // (b/36182021) We're seeing rare ckati crashes, so always enable asan kati on the build servers. + if c.HostAsan() || (c.Dist() && name == "ckati") { + asan := filepath.Join("prebuilts/build-tools", c.HostPrebuiltTag(), "asan/bin", name) + if _, err := os.Stat(asan); err == nil { + return asan } } return filepath.Join("prebuilts/build-tools", c.HostPrebuiltTag(), "bin", name) diff --git a/ui/build/kati.go b/ui/build/kati.go index f29d0c19..972b5591 100644 --- a/ui/build/kati.go +++ b/ui/build/kati.go @@ -100,6 +100,9 @@ func runKati(ctx Context, config Config) { } cmd.Stderr = cmd.Stdout + // Kati leaks memory, so ensure leak detection is turned off + cmd.Environment.Set("ASAN_OPTIONS", "detect_leaks=0") + cmd.StartOrFatal() katiRewriteOutput(ctx, pipe) cmd.WaitOrFatal() |