Bug 444591

Summary: yast2 sw_single crashes when searching for packages
Product: [openSUSE] openSUSE 11.1 Reporter: Holger Sickenberg <holgi>
Component: YaST2Assignee: Stefan Hundhammer <shundhammer>
Status: RESOLVED FIXED QA Contact: Jiri Srain <jsrain>
Severity: Normal    
Priority: P5 - None CC: dmueller, tgoettlicher
Version: Beta 5   
Target Milestone: ---   
Hardware: x86-64   
OS: Other   
Whiteboard: #3d4b
Found By: Component Test Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Attachments: y2logs.tgz

Description Holger Sickenberg 2008-11-13 11:52:27 UTC
Created attachment 251870 [details]
y2logs.tgz

Logged in as root via ssh -X on a machine I opened "yast2 sw_single". After searching and selecting some packages "yast2 sw_single" crashed when searching for an additional package. Here is the error message:

YaST got signal 11 at YCP file PackagesUI.ycp:239
/sbin/yast2: line 437: 10348 Segmentation fault      $ybindir/y2base $module "$@" "$SELECTED_GUI" $Y2_GEOMETRY $Y2UI_ARGS
Comment 1 Jan Kupec 2008-11-13 13:32:49 UTC
The backtrace points to QT. Huha, can you investigate?
Comment 2 Stefan Hundhammer 2008-11-13 14:09:38 UTC
Hm - the backtrace is deep within libqt4. That may be a problem of libqt4, or it may be a prior memory corruption.


   Frame  0: /usr/lib64/liby2.so.2  log_backtrace()
   Frame  1: /usr/lib64/liby2.so.2  signal_handler(int)
   Frame  2: /lib64/libc.so.6 [0x7fd38c1657b0]
   Frame  3: /usr/lib64/libQtGui.so.4  QPainter::worldMatrixEnabled() const
   Frame  4: /usr/lib64/libQtGui.so.4  QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*)
   Frame  5: /usr/lib64/libQtGui.so.4  QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*)
   Frame  6: /usr/lib64/libQtGui.so.4  QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*)
   Frame  7: /usr/lib64/libQtGui.so.4  QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*)
   Frame  8: /usr/lib64/libQtGui.so.4  QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*)
   Frame  9: /usr/lib64/libQtGui.so.4  QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*)
   Frame 10: /usr/lib64/libQtGui.so.4  QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*)
   Frame 11: /usr/lib64/libQtGui.so.4  QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*)
   Frame 12: /usr/lib64/libQtGui.so.4  QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*)
   Frame 13: /usr/lib64/libQtGui.so.4  QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*)
   Frame 14: /usr/lib64/libQtGui.so.4  QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*)
   Frame 15: /usr/lib64/libQtGui.so.4  QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*)
   Frame 16: /usr/lib64/libQtGui.so.4  QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*)
   Frame 17: /usr/lib64/libQtGui.so.4  QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*)
   Frame 18: /usr/lib64/libQtGui.so.4  QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*)
   Frame 19: /usr/lib64/libQtGui.so.4  QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*)
   Frame 20: /usr/lib64/libQtGui.so.4  QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*)
   Frame 21: /usr/lib64/libQtGui.so.4  QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*)
   Frame 22: /usr/lib64/libQtGui.so.4 [0x7fd38588f5f1]
   Frame 23: /usr/lib64/libQtGui.so.4 [0x7fd38588fa57]
   Frame 24: /usr/lib64/libQtGui.so.4  QWidget::event(QEvent*)
   Frame 25: /usr/lib64/libQtGui.so.4  QApplicationPrivate::notify_helper(QObject*, QEvent*)
   Frame 26: /usr/lib64/libQtGui.so.4  QApplication::notify(QObject*, QEvent*)
   Frame 27: /usr/lib64/libQtCore.so.4  QCoreApplication::notifyInternal(QObject*, QEvent*)
   Frame 28: /usr/lib64/libQtCore.so.4  QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*)
   Frame 29: /usr/lib64/libQtCore.so.4  QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
   Frame 30: /usr/lib64/libQtGui.so.4 [0x7fd385777962]
   Frame 31: /usr/lib64/libQtCore.so.4  QCoreApplication::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
   Frame 32: /usr/lib64/YaST2/plugin/libpy2qt_pkg.so.2  YQPkgSearchFilterView::filter()
   Frame 33: /usr/lib64/YaST2/plugin/libpy2qt_pkg.so.2  YQPkgSearchFilterView::qt_metacall(QMetaObject::Call, int, void**)
   Frame 34: /usr/lib64/libQtCore.so.4  QMetaObject::activate(QObject*, int, int, void**)
   Frame 35: /usr/lib64/libQtGui.so.4  QAbstractButton::clicked(bool)
   Frame 36: /usr/lib64/libQtGui.so.4 [0x7fd3859ef9bb]
   Frame 37: /usr/lib64/libQtGui.so.4 [0x7fd3859f1532]
   Frame 38: /usr/lib64/libQtGui.so.4  QAbstractButton::timerEvent(QTimerEvent*)
   Frame 39: /usr/lib64/libQtCore.so.4  QObject::event(QEvent*)
   Frame 40: /usr/lib64/libQtGui.so.4  QWidget::event(QEvent*)
   Frame 41: /usr/lib64/libQtGui.so.4  QApplicationPrivate::notify_helper(QObject*, QEvent*)
   Frame 42: /usr/lib64/libQtGui.so.4  QApplication::notify(QObject*, QEvent*)
   Frame 43: /usr/lib64/libQtCore.so.4  QCoreApplication::notifyInternal(QObject*, QEvent*)
   Frame 44: /usr/lib64/libQtCore.so.4 [0x7fd3861d71b0]
   Frame 45: /usr/lib64/libQtCore.so.4  QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
   Frame 46: /usr/lib64/libQtGui.so.4 [0x7fd385777962]
   Frame 47: /usr/lib64/libQtCore.so.4  QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
   Frame 48: /usr/lib64/libQtCore.so.4  QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)
   Frame 49: /usr/lib64/YaST2/plugin/libpy2qt.so.2  YQDialog::waitForEventInternal(int)
   Frame 50: /usr/lib64/libyui.so.3  YDialog::waitForEvent(int)
   Frame 51: /usr/lib64/YaST2/plugin/libpy2qt.so.2  YQUI::runPkgSelection(YWidget*)
   Frame 52: /usr/lib64/YaST2/plugin/libpy2UI.so.2  YCP_UI::RunPkgSelection(YCPValue const&)
   Frame 53: /usr/lib64/YaST2/plugin/libpy2UI.so.2  YUINamespace::RunPkgSelection(YCPValue const&)
   Frame 54: /usr/lib64/YaST2/plugin/libpy2UI.so.2  YUIFunction::evaluateCall_int()
   Frame 55: /usr/lib64/YaST2/plugin/libpy2UI.so.2  YCPBuiltinCaller::call()
   Frame 56: /usr/lib64/libyui.so.3  YUI::uiThreadMainLoop()
   Frame 57: /usr/lib64/libyui.so.3  start_ui_thread(void*)
   Frame 58: /lib64/libpthread.so.0 [0x7fd38dbdf070]
   Frame 59: /lib64/libc.so.6(clone+0x6d) [0x7fd38c208acd]

