The QThread object lives in the thread which created the object (so not the thread the QThread object represents), thus creating an object with the thread object as the parent within the run() method is not possible. Either skip the parent pointer of the socket (and delete the object before leaving run()) or move the QThread object to its own thread.