Access Violation durch QFileDialog

Alles rund um die Programmierung mit Qt
Antworten
krisztian
Beiträge: 8
Registriert: 24. Dezember 2010 17:20

Access Violation durch QFileDialog

Beitrag von krisztian »

Hallo,

ich benutze für ein Projekt "QFileDialog::getOpenFileNames();" um an eine Liste mit Dateinamen zu kommen. Nachdem ich schon eine ganze Weile (ca. 2 Monate) mit und an diesem Programm gearbeitet habe bekomme ich auf einmal nach kurzer Laufzeit Abstürze:

Code: Alles auswählen

Zugriffsverletzung beim Lesen an Position 0xfeeefeee
Meine Test haben ergeben, dass die Abstürze durch QFileDialog verursacht wurden. Deshalb habe ich ein kleines Beispiel erstellt in dem eigentlich nur diese Funktion verwendet wird. Dort wurden dann auch die Parameter weg gelassen, die ich getOpenFileName übergeben kann. Das Projekt befindet sich im Anhang (VS 2010 Solution).

Auch hier kommt es nach einer scheinbar zufälligen Zeitspanne zum Absturz mit der Meldung:

Code: Alles auswählen

Eine Ausnahme (erste Chance) bei 0x760bb9bc (KernelBase.dll) in OpenFileDialogTest.exe: 0x80010108: Das aufgerufene Objekt wurde von den Clients getrennt.
Eine Ausnahme (erste Chance) bei 0x760bb9bc (KernelBase.dll) in OpenFileDialogTest.exe: 0x80010108: Das aufgerufene Objekt wurde von den Clients getrennt.
Eine Ausnahme (erste Chance) bei 0x760bb9bc (KernelBase.dll) in OpenFileDialogTest.exe: 0x80010108: Das aufgerufene Objekt wurde von den Clients getrennt.
Eine Ausnahme (erste Chance) bei 0x7560c99e in OpenFileDialogTest.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0xfeeefeee.
[b]Unbehandelte Ausnahme bei 0x7560c99e in OpenFileDialogTest.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0xfeeefeee.[/b]
Ob die vorherigen Meldungen auch schon eher ungut sind kann ich leider nicht beurteilen.

Bisher versucht habe ich:
- umstellen von Debug auf Release (hat für eine Tag etwas gebracht, danach war das Problem wieder da)
- Update auf neuste Qt Version(jetzt 4.81 vorher 4.80)
- Testweises anlegen eines QFileDialog-Objekts. Mittels diesem dann getOpenFileName aufgerufen und anschließend das Objekt mit ~pMyFileDialog wieder gelöscht. Hatte auch keinen Erfolg.
- Projekt im Qt-Creator erstellt. Hier ist es dann nicht zu Abstürzen gekommen. Seltsamerweise, war es sogar so, dass auch das VS Programm nicht abstürzte wenn nebenher das mit dem Qt-Creator erstellte Programm lief. Aber ich verbuche das mal unter sehr großem Zufall.
- Projekt auf anderem Rechner schien, zumindest nach kurzer Testphase, stabil zu laufen.

Die Anzeige der Aufrufliste ergibt Folgendes:

Code: Alles auswählen

>	ole32.dll!7560c99e() 	
 	[Unten angegebene Rahmen sind möglicherweise nicht korrekt und/oder fehlen, keine Symbole geladen für ole32.dll]	
 	ole32.dll!7564eb7f() 	
 	ole32.dll!7564eb4d() 	
 	ole32.dll!7564923c() 	
 	ole32.dll!7564b4d0() 	
 	ole32.dll!7564eb7f() 	
 	ole32.dll!7564eb4d() 	
 	ole32.dll!75648d94() 	
 	ole32.dll!7564928b() 	
 	ole32.dll!75648f82() 	
 	ole32.dll!7564eb7f() 	
 	ole32.dll!75648ec3() 	
 	ole32.dll!7563bac3() 	
 	networkitemfactory.dll!FDBackgroundThreadHandler()  + 0x21 Bytes	
 	shlwapi.dll!WrapperThreadProc()  + 0xd3 Bytes	
 	kernel32.dll!@BaseThreadInitThunk@12()  + 0x12 Bytes	
 	ntdll.dll!___RtlUserThreadStart@8()  + 0x27 Bytes	
 	ntdll.dll!__RtlUserThreadStart@8()  + 0x1b Bytes	
