Phonon macht Qt instabil

Alles rund um die Programmierung mit Qt
Antworten
D.Cent
Beiträge: 44
Registriert: 25. Juli 2007 15:39

Phonon macht Qt instabil

Beitrag von D.Cent »

Ich habe zu meinem Chatprogramm jetzt Sound über Phonon hinzugefügt. Leider hat das schwere Folgen:

-QFileBrowser löst seitdem einen SIGSEGV aus
-Nach dem Beenden kommt ein SIGSEGV
-Die Sounds werden nur "halb" abgespielt

Der Code dazu:

Im Header deklariert:

Code: Alles auswählen

		Phonon::MediaObject *music1;
		Phonon::AudioOutput *audioOutput1;
		Phonon::Path path1;
Danach in der CPP-Datei:

Code: Alles auswählen

        //Initialisierung
	music1 = new Phonon::MediaObject(this);
	audioOutput1 = new Phonon::AudioOutput(Phonon::NotificationCategory);
	path1 = Phonon::createPath(music1, audioOutput1);
...
        //sndfile ist ein const char* array (z.B. "/opt/kde3/share/sounds/KDE_Beep_Ahem.wav"
	music1->setCurrentSource(Phonon::MediaSource(soundfile));
	music1->play();
...
        //clean up beim Beenden
	delete music1;
	delete audioOutput1;
Wie gesagt, das clean up verursacht einen SIGSEGV (aka. Speicherzugriffsfehler). Ich habe den Code von den Beispielseiten kopiert - deswegen verstehe ich auch nicht, warum das Programm dadurch instabil wird.

Es kommt immer eine Debug-Ausgabe:

Code: Alles auswählen

virtual bool Phonon::Gstreamer::AudioOutput::setOutputDevice(const Phonon::AudioOutputDevice&) "default" 
Noch dazu spuckt valgrind bei jedem Abspielbefehl:

Code: Alles auswählen

==27579== Syscall param ioctl(arg) contains uninitialised byte(s)                            
==27579==    at 0x4000832: (within /lib/ld-2.9.so)                                           
==27579==    by 0x9BC4950: snd_pcm_hwsync (in /usr/lib/libasound.so.2.0.0)                   
==27579==    by 0x9BD7674: (within /usr/lib/libasound.so.2.0.0)                              
==27579==    by 0x9BC4950: snd_pcm_hwsync (in /usr/lib/libasound.so.2.0.0)                   
==27579==    by 0x9BC96CA: (within /usr/lib/libasound.so.2.0.0)                              
==27579==    by 0x9BD8788: (within /usr/lib/libasound.so.2.0.0)                              
==27579==    by 0x9BC3F93: snd_pcm_writei (in /usr/lib/libasound.so.2.0.0)                   
==27579==    by 0x7C62993: (within /usr/lib/gstreamer-0.10/libgstalsa.so)                    
==27579==    by 0x7ED968B: (within /usr/lib/libgstaudio-0.10.so.0.15.0)                      
==27579==    by 0x4FA337E: (within /usr/lib/libglib-2.0.so.0.1800.2)                         
==27579==    by 0x500F1B4: start_thread (in /lib/libpthread-2.9.so)                          
==27579==    by 0x52213BD: clone (in /lib/libc-2.9.so)
... und beim Beenden ...

Code: Alles auswählen

==27579== Use of uninitialised value of size 4                                               
==27579==    at 0x6BC2737: (within /usr/lib/kde4/plugins/phonon_backend/phonon_gstreamer.so)
==27579==
==27579== Process terminating with default action of signal 11 (SIGSEGV)
==27579==  Bad permissions for mapped region at address 0x4A6BFF4
==27579==    at 0x6BC2737: (within /usr/lib/kde4/plugins/phonon_backend/phonon_gstreamer.so)
Normalerweise bringt mich valgrind bei solchen Dingen immer weiter, aber in diesem Fall kann ich mit den Ausgaben leider nichts anfangen. Übersetzt habe ich das ganze mit "-g".

System: OpenSuSE Linux 11.1, KDE 4.2.3, Qt: 4.5.1

Hat jemand eine Idee, was diese Fehler verursachen könnte?
Antworten