Today I learned that the C# compiler makes the “i” variable in for loops a reference value when converted to CLI, which creates this extremely specific scenario where passing it into a function ctx overwrites it.
I’m just like flabberghasted, I would have literally have never figured this bug out without asking in the Unity server where all the smart people live.