Bug 569000 - yast2-ncurses-2.18.11-0.1.1: crash of yast -i with a segmentation fault
Summary: yast2-ncurses-2.18.11-0.1.1: crash of yast -i with a segmentation fault
Status: RESOLVED FIXED
: 569562 569628 569965 (view as bug list)
Alias: None
Product: openSUSE 11.2
Classification: openSUSE
Component: YaST2 (show other bugs)
Version: Final
Hardware: All openSUSE 11.2
: P2 - High : Critical with 3 votes (vote)
Target Milestone: ---
Assignee: Gabriele Mohr
QA Contact: Jiri Srain
URL:
Whiteboard: maint:released:11.1:30099 maint:relea...
Keywords:
Depends on:
Blocks:
 
Reported: 2010-01-07 23:26 UTC by Arne Reiter
Modified: 2010-02-08 15:20 UTC (History)
11 users (show)

See Also:
Found By: ---
Services Priority:
Business Priority:
Blocker: ---
Marketing QA Status: ---
IT Deployment: ---


Attachments
signal log from running yast2 (5.94 KB, application/octet-stream)
2010-01-08 15:20 UTC, Don Hughes
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Arne Reiter 2010-01-07 23:26:01 UTC
User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 (.NET CLR 3.5.30729)

yast -i crashes after an update of yast2-ncurses-2.18.11-0.1.1 with a segmentation fault

Reproducible: Always

Steps to Reproduce:
1. install yast2-ncurses-2.18.11-0.1.1
2. run yast -i
Actual Results:  
/sbin/yast: line 454: 29832 Segmentation fault      $ybindir/y2base $module "$@" "$SELECTED_GUI" $Y2_GEOMETRY $Y2UI_ARGS

Expected Results:  
The Yast Software Manager should start
Comment 1 Manfred Schwarb 2010-01-08 08:53:11 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.
Comment 2 Forgotten User ZC6aJTElLj 2010-01-08 12:38:10 UTC
I second that. It happens regardless of architecture.

Please fix ASAP or pull the update at least!
Comment 3 Manfred Schwarb 2010-01-08 14:08:00 UTC
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!
Comment 4 Don Hughes 2010-01-08 15:20:22 UTC
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.
Comment 5 Vesa Jääskeläinen 2010-01-10 12:08:27 UTC
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.
Comment 6 Katarina Machalkova 2010-01-11 15:24:09 UTC
*** Bug 569562 has been marked as a duplicate of this bug. ***
Comment 7 Katarina Machalkova 2010-01-11 18:05:19 UTC
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)
Comment 8 Sebastian Siebert 2010-01-12 06:15:24 UTC
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.
Comment 9 Katarina Machalkova 2010-01-12 09:55:54 UTC
*** Bug 569628 has been marked as a duplicate of this bug. ***
Comment 10 Katarina Machalkova 2010-01-12 10:00:24 UTC
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.
Comment 11 Marcus Meissner 2010-01-12 10:08:07 UTC
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?
Comment 12 Katarina Machalkova 2010-01-12 10:14:23 UTC
> 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.
Comment 13 Swamp Workflow Management 2010-01-12 10:17:55 UTC
The SWAMPID for this issue is 30098.
Please submit the patch and patchinfo file using this ID.
(https://swamp.suse.de/webswamp/wf/30098)
Comment 14 Marcus Meissner 2010-01-12 10:20:41 UTC
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)?
Comment 15 Katarina Machalkova 2010-01-12 10:30:03 UTC
> 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 :(
Comment 16 Katarina Machalkova 2010-01-12 14:14:48 UTC
*** Bug 569965 has been marked as a duplicate of this bug. ***
Comment 17 Swamp Workflow Management 2010-01-12 16:05:08 UTC
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)
Comment 18 Marcus Meissner 2010-01-12 16:08:42 UTC
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).
Comment 19 Marcus Meissner 2010-01-12 16:08:55 UTC
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).
Comment 20 Katarina Machalkova 2010-01-12 16:46:37 UTC
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.
Comment 21 Swamp Workflow Management 2010-01-12 23:09:05 UTC
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)
Comment 22 Katarina Machalkova 2010-01-13 09:27:31 UTC
*** Bug 569965 has been marked as a duplicate of this bug. ***
Comment 23 Swamp Workflow Management 2010-02-08 15:20:41 UTC
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)