Seems like the profiler needs some 'special case' code to deal with System.String (my understanding is that the characters are actually stored 'inside' the object, and the "m_firstChar" field is, so to speak, the "last" field in System.String, whose address is the start of the character string. (I've also read somewhere where .Net 4.0 changed this some (above example is from .Net 2.0)).

We have managed to reproduce the problem with v2013. In our tests, we see always one string per snapshot with such incorrect fields. How many bad string do you see?

Anyway, we can't reproduce the problem with the latest code base which will eventually become the next version, 2014. Perhaps it was fixed as a side effect of other improvements and fixes we have made since v2013.

If I open an "old" (from 2013) snapshot with the new code, I see the same bad string.

The wrong information is contained in the snapshot, so it's expected that opening the old snapshot with the new UI doesn't solve the problem, and that it's required to re-run with the new agent to obtain a new, correct snapshot.

However, so far, recording/profiling with the new code appears to work correctly.

Great. We'll investigate whether we can safely backport the necessary fixes to v2013. Meanwhile, you can use the v2014 build. We are not aware of any regressions.