crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> краш программы при использовании Phonon
Rocky
  опции профиля:
сообщение 11.2.2010, 23:13
Сообщение #1


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Подскажите пожалуйста что не так?

Взял пример из assistant. Написал в конструкторе класса
Phonon::MediaObject *music = Phonon::createPlayer(Phonon::MusicCategory, Phonon::MediaSource("G:/1.mp3"));
music->play();


Когда программа загружается полностью, музыка начинает проигрывать. А вот при выходе из программы получаю ошибку:
Цитата
Необработанное исключение в "0x7484cb27" в "PlayStationClient.exe": 0xC0000005: Нарушение прав доступа при чтении "0x03127a00".


И вылетаю в этот код (в файле medianode.cpp)
void MediaNodePrivate::deleteBackendObject()
{
    if (m_backendObject && aboutToDeleteBackendObject()) {
        delete m_backendObject;
        m_backendObject = 0;
    }
}


QT 4.6.1 MSVS 2008.

Что не так? (


Да и еще вопрос, ведь можно же скомпилить его (Phonon) отдельно от всего остального Qt? В смысле заново не перекомпилировать все QT?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов (1 - 2)
kwisp
  опции профиля:
сообщение 12.2.2010, 12:34
Сообщение #2


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


MediaNodePrivate
это что за класс? случаем не наследник QObject ???
Если у него есть хозяин то при выходе из программы если удаляются объекты, то может хозяин повторно пытается освободить уже свободную память?

зачем вообще его удалять?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 12.2.2010, 17:36
Сообщение #3


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Разобрался) Если кому интересно, ща расскажу.

Блин, матерился почем свет стоит.. 3 часа угробил ) но понял в чем фишка.. Вобщем, я посмотрел адреса указателей (m_backendObject и его parent-a) в момент создания... а потом в момент удаления.. Они почему-то оказались разные. Соответсвенно первая мысль была что их кто-то или что-то затирает. И причем происходит этот в момент выхода, т.к. музыка-то играет "до последнего". Поставил брэйкпоинт в деструктор класса и в функцию удаления этого backendObject, думаю может что увижу... Каково же было мое удивление, когда я не провалился по этому брэйкпоинту в моем деструкторе и попал почему-то сразу к удалению backendObject (которое как я понимаю должно происходить уже после того, как я выйду из деструктора, потому что QT удаляет все созданные объекты-наследники от QObject уже при выходе из eventLoop-а). Причем этот мой класс - наследник от QMainWidget (тут мне сразу стало понятно почему не вызываются деструкторы самописных кнопок, о чем я тут недавно спрашивал). Долго не мог понять что за фигня... В конце концов выяснил (точнее вспомнил), что я запретил выход из программы кроме как по нажатию кнопки "выйти". А в ней стоял вызов exit(0). Сунулся в assistant... читал-читал нашел интересное:
Цитата
void QCoreApplication::quit () [static slot]
Tells the application to exit with return code 0 (success). Equivalent to calling QCoreApplication::exit(0).

Попробовал поставить qApp->quit() моментально попал к себе в деструктор. И все встало на свои места. Отработал деструктор, совершенно нормально удалился backendObject и все. Сталобыть exit(0) и qApp->exit(0) не одно и тоже. Хотя по обоим происходит выход из программы.. Только в первом случае непонятно что вообще происходит... И еще непонятно, exit(0) это какой? QEventLoop::exit или QThread::exit? Явно не QCoreApplication::exit раз он эквивалентен quit (с 0-м кодом)

Да, и еще возник вопрос про phonon.. хотя нет, лучше в другом треде это спросить)

kwisp, спасибо что откликнулся)

Сообщение отредактировал Rocky - 12.2.2010, 17:39
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.12.2024, 19:43