Название: Проблема с ALSA Отправлено: sergebegger от Июль 04, 2010, 14:54 Помогите пожалуйста, куда копать?
При изменении Volume - segmentation fault Исходники прилагаются..... Название: Re: Проблема с ALSA Отправлено: Rcus от Июль 04, 2010, 15:46 Valgrind же
Цитировать ==23310== Use of uninitialised value of size 8 hint: line 10==23310== at 0x4041BA: MainWindow::setVolume(int) (mainwindow.cpp:20) ==23310== by 0x4095BE: MainWindow::qt_metacall(QMetaObject::Call, int, void**) (moc_mainwindow.cpp:72) ==23310== by 0x5F26E3E: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) ==23310== by 0x5968BDD: QAbstractSlider::valueChanged(int) (moc_qabstractslider.cpp:182) ==23310== by 0x5721CAB: QSlider::mouseMoveEvent(QMouseEvent*) (qslider.cpp:514) ==23310== by 0x53231DE: QWidget::event(QEvent*) (qwidget.cpp:7983) ==23310== by 0x52CD22B: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) ==23310== by 0x52D3ECA: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3865) ==23310== by 0x5F1406B: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) ==23310== by 0x52D30AD: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) (qcoreapplication.h:215) ==23310== by 0x5352F64: QETWidget::translateMouseEvent(_XEvent const*) (qapplication_x11.cpp:4368) ==23310== by 0x53518AB: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3501) ==23310== ==23310== Invalid read of size 8 ==23310== at 0x4041BA: MainWindow::setVolume(int) (mainwindow.cpp:20) ==23310== by 0x4095BE: MainWindow::qt_metacall(QMetaObject::Call, int, void**) (moc_mainwindow.cpp:72) ==23310== by 0x5F26E3E: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) ==23310== by 0x5968BDD: QAbstractSlider::valueChanged(int) (moc_qabstractslider.cpp:182) ==23310== by 0x5721CAB: QSlider::mouseMoveEvent(QMouseEvent*) (qslider.cpp:514) ==23310== by 0x53231DE: QWidget::event(QEvent*) (qwidget.cpp:7983) ==23310== by 0x52CD22B: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) ==23310== by 0x52D3ECA: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3865) ==23310== by 0x5F1406B: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) ==23310== by 0x52D30AD: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) (qcoreapplication.h:215) ==23310== by 0x5352F64: QETWidget::translateMouseEvent(_XEvent const*) (qapplication_x11.cpp:4368) ==23310== by 0x53518AB: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3501) ==23310== Address 0x56 is not stack'd, malloc'd or (recently) free'd ==23310== ==23310== ==23310== Process terminating with default action of signal 11 (SIGSEGV) ==23310== Access not within mapped region at address 0x56 ==23310== at 0x4041BA: MainWindow::setVolume(int) (mainwindow.cpp:20) ==23310== by 0x4095BE: MainWindow::qt_metacall(QMetaObject::Call, int, void**) (moc_mainwindow.cpp:72) ==23310== by 0x5F26E3E: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) ==23310== by 0x5968BDD: QAbstractSlider::valueChanged(int) (moc_qabstractslider.cpp:182) ==23310== by 0x5721CAB: QSlider::mouseMoveEvent(QMouseEvent*) (qslider.cpp:514) ==23310== by 0x53231DE: QWidget::event(QEvent*) (qwidget.cpp:7983) ==23310== by 0x52CD22B: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) ==23310== by 0x52D3ECA: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3865) ==23310== by 0x5F1406B: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) ==23310== by 0x52D30AD: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) (qcoreapplication.h:215) ==23310== by 0x5352F64: QETWidget::translateMouseEvent(_XEvent const*) (qapplication_x11.cpp:4368) ==23310== by 0x53518AB: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3501) Название: Re: Проблема с ALSA Отправлено: sergebegger от Июль 04, 2010, 15:57 Спасибо за подсказку про Valgrind - gdb такого не показал.
А нельзя-ли поконкретнее ткнуть носом? :D Название: Re: Проблема с ALSA Отправлено: sergebegger от Июль 04, 2010, 16:06 А у меня картина другая.....
Цитировать ==12223== Invalid read of size 4 ==12223== at 0x804ADB7: MainWindow::setVolume(int) (mainwindow.cpp:20) ==12223== by 0x804FC0F: MainWindow::qt_metacall(QMetaObject::Call, int, void**) (moc_mainwindow.cpp:72) ==12223== by 0x513F5DA: QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) (in /usr/lib/libQtCore.so.4.6.2) ==12223== by 0x514E4AE: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib/libQtCore.so.4.6.2) ==12223== by 0x5BDE8D3: QAbstractSlider::valueChanged(int) (in /usr/lib/libQtGui.so.4.6.2) ==12223== by 0x58F4925: QAbstractSlider::setValue(int) (in /usr/lib/libQtGui.so.4.6.2) ==12223== by 0x58F49FD: QAbstractSlider::triggerAction(QAbstractSlider::SliderAction) (in /usr/lib/libQtGui.so.4.6.2) ==12223== by 0x58F4EB8: QAbstractSlider::setSliderPosition(int) (in /usr/lib/libQtGui.so.4.6.2) ==12223== by 0x5995638: QSlider::mouseMoveEvent(QMouseEvent*) (in /usr/lib/libQtGui.so.4.6.2) ==12223== by 0x556CF0E: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.6.2) ==12223== by 0x58F4794: QAbstractSlider::event(QEvent*) (in /usr/lib/libQtGui.so.4.6.2) ==12223== by 0x5995CDE: QSlider::event(QEvent*) (in /usr/lib/libQtGui.so.4.6.2) ==12223== Address 0x0 is not stack'd, malloc'd or (recently) free'd Название: Re: Проблема с ALSA Отправлено: sergebegger от Июль 04, 2010, 16:40 Интересный момент - кто-же kill-яет микшер?
И как его от этого оградить? Вот такой вариант работает... Код: void MainWindow::setVolume(int value) Название: Re: Проблема с ALSA Отправлено: Rcus от Июль 04, 2010, 20:08 Что значит другая? Различие в размере в сообщении Invalid read of size 8 объясняется отличием в размере указателя. mainwindow.cpp:20 - вызов виртуального метода, значит ошибка произошла во время доступа к vtbl, что в данном случае является следствием обращения к неинициализированному указателю на объект. "hint: line 10" указывал на mainwindow.cpp:10, где вы вместо инициализации MainWindow::amixer создали локальную переменную.
Всё это выводится из первого сообщения, куда еще точнее? Название: Re: Проблема с ALSA Отправлено: sergebegger от Июль 06, 2010, 01:36 "Учиться, учиться, и ещё раз учиться"((с) однако В.И. Ленин ) - для меня это до сих пор актуально..... Спасибо, разобрался....
|