a very weird bug: the local variable (all members inside the data structures) cannot live outside the function, even though there are some pointers connecting to them