Seite 1 von 1

[Qt338][WinXP] Pure Virtual Function Call

Verfasst: 17. Juli 2007 12:06
von bloody.albatros
morgen,

tja, auch mich hat dieser fehler ereilt. allerdings habe ich keinen dunst, wodurch er verursacht wird.
gleich vorweg, ich hab die alte qt-version, da wir dieses projekt noch auf MS VS6 laufen haben. und somit noch nicht auf die 4-er version umsteigen können.

weiters, ich hab mir auch schon die texte zum pure virtual function call durchgelesen und dementsprechend hab ich das kernproblem eingegrenzt.

beim absturz selbst steht er bei qframe.h und dann gehts über ins qwt, wo er punkte ausgeben will. zur selben zeit läuft nebenbei (also nicht im selben projekt) eine andere qt-anwendung. die ist allerdings stabil.

gibt es da erfahrungen oder ideen, wie ich den fehler eingrenzen könnte?
derzeit hab ich schon versucht, verschiedene qt und qwt versionen zu vermischen, hat aber alles nichts gebracht (und ja, ich hab zwischen den einzelnen versionen die alten sauber deinstalliert und gelöscht)

cheers,
gerrit

ich werke unter
- WinXP
- MS VS 6
- QT 3.3.8 (oder 3.3.4)
- qwt 4.0.2[/list][/list]

Verfasst: 17. Juli 2007 12:18
von upsala
Schon mal einen Debugger gestartet?

Verfasst: 17. Juli 2007 13:08
von bloody.albatros
jo, klar, anders hätt ich ja auch nit den ursprung in qwt feststellen können.
nur, bei qwt bzw. qt werd ich jetzt nit reindebuggen. soviel vertrauen hab ich in die libs schon.
oder bin ich da zu blauäugig?

hab vielmehr irgendwelche äußeren störquellen in verdacht.
nur leider ist es eben nur ein verdacht und somit nit ausschlaggebend.

cheers,
gerrit

Verfasst: 17. Juli 2007 13:50
von macman
bloody.albatros hat geschrieben:oder bin ich da zu blauäugig?
Ja, bist Du :-) Obwohl, bei Qt3 hatten die Trolls noch viele Sicherheitsabfragen gegen NULL drin, bei Qt4 ist das zumindest bei vielen Dingen nicht mehr der Fall.

Verfasst: 17. Juli 2007 19:49
von Uwe
bloody.albatros hat geschrieben:jo, klar, anders hätt ich ja auch nit den ursprung in qwt feststellen können.
nur, bei qwt bzw. qt werd ich jetzt nit reindebuggen.
Darum geht es auch nicht, aber die Information um welche pure virtual Methode es sich handelt bzw. den Aufrufstack solltest Du schon posten.
Der erfahrene Anwender kann Dir da eventuell sofort sagen, ob der Stack tatsächlich "kaputt" ist, oder es sich doch um einen Programmfehler handelt.

Zumindest hast Du da bessere Chancen auf Unterstützung, wie mit "es geht nicht".

Uwe

Verfasst: 19. Juli 2007 16:51
von bloody.albatros
korrekter einwand, sorry

der letzte befehl im stack ist drawSymbols in qwt_curve.cpp
an den übergebenen parametern hätte ich keine fehlerquelle erkennen können.

thx,
gerrit

Verfasst: 19. Juli 2007 17:15
von Uwe
In der Regel hat man Aufrufe von pure virtual Methoden in Situationen in denen aus dem Destruktor der Basisklasse nochmal Funktionalität aufgerufen wird. Das passiert zumeist durch irgendwelche Signale/Events über Umwege.

Daher schau doch mal, ob in Deinem Stack weiter oben der Destruktor von QwtCurve steht.

Uwe

PS1: Warum ist es so schwierig den Stack zu posten ?
PS2: Warum nimmst Du eine so alte Qwt Version - Qwt 5.x läuft auch mit Qt 3.3.

Verfasst: 3. August 2007 11:16
von bloody.albatros
Uwe hat geschrieben: PS1: Warum ist es so schwierig den Stack zu posten ?
PS2: Warum nimmst Du eine so alte Qwt Version - Qwt 5.x läuft auch mit Qt 3.3.
howdy nochmals

zur antwort, warum kein stack gepostet ... zu eben jenen zeitpunkt meines postings war ich fern der heimat, sprich auf dienstreise und hatte keinen remote-zugriff auf den problem-rechner. musste also nur mit meinen mitschriften auskommen ... ansonsten kann ich schon mit c&p umgehen :wink:

und zur alten version ... hatte auch schon 5.x versucht. befürchte aber, dass der absturz auch von dem rumprobieren gekommen ist.
daher würd ich gerne meine frage neu formulieren:

wo hinterlassen qt und qwt beim installieren überall ihre spuren?

thx,
gerrit

Verfasst: 3. August 2007 12:54
von Christian81
bloody.albatros hat geschrieben: wo hinterlassen qt und qwt beim installieren überall ihre spuren?
Nirgends ausser ein paar Einstellungen in der Reigstry (HKLM/HKCU/Software/Trolltech) - aber die sind unerheblich.

Verfasst: 3. August 2007 12:57
von bloody.albatros
schade, denn somit hat sich meine hoffnung zerschlagen, dass der absturz durch einen mix verschiedener versionen von qwt und qt entwickelt hat (zur erklärung, hab immer zwischendurch die qt deinstalliert und dann auch noch das gesamte qt-verzeichnis gekillt)

naja, bleibt mir wohl nix anderes übrig als dem hint mit den destruktoren nachzugehen.

thx und schönes wochenende!
gerrit

Verfasst: 3. August 2007 12:59
von Christian81
Wie gesagt - der Backtrace sollte da eigentlich schon ausreichen.
Hast Du beim Deinstallieren auch geschaut dass nicht doch irgendwo durch Zufall eine alte Qt-Dll (z.B. c:\windows\system32) rumliegt? Aber das müsstest du auch beim Deubggen sehen - dort steht ja von woher die DLLs gezogen werden.