>> You are nulling the local variable, not the array element it points to. > > In case that doesn't make the problem obvious: each thread executing > start_routine has its own local variables. > That makes perfect sense. I'll incorporate the changes into the simplified program and then into my main project and report back. Sadly I knew about all the pass-by-value-only stuff and still missed this even after hours of looking; thanks for the second set of eyes.