Pike 9.0 compiler --with-debug cleanup (free_supporter()) fails due to invalid supporter pointers on NT
Seen in Pikefarm (pike_compiler.cmod):
void free_supporter(struct Supporter *c)
{
verify_supporters();
if (c->depends_on) {
struct Supporter **s;
for (s = &c->depends_on->dependants; *s; s = &(*s)->next_dependant)
if (*s == c) {*s = c->next_dependant; break;}
c->depends_on = 0;
}
if (c->exit_fun) c->exit_fun(c);
verify_supporters();
}
When the typical failure occurs *s
contains a small integer (like 1
, 2
or 10
). The same value is present as c->depends_on->dependants
.