|
Bugzilla – Full Text Bug Listing |
| Summary: | yast2-ncurses-2.18.11-0.1.1: crash of yast -i with a segmentation fault | ||
|---|---|---|---|
| Product: | [openSUSE] openSUSE 11.2 | Reporter: | Arne Reiter <arne.reiter> |
| Component: | YaST2 | Assignee: | Gabriele Mohr <gs> |
| Status: | RESOLVED FIXED | QA Contact: | Jiri Srain <jsrain> |
| Severity: | Critical | ||
| Priority: | P2 - High | CC: | chucky666, forgotten_wVahB7imRu, forgotten_ZC6aJTElLj, freespacer, listacc, ma, manfred99, meissner, petr.m, vesa.jaaskelainen, wil.c |
| Version: | Final | ||
| Target Milestone: | --- | ||
| Hardware: | All | ||
| OS: | openSUSE 11.2 | ||
| Whiteboard: | maint:released:11.1:30099 maint:released:11.2:30099 maint:released:sle11:30100 | ||
| Found By: | --- | Services Priority: | |
| Business Priority: | Blocker: | --- | |
| Marketing QA Status: | --- | IT Deployment: | --- |
| Attachments: | signal log from running yast2 | ||
|
Description
Arne Reiter
2010-01-07 23:26:01 UTC
Same with me, the yast2-ncurses update of this week (yast2-ncurses-2.18.11-0.1.1.x86_64) is broken. A call of "you" gives: sbin/yast2: line 454: 6601 Segmentation fault $ybindir/y2base $module "$@" "$SELECTED_GUI" $Y2_GEOMETRY $Y2UI_ARGS I have run save_y2logs /tmp/gaga/y2logs.tgz and got in YaST2/signal: === 2010-01-08 09:32:27 +0100 === YaST got signal 11 at YCP file /usr/share/YaST2/clients/online_update_select.ycp:105 Liberating suppressed debugging messages: End of suppressed debugging messages Backtrace: (use c++filt to demangle) /usr/X11R6/lib64/liby2.so.2(_Z20signal_log_backtracev+0x23)[0x7f17d5553cb3] /usr/X11R6/lib64/liby2.so.2(_Z14signal_handleri+0x152)[0x7f17d55545f2] /lib64/libc.so.6[0x7f17d365f560] /usr/lib64/YaST2/plugin/libpy2ncurses_pkg.so.2(_ZN10NCPkgTableC1EP7YWidgetP12YTableHeader+0x1df)[0x7f17cc2381af] /usr/lib64/YaST2/plugin/libpy2ncurses_pkg.so.2(_ZN17NCPackageSelector15createYouLayoutEP7YWidget+0x1b3)[0x7f17cc2499b3] /usr/lib64/YaST2/plugin/libpy2ncurses_pkg.so.2(_ZN22NCPackageSelectorStartC1EP7YWidgetl12YUIDimension+0x153)[0x7f17cc23e593] /usr/lib64/YaST2/plugin/libpy2ncurses_pkg.so.2(_ZN27NCPackageSelectorPluginImpl21createPackageSelectorEP7YWidgetl+0x27)[0x7f17cc23e797] /usr/lib64/YaST2/plugin/libpy2UI.so.2(_ZN15YCPDialogParser20parsePackageSelectorEP7YWidgetR10YWidgetOptRK7YCPTermRK7YCPListi+0x3d9)[0x7f17d23ef279] /usr/lib64/YaST2/plugin/libpy2UI.so.2(_ZN15YCPDialogParser19parseWidgetTreeTermEP7YWidgetR10YWidgetOptRK7YCPTerm+0x1d1c)[0x7f17d23fa8ac] /usr/lib64/YaST2/plugin/libpy2UI.so.2(_ZN15YCPDialogParser19parseWidgetTreeTermEP7YWidgetRK7YCPTerm+0x97)[0x7f17d23fc157] /usr/lib64/YaST2/plugin/libpy2UI.so.2(_ZN6YCP_UI10OpenDialogERK7YCPTermS2_+0x2f6)[0x7f17d23d45a6] /usr/lib64/YaST2/plugin/libpy2UI.so.2(_ZN12YUINamespace10OpenDialogERK7YCPTermS2_+0x31)[0x7f17d23bad41] /usr/lib64/YaST2/plugin/libpy2UI.so.2(_ZN11YUIFunction16evaluateCall_intEv+0x3669)[0x7f17d23c9199] /usr/lib64/YaST2/plugin/libpy2UI.so.2(_ZN16YCPBuiltinCaller4callEv+0x22)[0x7f17d23da092] /usr/X11R6/lib64/libyui.so.3(_ZN3YUI16uiThreadMainLoopEv+0x43)[0x7f17d2129b13] /usr/X11R6/lib64/libyui.so.3(_Z15start_ui_threadPv+0xe)[0x7f17d2129c6e] /lib64/libpthread.so.0[0x7f17d485865d] /lib64/libc.so.6(clone+0x6d)[0x7f17d36fe14d] hope this helps. Please fix ASAP, this is really a brown-paper-bag bug. I second that. It happens regardless of architecture. Please fix ASAP or pull the update at least! I just ran valgrind, it reveals 2 different issues: # valgrind -v --log-file=gaga.%p.log --trace-children=yes --track-origins=yes /sbin/yast2 online_update ==21848== Conditional jump or move depends on uninitialised value(s) ==21848== at 0xF4FC4B2: NClabel::drawAt(NCursesWindow&, unsigned long, unsigned long, wrect const&, NC::ADJUST, bool) const (NCtext.cc:304) ==21848== by 0xF53B3C9: NCProgressBar::wRedraw() (NCtext.h:119) ==21848== by 0xF527965: NCWidget::Redraw(bool) (NCWidget.cc:451) ==21848== by 0xF53BE56: NCProgressBar::setLabel(std::string const&) (NCProgressBar.cc:135) ==21848== by 0x8DD75E2: YProgressBar::setProperty(std::string const&, YPropertyValue const&) (in /usr/lib64/libyui.so.3.0.0) ==21848== by 0x8AFA4AA: YCP_UI::ChangeWidget(YCPValue const&, YCPValue const&, YCPValue const&) (in /usr/lib64/YaST2/plugin/libpy2UI.so.2.0.0) ==21848== by 0x8ADDADB: YUINamespace::ChangeWidget(YCPTerm const&, YCPSymbol const&, YCPValue const&) (in /usr/lib64/YaST2/plugin/libpy2UI.so.2.0.0) ==21848== by 0x8AED61B: YUIFunction::evaluateCall_int() (in /usr/lib64/YaST2/plugin/libpy2UI.so.2.0.0) ==21848== by 0x8AFD091: YCPBuiltinCaller::call() (in /usr/lib64/YaST2/plugin/libpy2UI.so.2.0.0) ==21848== by 0x8D94B12: YUI::uiThreadMainLoop() (in /usr/lib64/libyui.so.3.0.0) ==21848== by 0x8D94C6D: start_ui_thread(void*) (in /usr/lib64/libyui.so.3.0.0) ==21848== by 0x629265C: start_thread (pthread_create.c:297) ==21848== Uninitialised value was created by a stack allocation ==21848== at 0xF53BDB0: NCProgressBar::setLabel(std::string const&) (NCProgressBar.cc:131) and the actual crash ==21848== Invalid read of size 8 ==21848== at 0x147141AF: NCPkgTable::NCPkgTable(YWidget*, YTableHeader*) (auto_ptr.h:242) ==21848== by 0x147259B2: NCPackageSelector::createYouLayout(YWidget*) (NCPackageSelector.cc:1528) ==21848== by 0x1471A592: NCPackageSelectorStart::NCPackageSelectorStart(YWidget*, long, YUIDimension) (NCPackageSelectorStart.cc:60) ==21848== by 0x1471A796: NCPackageSelectorPluginImpl::createPackageSelector(YWidget*, long) (NCPackageSelectorPluginImpl.cc:46) ==21848== by 0x8B12278: YCPDialogParser::parsePackageSelector(YWidget*, YWidgetOpt&, YCPTerm const&, YCPList const&, int) (in /usr/lib64/YaST2/plugin/libpy2UI.so.2.0.0) ==21848== by 0x8B1D8AB: YCPDialogParser::parseWidgetTreeTerm(YWidget*, YWidgetOpt&, YCPTerm const&) (in /usr/lib64/YaST2/plugin/libpy2UI.so.2.0.0) ==21848== by 0x8B1F156: YCPDialogParser::parseWidgetTreeTerm(YWidget*, YCPTerm const&) (in /usr/lib64/YaST2/plugin/libpy2UI.so.2.0.0) ==21848== by 0x8AF75A5: YCP_UI::OpenDialog(YCPTerm const&, YCPTerm const&) (in /usr/lib64/YaST2/plugin/libpy2UI.so.2.0.0) ==21848== by 0x8ADDD40: YUINamespace::OpenDialog(YCPTerm const&, YCPTerm const&) (in /usr/lib64/YaST2/plugin/libpy2UI.so.2.0.0) ==21848== by 0x8AEC198: YUIFunction::evaluateCall_int() (in /usr/lib64/YaST2/plugin/libpy2UI.so.2.0.0) ==21848== by 0x8AFD091: YCPBuiltinCaller::call() (in /usr/lib64/YaST2/plugin/libpy2UI.so.2.0.0) ==21848== by 0x8D94B12: YUI::uiThreadMainLoop() (in /usr/lib64/libyui.so.3.0.0) ==21848== Address 0x10fbdc5800000008 is not stack'd, malloc'd or (recently) free'd ==21848== ==21848== ==21848== Process terminating with default action of signal 11 (SIGSEGV) ==21848== at 0x147141AF: NCPkgTable::NCPkgTable(YWidget*, YTableHeader*) (auto_ptr.h:242) ==21848== by 0x147259B2: NCPackageSelector::createYouLayout(YWidget*) (NCPackageSelector.cc:1528) ==21848== by 0x1471A592: NCPackageSelectorStart::NCPackageSelectorStart(YWidget*, long, YUIDimension) (NCPackageSelectorStart.cc:60) ==21848== by 0x1471A796: NCPackageSelectorPluginImpl::createPackageSelector(YWidget*, long) (NCPackageSelectorPluginImpl.cc:46) ==21848== by 0x8B12278: YCPDialogParser::parsePackageSelector(YWidget*, YWidgetOpt&, YCPTerm const&, YCPList const&, int) (in /usr/lib64/YaST2/plugin/libpy2UI.so.2.0.0) ==21848== by 0x8B1D8AB: YCPDialogParser::parseWidgetTreeTerm(YWidget*, YWidgetOpt&, YCPTerm const&) (in /usr/lib64/YaST2/plugin/libpy2UI.so.2.0.0) ==21848== by 0x8B1F156: YCPDialogParser::parseWidgetTreeTerm(YWidget*, YCPTerm const&) (in /usr/lib64/YaST2/plugin/libpy2UI.so.2.0.0) ==21848== by 0x8AF75A5: YCP_UI::OpenDialog(YCPTerm const&, YCPTerm const&) (in /usr/lib64/YaST2/plugin/libpy2UI.so.2.0.0) ==21848== by 0x8ADDD40: YUINamespace::OpenDialog(YCPTerm const&, YCPTerm const&) (in /usr/lib64/YaST2/plugin/libpy2UI.so.2.0.0) ==21848== by 0x8AEC198: YUIFunction::evaluateCall_int() (in /usr/lib64/YaST2/plugin/libpy2UI.so.2.0.0) ==21848== by 0x8AFD091: YCPBuiltinCaller::call() (in /usr/lib64/YaST2/plugin/libpy2UI.so.2.0.0) ==21848== by 0x8D94B12: YUI::uiThreadMainLoop() (in /usr/lib64/libyui.so.3.0.0) Happy hacking! Created attachment 335608 [details]
signal log from running yast2
Same here. yast2 online update and software maintainance is dead in the water on the one system I upgraded - I halted updates on the rest of our systems. I had the same results with the factory version. I have attached a a signal file.
And please do distribute instructions how to install the forthcoming fix... Without the online update GUI its kinda hard to install online updates :) I suppose this affects mostly servers with only text console installations. *** Bug 569562 has been marked as a duplicate of this bug. *** Right, last y2-ncurses update (as for bug #550733) *cobed* things up. It introduced A[P|B]I change and with y2-ncurses-pkg still linking against old version of y2-ncurses shared lib, the segfault occurs. If both of these pkgs respected shared lib policy and/or had dependencies set properly, it wouldn't happen. Possible workarounds: 0) do not install the update :-| in case it is already too late: 1) downgrade to y2-ncurses 2.18.10 or 2) rebuild y2-ncurses-pkg from the source: 2a) svn co http://svn.opensuse.org/svn/yast/trunk/ncurses-pkg/ 2b) make -f Makefile.cvs 2c) make 2d) sudo make install (get ncurses-devel, yast2-libyui-devel, zypp-devel packs first) Hi, some packages from Update-Repo seems be broken again. (e.g., Kernel-Update) I set the priority of this bug from NONE to HIGH. I ask again: Who tests this updated packages before release? :-( Of course, the workarounds are okay, but this isn't the solutions for a broken Update-Repo. :-( I can use zypper, but sometime I need the yast software management for convenient view on my server. Go ahead and fix this issue in Update-Repo ASAP, please. Thanks. *** Bug 569628 has been marked as a duplicate of this bug. *** Maintenance team: is it possible to withdraw the patch from update repositories for the time being until we find some solution? It makes text-mode package manager defunct, many users are affected by this issue. Lots of people will have installed it already. You say we could also rebuild and release some more packages to fix this? WHich ones? Just yast2-ncurses-pkg?
> WHich ones? Just yast2-ncurses-pkg?
Yes, that should do the trick.
For proper fix, we need to tune the dependencies of y2-ncurses-pkg so that something like this does not happen in the future.
The SWAMPID for this issue is 30098. Please submit the patch and patchinfo file using this ID. (https://swamp.suse.de/webswamp/wf/30098) whatdependson yast2-ncurses-devel - yast2-ncurses-pkg (kmachalkova@novell.com) - yast2-schema (mvidner@novell.com) Is yast2-schema also affected? I guess this affects 11.1,11.2 and sle11 (judging they have all a similar patch)? > Is yast2-schema also affected? Nah, y2-schema only collects info about all YaST packages for AutoYaST use, it's not that it could make anything crash > > I guess this affects 11.1,11.2 and sle11 (judging they have all a similar > patch)? Yes, unfortunately :( *** Bug 569965 has been marked as a duplicate of this bug. *** Update released for: yast2-ncurses, yast2-ncurses-debuginfo, yast2-ncurses-debugsource, yast2-ncurses-devel, yast2-ncurses-pkg, yast2-ncurses-pkg-debuginfo, yast2-ncurses-pkg-debugsource Products: openSUSE 11.1 (debug, i586, ppc, x86_64) openSUSE 11.2 (debug, i586, x86_64) Released (see last comment). Also affected 11.1 (the dialog did not open, but yast did not crash). sle11 somehow was not affected, but we released a fix for it too. If you are affected, install either with a GUI updater (yast2 or one of the applets) or with "zypper up" on the commandline. (Basically we released yast2-ncurses-pkg built against the released yast2-ncurses). As for the QA question ... openSUSE QA is very limited, we rely pretty much on people testing the -test repositories. Apparently none of those testers use the ncurses UI (I guess most use either the applets or zypper up). Released (see last comment). Also affected 11.1 (the dialog did not open, but yast did not crash). sle11 somehow was not affected, but we released a fix for it too. If you are affected, install either with a GUI updater (yast2 or one of the applets) or with "zypper up" on the commandline. (Basically we released yast2-ncurses-pkg built against the released yast2-ncurses). As for the QA question ... openSUSE QA is very limited, we rely pretty much on people testing the -test repositories. Apparently none of those testers use the ncurses UI (I guess most use either the applets or zypper up). In defense of (enterprise product) QA I have to say that taking the amount of patches one has to test, the time is just enough to verify the patch really fixes the reported bug and do some basic testing around. If the newly introduced bug is not immediately obvious, it can happen it comes unnoticed. It's what happened here, the bug fixed by offending patch is reported against yast2-backup, yast2-ncurses was fixed and it was ncurses packager (i.e. one of *many* YaST modules) that crashed in the end. Update released for: yast2-ncurses, yast2-ncurses-debuginfo, yast2-ncurses-debugsource, yast2-ncurses-devel, yast2-ncurses-pkg, yast2-ncurses-pkg-debuginfo, yast2-ncurses-pkg-debugsource Products: SLE-DEBUGINFO 11 (i386, ia64, ppc64, s390x, x86_64) SLE-DESKTOP 11 (i386, x86_64) SLE-POS 11 (i386) SLE-SDK 11 (i386, ia64, ppc64, s390x, x86_64) SLE-SERVER 11 (i386, ia64, ppc64, s390x, x86_64) *** Bug 569965 has been marked as a duplicate of this bug. *** Update released for: yast2-ncurses, yast2-ncurses-debuginfo, yast2-ncurses-debugsource, yast2-ncurses-devel, yast2-ncurses-pkg Products: SUSE-MOBLIN 2.0 (i386) SUSE-MOBLIN 2.0-DEBUG (i386) |