0

Add info about (D)CHECK and NOTREACHED crashing app or test

Change-Id: I54d38c258c3fe94ac7f71ad55f4dbdf8b8842a00
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6093573
Reviewed-by: Peter Kasting <pkasting@chromium.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
Commit-Queue: Andrzej Sokolnicki <sokolnicki@google.com>
Cr-Commit-Position: refs/heads/main@{#1398615}
This commit is contained in:
Andrzej Sokolnicki
2024-12-19 08:34:03 -08:00
committed by Chromium LUCI CQ
parent 997cc1f211
commit d13776f432

@ -1,11 +1,15 @@
# CHECK(), DCHECK() and NOTREACHED()
`CHECK()`, `DCHECK()` and `NOTREACHED()` are all used to ensure that invariants
hold. They document (and verify) programmer expectations that either some
hold. They document (and verify) programmer expectations that either some
statement *always* holds true at the point of `(D)CHECK`ing or that a piece of
code is unreachable. They should not be used to validate data that is provided
by end-users or website developers. Such data is untrusted, and must be
validated by standard control flow.
code is unreachable (for `NOTREACHED`). `CHECK` failures and reachable
`NOTREACHED`s result in an application crash (generating a crash report).
`DCHECK`s are only evaluated on developer builds, test infrastructure and a
minuscule in-the-wild population that does not currently represent all
platforms. None of these should be used to validate data that is provided by
end-users or website developers. Such data is untrusted, and must be validated
by standard control flow.
An invariant that does not hold should be seen as Undefined Behavior, and
continuing past it puts the program into an unexpected state. This applies in