You are creating your QImage on the stack in your render thread, then passing it as a reference to your main window via a signal. Perhaps the crash is because the QImage has gone out of scope by the time the slot receives the reference. Try making the QImage either a member variable of the thread class or passing it by value (so a copy gets made).

If you make it a member variable, then you might have concurrency problems if the main window is trying to read the image at the same time the render thread is changing it.