In your original thread I suggested you had a loop:
http://yabb.jriver.com/interact/index.php?topic=77960.msg529570#msg529570 So Opus and Work are Series relational, but Series relies on Opus and Work? That seems like a loop.You can't assume an order to when the clearing of values and the setting of values occurs. When you set your series with:
=ListItem([composer],0,/,)If(IsEmpty([Opus]),_[Work],_[Opus])
MC has to iterate over the files internally, one at a time, and assign Series with the calculation. Your mental model is that MC works serially:
1. Clear out old Series values
2. Compute expression value for Series
3. Assign this value to Series
4. Update Opus and Work to be based on the new relationship now formed with the new value of Series
But in a multi-threaded system, it could be that MC:
1. starts a thread to clear out / or set Series values to break the current relationship between Opus and Series and Work and Series (since Series is changing).
2. starts a thread to populate the Series values from the calculation
3. starts a thread to copy the Opus and Work values from one track to another track based on the new relationship.
If thread (1) clears just a couple Series values and then thread (3) kicks in and notices the new relationship is formed based on a Series values of EMPTY, then MC might go about updating all the Work and Opus fields that relate to the EMPTY Series value.
If there is no guarantee of order, this is a classic race condition where the results are undefined.