Record Android generation anti-pattern

ober

9490577eb787f446256ea84a3ab2f9993030fafa

diff --git a/data/anti-patterns.sexp b/data/anti-patterns.sexp
index a87e84a..b9f846f 100644
--- a/data/anti-patterns.sexp
+++ b/data/anti-patterns.sexp
@@ -4509,4 +4509,26 @@
      "jerboa_howto"
      "jerboa_module_exports"
      "jerboa_function_signature"
-     "jerboa_verify")))
+     "jerboa_verify"))
+ (("advice"
+    .
+    "Inspect vendor/ChezScheme/c/thread.c and the activation macros in types.h for the current runtime. Measure request-to-last-thread-deactivated time separately from GC work. Audit non-collect-safe FFI and plain contended mutex-acquire independently; do not propose a collector rewrite before proving the rendezvous bottleneck.")
+   ("avoid"
+     .
+     "Do not infer that Chez condition-wait pins the garbage collector from a hang report or treat it the same as contended mutex-acquire. In the current Chez runtime, S_condition_wait deactivates the Scheme thread before blocking and reactivates it after wakeup.")
+   ("id" . "chez-condition-wait-gc-safety-assumption")
+   ("kinds" "docs" "debug-error" "ffi")
+   ("pattern"
+     .
+     "condition-wait.*(blocks|pins|deadlocks).*GC|GC.*condition-wait.*(unsafe|deadlock)")
+   ("severity" . "medium")
+   ("tags" "chez" "gc" "threads" "condition-wait" "rendezvous"
+     "ffi")
+   ("title"
+     .
+     "Do Not Classify Chez condition-wait as GC-unsafe Without Source Verification")
+   ("tools"
+     "jerboa_anti_pattern_lookup"
+     "jerboa_request_advisor"
+     "rg vendor/ChezScheme/c/thread.c"
+     "make check-docs")))