I tested the latest revision but unfortunately it didn't solve the issue. However, I noticed that the error doesn't occur for global string instances, so this may be what's preventing you from reproducing it. The smallest piece of code that I can use to reproduce the error is
void main() {
string a = true ? "a" : "b";
}
However, if at least one of "a" and "b" is wrapped in an explicit string constructor, the code seems to work correctly. The access violation reliably occurs while executing (rather than compiling) the code. It comes from CopyConstructString in scriptstdstring.cpp, which is called with an invalid reference as the other argument. The reference appears to reliably be to address 0x00000001.
I also investigated the other report I got and determined that it's an unrelated access violation caused by line 3003 of as_jit.cpp, when the code is trying to dereference it->second.jitFunction. The error occurs relatively rarely, after the program runs several scripts. It would appear to me that entries are never removed from the deferredPointers multimap, and thus as the engine releases old functions and allocates new ones, it has an ever increasing chance of allocating one at an address already present among deferredPointers keys, with unexpected consequences.