hallo,
ich hoffe ja mich nicht total lächerlich zu machen. aber ich habe echt keine idee mehr, warum mein code abschmiert. ich habe ein BugDemo-projekt zusammengestellt in dem eigentlich alles sinnvolle entfernt ist - da passiert also fast nichts mehr ... außer das es abstürzt wenn man auf den knopf drückt. trotzdem konnte mir bis jetzt niemand sagen warum.
ich kann nichtmal sagen was eigentlich die eckdaten/problemzone ist.
nur daß der signal/slot-mechanismus bzw. der moc etwas damit zu tun hat. denke ich jedenfalls, denn nur die variante mit GUI hat das problem. die consolen-version arbeitet sauber. und die versionen unterscheiden sich nur in der main.cpp. (ansonsten sind ja nur noch zwei weitere klassen involviert, wobei die eine die GUI ist (QMainWindow)).
die GUI-version stürzt wahlweise bei nem memcpy ab oder bei einer normalen wertzuweisung (m_iBufferCharCount = cnt;). das kann aber nicht der wirkliche fehlerort sein. mit Qt 4.3.2 stürzt er dann auch verzögert ab und ist schon wieder in der eigenen eventloop der QApplication.
auch valgrind zeigt schon beim starten der anwendung speicherverwaltungsfehler. am ende stimmen mallocs und frees nicht.
die consolen-variante arbeit fehlerlos. valgrind erkennt keine speicher-lecks.
ich bin echt ratlos. schaut euch das Demo doch mal an. ist sehr kurz und übersichtlich. einfach die main_GUI.txt bzw. main_Console.txt zur *.cpp machen und ./build ausführen.
ich hab kubuntu 7.0.4 und es schon mit diversen Qt4-versionen und g++/gcc-versionen versucht. (siehe README.TXT).
MfG Obel
[gelöst] SegFault bei Qt4 wenn eingebettetes-objekt ...
[gelöst] SegFault bei Qt4 wenn eingebettetes-objekt ...
- Dateianhänge
-
- Qt4_BugDemo.tgz.tar
- (3.51 KiB) 149-mal heruntergeladen
Zuletzt geändert von ObeliX am 15. November 2007 14:15, insgesamt 1-mal geändert.
mal abgesehen von dem fahrlaessigen int-to-char*-gecaste solltest du dir das mal anschauen:
Code: Alles auswählen
MWnd_IPCConsole::MWnd_IPCConsole(bool bDoConstructorSend/*=false*/, QWidget * parent/*=0*/, Qt::WindowFlags flags/*=0*/)
: QMainWindow(parent,flags)
{
setupUi(this);
// CSysVMsgSendThread * pCMsgSendThread=new CSysVMsgSendThread("/tmp/IPC2Something"); also DAS ist hoechst unguenstig........
pCMsgSendThread=new CSysVMsgSendThread("/tmp/IPC2Something"); // is besser ....
....
...
ochneeee !!!! ... das glaub ich ja jetzt nicht. 
da haben schon mindestens ein dutzend augen drüber geguckt bevor ich hier gefragt habe und keinem ist es aufgefallen. scheiß copy&past
sowas banales aber auch (und außerdem wird klar, warum es beim aufruf im konstruktor immer mystischerweise funktioniert hat)
jedenfalls danke an dich und alle anderen die sich das auch angesehen haben um zu helfen.
big thanx
Obel
da haben schon mindestens ein dutzend augen drüber geguckt bevor ich hier gefragt habe und keinem ist es aufgefallen. scheiß copy&past
jedenfalls danke an dich und alle anderen die sich das auch angesehen haben um zu helfen.
big thanx
Obel