While doing some work for a customer schema I ran into an issue where I was using newVariableInstance and setting a variable based on the value of another element. This other element has an outputValueCalc that performs dfdl:valueLength() on a section of data.
I believe what is happening is that the newVariableInstance starts its scope and tries to set its variable but suspends until the dfdl:valueLength() call can be resolved. In the meantime there is another call to NVI and setVariable on the same variable which results in the variable being set twice and causing an error. Removing the outputValueCalc resolves this issue, which leads me to believe that the suspension is resulting in the variable stack getting clobbered.