[libwebp] Add sanitizer builders

Change-Id: Ia7dd1e5ff1fc0071b158a1dad11e2280bd8f1c7e
Bug: b:185520507
Reviewed-on: https://chromium-review.googlesource.com/c/codecs/infra/+/3245859
Commit-Queue: Roberto Alanis Baez <alanisbaez@google.com>
Reviewed-by: James Zern <jzern@google.com>
diff --git a/infra/config/generated/commit-queue.cfg b/infra/config/generated/commit-queue.cfg
index 56e6da1..943c6dd 100644
--- a/infra/config/generated/commit-queue.cfg
+++ b/infra/config/generated/commit-queue.cfg
@@ -554,6 +554,12 @@
       builders {
         name: "open-codecs/try/libwebp-test-x86_64-w64-mingw32"
       }
+      builders {
+        name: "open-codecs/try/libwebp-x86_64-address-sanitizer"
+      }
+      builders {
+        name: "open-codecs/try/libwebp-x86_64-thread-sanitizer"
+      }
       retry_config {
         single_quota: 1
         global_quota: 2
diff --git a/infra/config/generated/cr-buildbucket.cfg b/infra/config/generated/cr-buildbucket.cfg
index a4fc69f..4c9cf6f 100644
--- a/infra/config/generated/cr-buildbucket.cfg
+++ b/infra/config/generated/cr-buildbucket.cfg
@@ -106,6 +106,594 @@
       }
     }
     builders {
+      name: "libwebp-sanitizer-x86-cfi"
+      swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "cpu:x86-64"
+      dimensions: "os:Ubuntu"
+      dimensions: "pool:luci.open-codecs.ci"
+      exe {
+        cipd_package: "infra/recipe_bundles/chromium.googlesource.com/codecs/infra"
+        cipd_version: "refs/heads/main"
+        cmd: "luciexe"
+      }
+      properties:
+        '{'
+        '  "$codecs/prerequisites": {'
+        '    "cipd_package": []'
+        '  },'
+        '  "$codecs/script_wrapper": {'
+        '    "script_parser": ['
+        '      {'
+        '        "warnings": {'
+        '          "thresholds": 0'
+        '        }'
+        '      },'
+        '      {'
+        '        "runtime errors": {'
+        '          "thresholds": 0'
+        '        }'
+        '      }'
+        '    ]'
+        '  },'
+        '  "recipe": "run_infra_script",'
+        '  "script_arg": ['
+        '    "x86",'
+        '    "cfi",'
+        '    "enabled"'
+        '  ],'
+        '  "script_name": "run_sanitizer_tests.sh"'
+        '}'
+      execution_timeout_secs: 2700
+      service_account: "open-codecs-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
+      experiments {
+        key: "luci.recipes.use_python3"
+        value: 100
+      }
+      experiments {
+        key: "luci.use_realms"
+        value: 100
+      }
+    }
+    builders {
+      name: "libwebp-sanitizer-x86-cfi-disabled"
+      swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "cpu:x86-64"
+      dimensions: "os:Ubuntu"
+      dimensions: "pool:luci.open-codecs.ci"
+      exe {
+        cipd_package: "infra/recipe_bundles/chromium.googlesource.com/codecs/infra"
+        cipd_version: "refs/heads/main"
+        cmd: "luciexe"
+      }
+      properties:
+        '{'
+        '  "$codecs/prerequisites": {'
+        '    "cipd_package": []'
+        '  },'
+        '  "$codecs/script_wrapper": {'
+        '    "script_parser": ['
+        '      {'
+        '        "warnings": {'
+        '          "thresholds": 0'
+        '        }'
+        '      },'
+        '      {'
+        '        "runtime errors": {'
+        '          "thresholds": 0'
+        '        }'
+        '      }'
+        '    ]'
+        '  },'
+        '  "recipe": "run_infra_script",'
+        '  "script_arg": ['
+        '    "x86",'
+        '    "cfi",'
+        '    "disabled"'
+        '  ],'
+        '  "script_name": "run_sanitizer_tests.sh"'
+        '}'
+      execution_timeout_secs: 2700
+      service_account: "open-codecs-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
+      experiments {
+        key: "luci.recipes.use_python3"
+        value: 100
+      }
+      experiments {
+        key: "luci.use_realms"
+        value: 100
+      }
+    }
+    builders {
+      name: "libwebp-sanitizer-x86-integer"
+      swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "cpu:x86-64"
+      dimensions: "os:Ubuntu"
+      dimensions: "pool:luci.open-codecs.ci"
+      exe {
+        cipd_package: "infra/recipe_bundles/chromium.googlesource.com/codecs/infra"
+        cipd_version: "refs/heads/main"
+        cmd: "luciexe"
+      }
+      properties:
+        '{'
+        '  "$codecs/prerequisites": {'
+        '    "cipd_package": []'
+        '  },'
+        '  "$codecs/script_wrapper": {'
+        '    "script_parser": ['
+        '      {'
+        '        "warnings": {'
+        '          "thresholds": 0'
+        '        }'
+        '      },'
+        '      {'
+        '        "runtime errors": {'
+        '          "thresholds": 0'
+        '        }'
+        '      }'
+        '    ]'
+        '  },'
+        '  "recipe": "run_infra_script",'
+        '  "script_arg": ['
+        '    "x86",'
+        '    "integer",'
+        '    "enabled"'
+        '  ],'
+        '  "script_name": "run_sanitizer_tests.sh"'
+        '}'
+      execution_timeout_secs: 2700
+      service_account: "open-codecs-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
+      experiments {
+        key: "luci.recipes.use_python3"
+        value: 100
+      }
+      experiments {
+        key: "luci.use_realms"
+        value: 100
+      }
+    }
+    builders {
+      name: "libwebp-sanitizer-x86-integer-disabled"
+      swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "cpu:x86-64"
+      dimensions: "os:Ubuntu"
+      dimensions: "pool:luci.open-codecs.ci"
+      exe {
+        cipd_package: "infra/recipe_bundles/chromium.googlesource.com/codecs/infra"
+        cipd_version: "refs/heads/main"
+        cmd: "luciexe"
+      }
+      properties:
+        '{'
+        '  "$codecs/prerequisites": {'
+        '    "cipd_package": []'
+        '  },'
+        '  "$codecs/script_wrapper": {'
+        '    "script_parser": ['
+        '      {'
+        '        "warnings": {'
+        '          "thresholds": 0'
+        '        }'
+        '      },'
+        '      {'
+        '        "runtime errors": {'
+        '          "thresholds": 0'
+        '        }'
+        '      }'
+        '    ]'
+        '  },'
+        '  "recipe": "run_infra_script",'
+        '  "script_arg": ['
+        '    "x86",'
+        '    "integer",'
+        '    "disabled"'
+        '  ],'
+        '  "script_name": "run_sanitizer_tests.sh"'
+        '}'
+      execution_timeout_secs: 2700
+      service_account: "open-codecs-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
+      experiments {
+        key: "luci.recipes.use_python3"
+        value: 100
+      }
+      experiments {
+        key: "luci.use_realms"
+        value: 100
+      }
+    }
+    builders {
+      name: "libwebp-sanitizer-x86-undefined"
+      swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "cpu:x86-64"
+      dimensions: "os:Ubuntu"
+      dimensions: "pool:luci.open-codecs.ci"
+      exe {
+        cipd_package: "infra/recipe_bundles/chromium.googlesource.com/codecs/infra"
+        cipd_version: "refs/heads/main"
+        cmd: "luciexe"
+      }
+      properties:
+        '{'
+        '  "$codecs/prerequisites": {'
+        '    "cipd_package": []'
+        '  },'
+        '  "$codecs/script_wrapper": {'
+        '    "script_parser": ['
+        '      {'
+        '        "warnings": {'
+        '          "thresholds": 0'
+        '        }'
+        '      },'
+        '      {'
+        '        "runtime errors": {'
+        '          "thresholds": 0'
+        '        }'
+        '      }'
+        '    ]'
+        '  },'
+        '  "recipe": "run_infra_script",'
+        '  "script_arg": ['
+        '    "x86",'
+        '    "undefined",'
+        '    "enabled"'
+        '  ],'
+        '  "script_name": "run_sanitizer_tests.sh"'
+        '}'
+      execution_timeout_secs: 2700
+      service_account: "open-codecs-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
+      experiments {
+        key: "luci.recipes.use_python3"
+        value: 100
+      }
+      experiments {
+        key: "luci.use_realms"
+        value: 100
+      }
+    }
+    builders {
+      name: "libwebp-sanitizer-x86-undefined-disabled"
+      swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "cpu:x86-64"
+      dimensions: "os:Ubuntu"
+      dimensions: "pool:luci.open-codecs.ci"
+      exe {
+        cipd_package: "infra/recipe_bundles/chromium.googlesource.com/codecs/infra"
+        cipd_version: "refs/heads/main"
+        cmd: "luciexe"
+      }
+      properties:
+        '{'
+        '  "$codecs/prerequisites": {'
+        '    "cipd_package": []'
+        '  },'
+        '  "$codecs/script_wrapper": {'
+        '    "script_parser": ['
+        '      {'
+        '        "warnings": {'
+        '          "thresholds": 0'
+        '        }'
+        '      },'
+        '      {'
+        '        "runtime errors": {'
+        '          "thresholds": 0'
+        '        }'
+        '      }'
+        '    ]'
+        '  },'
+        '  "recipe": "run_infra_script",'
+        '  "script_arg": ['
+        '    "x86",'
+        '    "undefined",'
+        '    "disabled"'
+        '  ],'
+        '  "script_name": "run_sanitizer_tests.sh"'
+        '}'
+      execution_timeout_secs: 2700
+      service_account: "open-codecs-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
+      experiments {
+        key: "luci.recipes.use_python3"
+        value: 100
+      }
+      experiments {
+        key: "luci.use_realms"
+        value: 100
+      }
+    }
+    builders {
+      name: "libwebp-sanitizer-x86_64-cfi"
+      swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "cpu:x86-64"
+      dimensions: "os:Ubuntu"
+      dimensions: "pool:luci.open-codecs.ci"
+      exe {
+        cipd_package: "infra/recipe_bundles/chromium.googlesource.com/codecs/infra"
+        cipd_version: "refs/heads/main"
+        cmd: "luciexe"
+      }
+      properties:
+        '{'
+        '  "$codecs/prerequisites": {'
+        '    "cipd_package": []'
+        '  },'
+        '  "$codecs/script_wrapper": {'
+        '    "script_parser": ['
+        '      {'
+        '        "warnings": {'
+        '          "thresholds": 0'
+        '        }'
+        '      },'
+        '      {'
+        '        "runtime errors": {'
+        '          "thresholds": 0'
+        '        }'
+        '      }'
+        '    ]'
+        '  },'
+        '  "recipe": "run_infra_script",'
+        '  "script_arg": ['
+        '    "x86_64",'
+        '    "cfi",'
+        '    "enabled"'
+        '  ],'
+        '  "script_name": "run_sanitizer_tests.sh"'
+        '}'
+      execution_timeout_secs: 2700
+      service_account: "open-codecs-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
+      experiments {
+        key: "luci.recipes.use_python3"
+        value: 100
+      }
+      experiments {
+        key: "luci.use_realms"
+        value: 100
+      }
+    }
+    builders {
+      name: "libwebp-sanitizer-x86_64-cfi-disabled"
+      swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "cpu:x86-64"
+      dimensions: "os:Ubuntu"
+      dimensions: "pool:luci.open-codecs.ci"
+      exe {
+        cipd_package: "infra/recipe_bundles/chromium.googlesource.com/codecs/infra"
+        cipd_version: "refs/heads/main"
+        cmd: "luciexe"
+      }
+      properties:
+        '{'
+        '  "$codecs/prerequisites": {'
+        '    "cipd_package": []'
+        '  },'
+        '  "$codecs/script_wrapper": {'
+        '    "script_parser": ['
+        '      {'
+        '        "warnings": {'
+        '          "thresholds": 0'
+        '        }'
+        '      },'
+        '      {'
+        '        "runtime errors": {'
+        '          "thresholds": 0'
+        '        }'
+        '      }'
+        '    ]'
+        '  },'
+        '  "recipe": "run_infra_script",'
+        '  "script_arg": ['
+        '    "x86_64",'
+        '    "cfi",'
+        '    "disabled"'
+        '  ],'
+        '  "script_name": "run_sanitizer_tests.sh"'
+        '}'
+      execution_timeout_secs: 2700
+      service_account: "open-codecs-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
+      experiments {
+        key: "luci.recipes.use_python3"
+        value: 100
+      }
+      experiments {
+        key: "luci.use_realms"
+        value: 100
+      }
+    }
+    builders {
+      name: "libwebp-sanitizer-x86_64-integer"
+      swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "cpu:x86-64"
+      dimensions: "os:Ubuntu"
+      dimensions: "pool:luci.open-codecs.ci"
+      exe {
+        cipd_package: "infra/recipe_bundles/chromium.googlesource.com/codecs/infra"
+        cipd_version: "refs/heads/main"
+        cmd: "luciexe"
+      }
+      properties:
+        '{'
+        '  "$codecs/prerequisites": {'
+        '    "cipd_package": []'
+        '  },'
+        '  "$codecs/script_wrapper": {'
+        '    "script_parser": ['
+        '      {'
+        '        "warnings": {'
+        '          "thresholds": 0'
+        '        }'
+        '      },'
+        '      {'
+        '        "runtime errors": {'
+        '          "thresholds": 0'
+        '        }'
+        '      }'
+        '    ]'
+        '  },'
+        '  "recipe": "run_infra_script",'
+        '  "script_arg": ['
+        '    "x86_64",'
+        '    "integer",'
+        '    "enabled"'
+        '  ],'
+        '  "script_name": "run_sanitizer_tests.sh"'
+        '}'
+      execution_timeout_secs: 2700
+      service_account: "open-codecs-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
+      experiments {
+        key: "luci.recipes.use_python3"
+        value: 100
+      }
+      experiments {
+        key: "luci.use_realms"
+        value: 100
+      }
+    }
+    builders {
+      name: "libwebp-sanitizer-x86_64-integer-disabled"
+      swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "cpu:x86-64"
+      dimensions: "os:Ubuntu"
+      dimensions: "pool:luci.open-codecs.ci"
+      exe {
+        cipd_package: "infra/recipe_bundles/chromium.googlesource.com/codecs/infra"
+        cipd_version: "refs/heads/main"
+        cmd: "luciexe"
+      }
+      properties:
+        '{'
+        '  "$codecs/prerequisites": {'
+        '    "cipd_package": []'
+        '  },'
+        '  "$codecs/script_wrapper": {'
+        '    "script_parser": ['
+        '      {'
+        '        "warnings": {'
+        '          "thresholds": 0'
+        '        }'
+        '      },'
+        '      {'
+        '        "runtime errors": {'
+        '          "thresholds": 0'
+        '        }'
+        '      }'
+        '    ]'
+        '  },'
+        '  "recipe": "run_infra_script",'
+        '  "script_arg": ['
+        '    "x86_64",'
+        '    "integer",'
+        '    "disabled"'
+        '  ],'
+        '  "script_name": "run_sanitizer_tests.sh"'
+        '}'
+      execution_timeout_secs: 2700
+      service_account: "open-codecs-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
+      experiments {
+        key: "luci.recipes.use_python3"
+        value: 100
+      }
+      experiments {
+        key: "luci.use_realms"
+        value: 100
+      }
+    }
+    builders {
+      name: "libwebp-sanitizer-x86_64-undefined"
+      swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "cpu:x86-64"
+      dimensions: "os:Ubuntu"
+      dimensions: "pool:luci.open-codecs.ci"
+      exe {
+        cipd_package: "infra/recipe_bundles/chromium.googlesource.com/codecs/infra"
+        cipd_version: "refs/heads/main"
+        cmd: "luciexe"
+      }
+      properties:
+        '{'
+        '  "$codecs/prerequisites": {'
+        '    "cipd_package": []'
+        '  },'
+        '  "$codecs/script_wrapper": {'
+        '    "script_parser": ['
+        '      {'
+        '        "warnings": {'
+        '          "thresholds": 0'
+        '        }'
+        '      },'
+        '      {'
+        '        "runtime errors": {'
+        '          "thresholds": 0'
+        '        }'
+        '      }'
+        '    ]'
+        '  },'
+        '  "recipe": "run_infra_script",'
+        '  "script_arg": ['
+        '    "x86_64",'
+        '    "undefined",'
+        '    "enabled"'
+        '  ],'
+        '  "script_name": "run_sanitizer_tests.sh"'
+        '}'
+      execution_timeout_secs: 2700
+      service_account: "open-codecs-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
+      experiments {
+        key: "luci.recipes.use_python3"
+        value: 100
+      }
+      experiments {
+        key: "luci.use_realms"
+        value: 100
+      }
+    }
+    builders {
+      name: "libwebp-sanitizer-x86_64-undefined-disabled"
+      swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "cpu:x86-64"
+      dimensions: "os:Ubuntu"
+      dimensions: "pool:luci.open-codecs.ci"
+      exe {
+        cipd_package: "infra/recipe_bundles/chromium.googlesource.com/codecs/infra"
+        cipd_version: "refs/heads/main"
+        cmd: "luciexe"
+      }
+      properties:
+        '{'
+        '  "$codecs/prerequisites": {'
+        '    "cipd_package": []'
+        '  },'
+        '  "$codecs/script_wrapper": {'
+        '    "script_parser": ['
+        '      {'
+        '        "warnings": {'
+        '          "thresholds": 0'
+        '        }'
+        '      },'
+        '      {'
+        '        "runtime errors": {'
+        '          "thresholds": 0'
+        '        }'
+        '      }'
+        '    ]'
+        '  },'
+        '  "recipe": "run_infra_script",'
+        '  "script_arg": ['
+        '    "x86_64",'
+        '    "undefined",'
+        '    "disabled"'
+        '  ],'
+        '  "script_name": "run_sanitizer_tests.sh"'
+        '}'
+      execution_timeout_secs: 2700
+      service_account: "open-codecs-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
+      experiments {
+        key: "luci.recipes.use_python3"
+        value: 100
+      }
+      experiments {
+        key: "luci.use_realms"
+        value: 100
+      }
+    }
+    builders {
       name: "libwebp2-linux"
       swarming_host: "chromium-swarm.appspot.com"
       dimensions: "cpu:x86-64"
@@ -9816,6 +10404,134 @@
       }
     }
     builders {
+      name: "libwebp-x86_64-address-sanitizer"
+      swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "cpu:x86-64"
+      dimensions: "os:Ubuntu"
+      dimensions: "pool:luci.open-codecs.try"
+      exe {
+        cipd_package: "infra/recipe_bundles/chromium.googlesource.com/codecs/infra"
+        cipd_version: "refs/heads/main"
+        cmd: "luciexe"
+      }
+      properties:
+        '{'
+        '  "$codecs/prerequisites": {'
+        '    "cipd_package": ['
+        '      {'
+        '        "dest": "android-ndk",'
+        '        "package_path": "infra/recipe_bundles/chromium.googlesource.com/codecs/infra/android-ndk",'
+        '        "version": "latest"'
+        '      },'
+        '      {'
+        '        "dest": "mips-img-linux-gnu/bin",'
+        '        "package_path": "infra/recipe_bundles/chromium.googlesource.com/codecs/infra/mips-img-linux-gnu",'
+        '        "version": "latest"'
+        '      },'
+        '      {'
+        '        "dest": "mips-mti-linux-gnu/bin",'
+        '        "package_path": "infra/recipe_bundles/chromium.googlesource.com/codecs/infra/mips-mti-linux-gnu",'
+        '        "version": "latest"'
+        '      }'
+        '    ]'
+        '  },'
+        '  "$codecs/script_wrapper": {'
+        '    "script_parser": ['
+        '      {'
+        '        "warnings": {'
+        '          "thresholds": 0'
+        '        }'
+        '      },'
+        '      {'
+        '        "runtime errors": {'
+        '          "thresholds": 0'
+        '        }'
+        '      }'
+        '    ]'
+        '  },'
+        '  "recipe": "run_infra_script",'
+        '  "script_arg": ['
+        '    "x86_64",'
+        '    "address"'
+        '  ],'
+        '  "script_name": "run_sanitizer_tests.sh"'
+        '}'
+      execution_timeout_secs: 2700
+      service_account: "open-codecs-try-builder@chops-service-accounts.iam.gserviceaccount.com"
+      experiments {
+        key: "luci.recipes.use_python3"
+        value: 100
+      }
+      experiments {
+        key: "luci.use_realms"
+        value: 100
+      }
+    }
+    builders {
+      name: "libwebp-x86_64-thread-sanitizer"
+      swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "cpu:x86-64"
+      dimensions: "os:Ubuntu"
+      dimensions: "pool:luci.open-codecs.try"
+      exe {
+        cipd_package: "infra/recipe_bundles/chromium.googlesource.com/codecs/infra"
+        cipd_version: "refs/heads/main"
+        cmd: "luciexe"
+      }
+      properties:
+        '{'
+        '  "$codecs/prerequisites": {'
+        '    "cipd_package": ['
+        '      {'
+        '        "dest": "android-ndk",'
+        '        "package_path": "infra/recipe_bundles/chromium.googlesource.com/codecs/infra/android-ndk",'
+        '        "version": "latest"'
+        '      },'
+        '      {'
+        '        "dest": "mips-img-linux-gnu/bin",'
+        '        "package_path": "infra/recipe_bundles/chromium.googlesource.com/codecs/infra/mips-img-linux-gnu",'
+        '        "version": "latest"'
+        '      },'
+        '      {'
+        '        "dest": "mips-mti-linux-gnu/bin",'
+        '        "package_path": "infra/recipe_bundles/chromium.googlesource.com/codecs/infra/mips-mti-linux-gnu",'
+        '        "version": "latest"'
+        '      }'
+        '    ]'
+        '  },'
+        '  "$codecs/script_wrapper": {'
+        '    "script_parser": ['
+        '      {'
+        '        "warnings": {'
+        '          "thresholds": 0'
+        '        }'
+        '      },'
+        '      {'
+        '        "runtime errors": {'
+        '          "thresholds": 0'
+        '        }'
+        '      }'
+        '    ]'
+        '  },'
+        '  "recipe": "run_infra_script",'
+        '  "script_arg": ['
+        '    "x86_64",'
+        '    "thread"'
+        '  ],'
+        '  "script_name": "run_sanitizer_tests.sh"'
+        '}'
+      execution_timeout_secs: 2700
+      service_account: "open-codecs-try-builder@chops-service-accounts.iam.gserviceaccount.com"
+      experiments {
+        key: "luci.recipes.use_python3"
+        value: 100
+      }
+      experiments {
+        key: "luci.use_realms"
+        value: 100
+      }
+    }
+    builders {
       name: "libwebp2-patch-check"
       swarming_host: "chromium-swarm.appspot.com"
       dimensions: "cpu:x86-64"
diff --git a/infra/config/generated/luci-milo.cfg b/infra/config/generated/luci-milo.cfg
index 325094d..ba08ba2 100644
--- a/infra/config/generated/luci-milo.cfg
+++ b/infra/config/generated/luci-milo.cfg
@@ -19,6 +19,54 @@
     category: "Linux|18"
   }
   builders {
+    name: "buildbucket/luci.open-codecs.ci/libwebp-sanitizer-x86-cfi"
+    category: "Linux|18"
+  }
+  builders {
+    name: "buildbucket/luci.open-codecs.ci/libwebp-sanitizer-x86-cfi-disabled"
+    category: "Linux|18"
+  }
+  builders {
+    name: "buildbucket/luci.open-codecs.ci/libwebp-sanitizer-x86-integer"
+    category: "Linux|18"
+  }
+  builders {
+    name: "buildbucket/luci.open-codecs.ci/libwebp-sanitizer-x86-integer-disabled"
+    category: "Linux|18"
+  }
+  builders {
+    name: "buildbucket/luci.open-codecs.ci/libwebp-sanitizer-x86-undefined"
+    category: "Linux|18"
+  }
+  builders {
+    name: "buildbucket/luci.open-codecs.ci/libwebp-sanitizer-x86-undefined-disabled"
+    category: "Linux|18"
+  }
+  builders {
+    name: "buildbucket/luci.open-codecs.ci/libwebp-sanitizer-x86_64-cfi"
+    category: "Linux|18"
+  }
+  builders {
+    name: "buildbucket/luci.open-codecs.ci/libwebp-sanitizer-x86_64-cfi-disabled"
+    category: "Linux|18"
+  }
+  builders {
+    name: "buildbucket/luci.open-codecs.ci/libwebp-sanitizer-x86_64-integer"
+    category: "Linux|18"
+  }
+  builders {
+    name: "buildbucket/luci.open-codecs.ci/libwebp-sanitizer-x86_64-integer-disabled"
+    category: "Linux|18"
+  }
+  builders {
+    name: "buildbucket/luci.open-codecs.ci/libwebp-sanitizer-x86_64-undefined"
+    category: "Linux|18"
+  }
+  builders {
+    name: "buildbucket/luci.open-codecs.ci/libwebp-sanitizer-x86_64-undefined-disabled"
+    category: "Linux|18"
+  }
+  builders {
     name: "buildbucket/luci.open-codecs.ci/libwebp2-linux"
     category: "Linux|18"
   }
