if I run :
mi_trace_transparent(tmpColor, state);
mi_call_material(tmpColor, state->child);

my code crashes.

however, if I run :

mi_trace_probe(state, &state->dir, &state->point);
miState grandchild;
state->child->child = &grandchild;
mi_call_material(tmpColor, state->child);

my code works.

What is it about mi_trace_probe that is working that mi_trace_transparent is failing to initialize?