Comment 3 Stefan Hundhammer 2008-11-13 14:10:33 UTC
Dirk, those Qt warnings just prior to the crash might be relevant:

2008-11-13 12:42:27 <2> hp(10348) [qt-ui] YQUI.cc(qMessageHandler):708 <libqt-warning> QPaintEngine::setSystemClip: Should not be changed while engine is active
2008-11-13 12:42:27 <2> hp(10348) [qt-ui] YQUI.cc(qMessageHandler):708 <libqt-warning> QPaintEngine::setSystemClip: Should not be changed while engine is active
2008-11-13 12:42:27 <2> hp(10348) [qt-ui] YQUI.cc(qMessageHandler):708 <libqt-warning> QWidgetPrivate::beginSharedPainter: Painter is already active
2008-11-13 12:42:27 <3> hp(10348) [liby2] genericfrontend.cc(signal_handler):196 got signal 11 at YCP file PackagesUI.ycp:239
Comment 4 Stefan Hundhammer 2008-11-14 17:07:49 UTC
Dirk, please have a look at the backtrace in comment #2. Anything familiar?
Comment 5 Dirk Mueller 2008-11-14 22:18:54 UTC
no, you have to breakpoint on the paintengine warning and backtrace that one to see which code triggers it.

the crash is due to the warning, the paintengine can't deal with it being started twice as that must not happen.
Comment 6 Dirk Mueller 2008-11-17 19:43:29 UTC
I've added a patch to libqt4 that might fix this bugreport. please test.
Comment 7 Stefan Hundhammer 2008-11-18 11:01:03 UTC
Not a single similar report - adjusting severity
Comment 8 Stefan Hundhammer 2008-11-18 11:03:38 UTC
Since I can't even reproduce the problem in my environment, I don't see a way to test that libqt4 patch.
Comment 9 Stefan Hundhammer 2008-11-18 13:18:50 UTC
Holger, please check with the next version if that patch fixes the problem and reopen if necessary.