> BecStruct
Where is this allocated?

What you seem to be describing is a struct which is allocated as a local variable on the stack in one function, being returned (as a pointer to that local variable, illegally), so that when you invoke another function, the struct and the local variables of the new function essentially overlap.
Code:
ti_record_time("bzs at %p to %p, local stack frame at %p", bzs, (char*)bzs + sizeof *bzs, &i );
If your local vars are between those two addresses, or even close, then I'd say something is returning pointers to local variables.