I think I figured out my problem was the connect() using a slot on the "this" object. My multiplexIO slot is actually executing in the context of the parent event loop, and not my thread. Looking at the docs it appears calling write() on my socket from the parent thread (which I guess is what I'm actually doing) could lead to "unexpected results" as my socket's QOBJECT is owned by the executing thread. For some reason I thought by connecting a signal using the "this" ptr I would ensure my slot was executing in the context of the new thread where I called connect().

The debug statement that specifies I am sending date is only seen once, so I didn't believe that was the problem.