Da ich nun recht am Ende meines Lateins bin (bin weder in C++ noch in Qt Profi nur hatte ich bisher mit QFileDialog nie Probleme) würde ich mich über jede Hilfe freuen.

Gruß,
krisztian
Dateianhänge
OpenFileDialogTest.zip
(23.94 KiB) 175-mal heruntergeladen
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Access Violation durch QFileDialog

Beitrag von Christian81 »

Kann es sein dass verschiedene Qt-Dlls von verschiedenen Versionen bei dir im PATH sind? Der Backtrace sagt ja auch nichts von Qt aus. Mal mit den Debug-Qt-Dlls gebaut und dann mit dem Debugger mal geschaut?

/edit: Manchmal liegt es auch an einem Programm welches sich in das Explorer-Contextmenu (z.B. TortoiseSVN/CVS/Git) hängt - hast Du evtl. so etwas installiert?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
krisztian
Beiträge: 8
Registriert: 24. Dezember 2010 17:20

Re: Access Violation durch QFileDialog

Beitrag von krisztian »

Hallo,

vielen Dank für Ideen.

Zum ersten Vorschlag:
Ich weiß nicht ganz was du meinst mit verschiedene Versionen im Path. In den Projekteinstellungen wird sich ja immer auf QTDIR bezogen. Das sollte also einfach abhängig von der mir eingestellten Version sein. Da ich das Problem auch schon hatte als nur Qt 4.80 installiert war bin ich mir auch nicht sicher ob die Problemtik aus der Ecke kommt.

Das mit den Debug-Qt-Dll´s bauen musst du mir bitte erklären. Dann versuche ich das gerne.

Zum zweiten Teil:
Hier ist WinCVS installiert. Ich versuche mal es zu deinstallieren.

Gruß,
krisztian
krisztian
Beiträge: 8
Registriert: 24. Dezember 2010 17:20

Re: Access Violation durch QFileDialog

Beitrag von krisztian »

Nachtrag: WinCVS deinstallieren hat keine Erfolg gebracht.

Das Ganze verhält sich leider auch so, dass mein Programm teilweise Stunden läuft ohne Zicken zu machen und auf der anderen Seite aber auch manchmal nach 2 Minuten abstürzt. :(
Troll.Soft
Beiträge: 190
Registriert: 18. Juni 2008 09:52
Wohnort: Hamburg

Re: Access Violation durch QFileDialog

Beitrag von Troll.Soft »

Moin,
also mein Standardvorgehen sieht so aus. Pfad überprüfen, wie von Chris beschrieben. Alles was vom Compiler und von Qt automatisch erstellt wurde löschen. Nur die Qt-Pro Datei bleibt bestehen. Das Projekt komplett neu erstellen im Debugmodus. In Extremfällen das System von Compiler und Qt komplett säubern und Compiler + Qt neu installieren im Debugmodus. Dabei sind schon diverse Fehler verschwunden ohne das ich je herausbekam woran es nun wirklich lag :)
tschüß
Troll.Soft
krisztian
Beiträge: 8
Registriert: 24. Dezember 2010 17:20

Re: Access Violation durch QFileDialog

Beitrag von krisztian »

Hey,

danke auch für den letzten Tipp.

Kurz noch zur "Lösung".

Nachdem Qt + VS 2010 Neuinstallation nichts gebracht hat musste Win7 daran glauben. Nun läuft alles fehlerfrei (bisher).

Ob ich allerdings bei der Deinstallation von VS2010 alles erwischt (und damit jede damit zusammenhängende Fehlerursache beseitigt) habe kann ich nicht sagen. Nach dem deinstallieren war auf jeden Falls noch relativ viel vom VS auf der Platte (ein ähnliches Bild bei Qt).

Dennoch danke an Alle!

Gruß,
krisztian
Antworten