@@ -480,6 +528,12 @@
     name: "buildbucket/luci.open-codecs.try/libwebp-test-x86_64-w64-mingw32"
   }
   builders {
+    name: "buildbucket/luci.open-codecs.try/libwebp-x86_64-address-sanitizer"
+  }
+  builders {
+    name: "buildbucket/luci.open-codecs.try/libwebp-x86_64-thread-sanitizer"
+  }
+  builders {
     name: "buildbucket/luci.open-codecs.try/libwebp2-patch-check"
   }
   builders {
diff --git a/infra/config/generated/luci-scheduler.cfg b/infra/config/generated/luci-scheduler.cfg
index bd87f6f..75f51c0 100644
--- a/infra/config/generated/luci-scheduler.cfg
+++ b/infra/config/generated/luci-scheduler.cfg
@@ -25,6 +25,126 @@
   }
 }
 job {
+  id: "libwebp-sanitizer-x86-cfi"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.open-codecs.ci"
+    builder: "libwebp-sanitizer-x86-cfi"
+  }
+}
+job {
+  id: "libwebp-sanitizer-x86-cfi-disabled"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.open-codecs.ci"
+    builder: "libwebp-sanitizer-x86-cfi-disabled"
+  }
+}
+job {
+  id: "libwebp-sanitizer-x86-integer"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.open-codecs.ci"
+    builder: "libwebp-sanitizer-x86-integer"
+  }
+}
+job {
+  id: "libwebp-sanitizer-x86-integer-disabled"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.open-codecs.ci"
+    builder: "libwebp-sanitizer-x86-integer-disabled"
+  }
+}
+job {
+  id: "libwebp-sanitizer-x86-undefined"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.open-codecs.ci"
+    builder: "libwebp-sanitizer-x86-undefined"
+  }
+}
+job {
+  id: "libwebp-sanitizer-x86-undefined-disabled"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.open-codecs.ci"
+    builder: "libwebp-sanitizer-x86-undefined-disabled"
+  }
+}
+job {
+  id: "libwebp-sanitizer-x86_64-cfi"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.open-codecs.ci"
+    builder: "libwebp-sanitizer-x86_64-cfi"
+  }
+}
+job {
+  id: "libwebp-sanitizer-x86_64-cfi-disabled"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.open-codecs.ci"
+    builder: "libwebp-sanitizer-x86_64-cfi-disabled"
+  }
+}
+job {
+  id: "libwebp-sanitizer-x86_64-integer"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.open-codecs.ci"
+    builder: "libwebp-sanitizer-x86_64-integer"
+  }
+}
+job {
+  id: "libwebp-sanitizer-x86_64-integer-disabled"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.open-codecs.ci"
+    builder: "libwebp-sanitizer-x86_64-integer-disabled"
+  }
+}
+job {
+  id: "libwebp-sanitizer-x86_64-undefined"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.open-codecs.ci"
+    builder: "libwebp-sanitizer-x86_64-undefined"
+  }
+}
+job {
+  id: "libwebp-sanitizer-x86_64-undefined-disabled"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.open-codecs.ci"
+    builder: "libwebp-sanitizer-x86_64-undefined-disabled"
+  }
+}
+job {
   id: "libwebp2-linux"
   realm: "ci"
   acl_sets: "ci"
@@ -69,6 +189,18 @@
   id: "libwebp-poller"
   realm: "ci"
   acl_sets: "ci"
+  triggers: "libwebp-sanitizer-x86-cfi"
+  triggers: "libwebp-sanitizer-x86-cfi-disabled"
+  triggers: "libwebp-sanitizer-x86-integer"
+  triggers: "libwebp-sanitizer-x86-integer-disabled"
+  triggers: "libwebp-sanitizer-x86-undefined"
+  triggers: "libwebp-sanitizer-x86-undefined-disabled"
+  triggers: "libwebp-sanitizer-x86_64-cfi"
+  triggers: "libwebp-sanitizer-x86_64-cfi-disabled"
+  triggers: "libwebp-sanitizer-x86_64-integer"
+  triggers: "libwebp-sanitizer-x86_64-integer-disabled"
+  triggers: "libwebp-sanitizer-x86_64-undefined"
+  triggers: "libwebp-sanitizer-x86_64-undefined-disabled"
   gitiles {
     repo: "https://chromium.googlesource.com/webm/libwebp"
     refs: "regexp:refs/heads/main"
diff --git a/infra/config/subprojects/libwebp/ci.star b/infra/config/subprojects/libwebp/ci.star
index c8273ff..9bcab1e 100644
--- a/infra/config/subprojects/libwebp/ci.star
+++ b/infra/config/subprojects/libwebp/ci.star
@@ -27,6 +27,66 @@
 )
 load("//lib/ci_helper.star", "ci_helper")
 
+# Libwebp sanitizer configuration matrix.
+_LIBWEBP_SANITIZER_TARGETS = [
+    "x86",
+    "x86_64",
+]
+_LIBWEBP_SANITIZERS = [
+    "cfi",
+    "integer",
+    "undefined",
+]
+_LIBWEBP_SANITIZERS_EXCLUDED = []
+
+def _libwebp_sanitizers_builder(
+        *,
+        name,
+        script_name,
+        compile_targets = [],
+        sanitizers = [],
+        excluded_builders = [],
+        properties = {},
+        **kwargs):
+    """Defines Libwebp sanitizer builds
+
+    Args:
+      name: name of builder
+      script_name: compilation script
+      sanitizers: compilation script build type list
+      compile_targets: target platform list
+      excluded_builders: filter list to remove builder from lucicfg
+      properties: builder's input properties
+      **kwargs: other keyword args
+    """
+    builders = []
+    for target in compile_targets:
+        for sanitizer in sanitizers:
+            for asm_flag in ["enabled", "disabled"]:
+                builder_name = "%s-%s" % (target, sanitizer)
+
+                if asm_flag == "disabled":
+                    builder_name = "%s-%s" % (builder_name, asm_flag)
+
+                if builder_name in excluded_builders:
+                    continue
+                builder_name = "%s-%s" % (name, builder_name)
+                overridden_properties = {
+                    "script_name": script_name,
+                    "script_arg": [target, sanitizer, asm_flag],
+                }
+                overridden_properties.update(properties)
+
+                builders.append(
+                    ci_helper.create_builder(
+                        name = builder_name,
+                        os = "linux",
+                        properties = overridden_properties,
+                        **kwargs
+                    ),
+                )
+    return builders
+
 libwebp_ci_builder = ci_helper.setup_builder(
     prefix = "libwebp",
     repo = LIBWEBP_REPO_URL,
@@ -44,3 +104,16 @@
     },
     schedule = "0 9 * * *",
 )
