fix(folio): word-bound the G2 ERROR scan and drop the dead objc allowlist glob

This commit is contained in:
pj committed 2026-06-07 21:41:12 +05:30
1 parent a203302b00
commit 338a232ba2
4 files changed
+12 -5

No files matched your search

@@ -1,4 +1,5 @@
companion pid=4242 listening on 127.0.0.1:51000 companion pid=4242 listening on 127.0.0.1:51000
objc[4242]: Class FBSDKError is implemented in both /a (0x1) and /b (0x2). One of the two will be used. Which one is undefined. objc[4242]: Class FBSDKError is implemented in both /a (0x1) and /b (0x2). One of the two will be used. Which one is undefined.
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
archived previous runs under runs/ERRORS_archive
run complete run complete
@@ -1,4 +1,5 @@
companion pid=4242 listening on 127.0.0.1:51000 companion pid=4242 listening on 127.0.0.1:51000
objc[4242]: Class FBSDKError is implemented in both /a (0x1) and /b (0x2). One of the two will be used. Which one is undefined. objc[4242]: Class FBSDKError is implemented in both /a (0x1) and /b (0x2). One of the two will be used. Which one is undefined.
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
archived previous runs under runs/ERRORS_archive
error: hierarchy fetch failed: companion connection lost error: hierarchy fetch failed: companion connection lost
@@ -77,6 +77,9 @@ BENIGN_NOISE = [
"objc[4242]: Class FBSDKError is implemented in both /a (0x1) and /b (0x2). " "objc[4242]: Class FBSDKError is implemented in both /a (0x1) and /b (0x2). "
"One of the two will be used. Which one is undefined.\n", "One of the two will be used. Which one is undefined.\n",
"WARNING: All log messages before absl::InitializeLog() is called are written to STDERR\n", "WARNING: All log messages before absl::InitializeLog() is called are written to STDERR\n",
# An incidental ERROR substring inside a longer word: the G2 scan is
# word-bounded, so this must not trip the gate.
"archived previous runs under runs/ERRORS_archive\n",
] ]
write_run("pass", healthy_steps()) write_run("pass", healthy_steps())
+7 -5
View File
@@ -47,8 +47,9 @@ companion_process_name="idb_companion"
# only lines that are provably harmless and emitted on every healthy run. # only lines that are provably harmless and emitted on every healthy run.
benign_stderr_substrings=( benign_stderr_substrings=(
# The dynamic linker reports the same Objective-C class registered by two # The dynamic linker reports the same Objective-C class registered by two
# loaded images. The companion runs fine; this is cosmetic. # loaded images. The companion runs fine; this is cosmetic. The real line
"objc[*]: Class" # reads "objc[<pid>]: Class ...", so the fixed substring is "]: Class".
"]: Class"
"is implemented in both" "is implemented in both"
"One of the two will be used. Which one is undefined." "One of the two will be used. Which one is undefined."
# gRPC and absl emit informational banner lines on startup. # gRPC and absl emit informational banner lines on startup.
@@ -59,8 +60,9 @@ benign_stderr_substrings=(
# G2 helper: strip benign companion noise, then report sanderling ERROR lines. # G2 helper: strip benign companion noise, then report sanderling ERROR lines.
# sanderling's progress logger renders error-level records as lines beginning # sanderling's progress logger renders error-level records as lines beginning
# "error:" (see internal/testrun/progress.go). We also catch upper-case ERROR # "error:" (see internal/testrun/progress.go). We also catch the upper-case
# for safety against future handlers. # ERROR token (word-bounded, so ERRORS/ERRORLESS and path fragments do not
# trip the gate) for safety against future handlers.
error_lines_in() { error_lines_in() {
local output_file="$1" local output_file="$1"
local filtered local filtered
@@ -69,7 +71,7 @@ error_lines_in() {
for pattern in "${benign_stderr_substrings[@]}"; do for pattern in "${benign_stderr_substrings[@]}"; do
filtered="$(printf '%s\n' "$filtered" | grep -vF "$pattern" || true)" filtered="$(printf '%s\n' "$filtered" | grep -vF "$pattern" || true)"
done done
printf '%s\n' "$filtered" | grep -E '(^error:|ERROR|level=ERROR)' || true printf '%s\n' "$filtered" | grep -E '(^error:|\bERROR\b)' || true
} }
# G1: process exit status recorded by the runner loop. # G1: process exit status recorded by the runner loop.