⬢ DragonFlyBSD Kernel Audit
DF-5704 / run.userland.log
← back to finding ↓ download raw
=== A. wedge (same source as kernel) ===
== control: a1=["x"] vs a2=["y"] (types match, equals false by value) ==
  [child] built a1/a2, calling prop_array_equals...
  [child] equals -> 0
  [child] calling prop_array_add (wrlock on a1)...
  [child] add returned TRUE (no wedge)
   -> child exited 0: add() completed
== buggy:   a1=["x"] vs a2=[5] (type mismatch at depth 1) ==
  [child] built a1/a2, calling prop_array_equals...
  [child] equals -> 0
  [child] calling prop_array_add (wrlock on a1)...
   -> child STILL BLOCKED in prop_array_add after 5s: rdlock LEAKED (exit 42)

DF-5704 wedge result: REPRODUCED (control unwedged, buggy wedged)
wedge exit=1

=== B. extern-elem leak ===
== leak: 17-deep chains, type mismatch at leaf ==
  (each prop_array_equals() abandons exactly one malloc'd _prop_stack_extern_elem)
  [start] after 0 equals(): ru_maxrss = 0 kB
  [leak] after 100000 equals(): ru_maxrss = 5128 kB
  [leak] after 200000 equals(): ru_maxrss = 10428 kB
  [leak] after 300000 equals(): ru_maxrss = 14868 kB
  [leak] after 400000 equals(): ru_maxrss = 19352 kB
   -> if ru_maxrss climbed ~ 18750 kB, the extern elements leaked
leak exit=0