I have taken a look at the threading tutorial but I don't think I am doing anything that is prohibited.
Since the product follows a Java multithreaded AWT model, whereby the main AWT Java thread [actually linux posix thread as I am testing in linux-x86] is what will be making GUI calls and then there is an eventThread [another Java thread] which will initialize [create QApplication, does show() and exec()]. The main AWT thread will draw in the QImage backbuffer and the paintEvent() call will flush the QImage into QPaintDevice. This is the logic that I wanted to follow in Qt4
But, in Qt4 calls I am not sure why I am getting the crash as described above as soon as I call exec(). sm_performSaveYourself is a QT function which I don't have control on and so I am not sure why it will create a QString with wrong address [thereby creating segv]. Also, libSM.so and libICE.so are system lib I presume so there also I do not have a control

I also have checked my mutex logic. I am using QMutex and I have seen that if I use it wrongly, it shows deadlock from QMutex class. But I am not seeing any such problem in our product. Is there anyone who has seen this kind of crash and know about a possible solution or an area where to investigate?
I can send the code to anyone who is interested.
I am really stuck with this crash. PLease suggest some remedy