You forgot to move the thread to its own thread.
OMG. I was sure that QThread::run() will know what thread it is O_O. This is very strange design .

Anyway, i have started code and... it did not crash O_O. The only thing i can suggest is that QScriptEngine somehow remembers a thread it was CREATED in and ignores moveToThread() after it is created. I will perform more deep tests to ensure that all is correct. Lots of thanks to you. It's really good to have a guru status in some technology - you can use magic .