+
+# Defines libwebp sanitizers.
+libwebp_ci_builder(
+    name = "sanitizer",
+    builder_creator = _libwebp_sanitizers_builder,
+    script_name = "run_sanitizer_tests.sh",
+    compile_targets = _LIBWEBP_SANITIZER_TARGETS,
+    sanitizers = _LIBWEBP_SANITIZERS,
+    excluded_builders = _LIBWEBP_SANITIZERS_EXCLUDED,
+    recipe = "run_infra_script",
+    # TODO(b/185520507): enable schedule when this builder is verified.
+    #schedule = "0 9 * * *",
+)
diff --git a/infra/config/subprojects/libwebp/try.star b/infra/config/subprojects/libwebp/try.star
index 14aab4e..ce987e7 100644
--- a/infra/config/subprojects/libwebp/try.star
+++ b/infra/config/subprojects/libwebp/try.star
@@ -124,7 +124,17 @@
 _LIBWEBP_TEST_EXCLUDED = [
 ]
 
-# TODO(): Capture index.html output and it will need warning threshold itself.
+# Libwebp sanitizer configuration matrix.
+_LIBWEBP_SANITIZER_TARGETS = [
+    "x86_64",
+]
+_LIBWEBP_SANITIZERS = [
+    "address",
+    "thread",
+]
+_LIBWEBP_SANITIZERS_EXCLUDED = []
+
+# TODO(b/204989118): Capture index.html output and it will need warning threshold itself.
 def _libwebp_compile_builder(
         *,
         name,
@@ -210,6 +220,50 @@
         )
     return builders
 
