⬢ DragonFlyBSD Kernel Audit
DF-5704 / fixtest.userland.log
← back to finding ↓ download raw
=== FIXED BUILD (propfix = proporig + fix.diff) ===
== 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] add returned TRUE (no wedge)
   -> child exited 0: add() completed

DF-5704 wedge result: not reproduced
fixed wedge exit=0
== 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 = 1008 kB
  [leak] after 200000 equals(): ru_maxrss = 1008 kB
  [leak] after 300000 equals(): ru_maxrss = 1008 kB
  [leak] after 400000 equals(): ru_maxrss = 1008 kB
   -> if ru_maxrss climbed ~ 18750 kB, the extern elements leaked
fixed leak exit=0