+def _libwebp_sanitizers_builder(
+        *,
+        name,
+        script_name,
+        compile_targets = [],
+        sanitizers = [],
+        excluded_builders = [],
+        properties = {},
+        **kwargs):
+    """Defines Libwebp sanitizer builds
+
+    Args:
+      name: name of builder
+      script_name: compilation script
+      sanitizers: compilation script build type list
+      compile_targets: target platform list
+      excluded_builders: filter list to remove builder from lucicfg
+      properties: builder's input properties
+      **kwargs: other keyword args
+    """
+    builders = []
+    for target in compile_targets:
+        for sanitizer in sanitizers:
+            builder_name = "%s-%s" % (target, sanitizer)
+
+            if builder_name in excluded_builders:
+                continue
+            builder_name = "%s-%s" % (builder_name, name)
+            overridden_properties = {
+                "script_name": script_name,
+                "script_arg": [target, sanitizer],
+            }
+            overridden_properties.update(properties)
+
+            builders.append(
+                try_helper.create_builder(
+                    name = builder_name,
+                    os = "linux",
+                    properties = overridden_properties,
+                    **kwargs
+                ),
+            )
+    return builders
+
 libwebp_try_builder = try_helper.setup_builder(
     prefix = "libwebp",
     repo = LIBWEBP_REPO_URL,
@@ -297,3 +351,14 @@
     excluded_builders = _LIBWEBP_TEST_EXCLUDED,
     recipe = "run_infra_script",
 )
+
+# Defines libwebp sanitizers.
+libwebp_try_builder(
+    name = "sanitizer",
+    builder_creator = _libwebp_sanitizers_builder,
+    script_name = "run_sanitizer_tests.sh",
+    compile_targets = _LIBWEBP_SANITIZER_TARGETS,
+    sanitizers = _LIBWEBP_SANITIZERS,
+    excluded_builders = _LIBWEBP_SANITIZERS_EXCLUDED,
+    recipe = "run_infra_script",
+)