Bug 765519

Summary: glib symbol clash makes YaST crash
Product: [openSUSE] openSUSE 12.2 Reporter: Duncan Mac-Vicar <dmacvicar>
Component: YaST2Assignee: Michal Filka <mfilka>
Status: RESOLVED FIXED QA Contact: Jiri Srain <jsrain>
Severity: Critical    
Priority: P1 - Urgent CC: aschnell, bwiedemann, cedric, cfeck, coolo, Creationn, cyberorg, forgotten_0FuaAO3939, forgotten_GcDfVwe3gD, j.reitsma, jsuchome, lnussel, lslezak, ma, ManuelStol, mvidner, tgoettlicher, thomas.nielsen, varyheavy
Version: Beta 1Flags: bwiedemann: SHIP_STOPPER? (coolo)
Target Milestone: ---   
Hardware: Other   
OS: Other   
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Attachments: Patch.
y2log
y2log
save_y2logs archive
Updated everything from Yast:Head, still has the same issue.

Description Duncan Mac-Vicar 2012-06-05 15:18:02 UTC
On 12.2 beta1, 

/usr/lib/YaST2/bin/y2base lan gtk
crashes immediately, in gtk guts, when trying to create the Gdk display manager.

I thought it was the Gtk libyui plugin, because Qt works. Until I tried

/usr/lib/YaST2/bin/y2base lan qt (this time as a normal user), crash in some g_ function.

Ludwig gave us the hint:

> nm -D /usr/lib64/YaST2/plugin/libpy2ag_ini.so.2.0.0 | grep g_free
000000000002f980 T g_free
000000000002f720 T g_string_free

Then I remembered a thread from Michael Filka and some glib functions.

Move libpy2ag_ini.so.2.0.0 to libpy2ag_ini.so.2.0.0.orig effectively fixes the crash.

We had a similar issue in libzypp, and the problem was the symbol conflict which were incompatible because libzypp was built with c++11 support.

The glib functions need to be renamed, removed, or YaST built with visibility=hidden or with a linker script.
Comment 1 Ludwig Nussel 2012-06-05 15:20:29 UTC
or just implement the needed shell quoting functions yourself
Comment 2 Thomas Göttlicher 2012-06-06 07:55:20 UTC
*** Bug 765483 has been marked as a duplicate of this bug. ***
Comment 3 Duncan Mac-Vicar 2012-06-08 12:03:10 UTC
*** Bug 759433 has been marked as a duplicate of this bug. ***
Comment 4 Ursan Marius Bogdan 2012-06-08 14:00:02 UTC
openSUSE 12.2 Beta 1 with KDE as default desktop, the module Software management from Yast is still crashing when removing a package with dependencies while using the Qt interface.
Comment 5 Michael Gorse 2012-06-11 21:29:30 UTC
Created attachment 494381 [details]
Patch.

Patch to add a link script to export only g_y2* symbols (ie, the plugin's constructor).
This patch works for me, anyway (I don't see the crash after building and installing the library).
Comment 6 Christoph Feck 2012-06-14 15:14:41 UTC
I doubt this bug is related to the crash in the Qt package manager, see bug https://bugzilla.novell.com/show_bug.cgi?id=761806
Comment 7 Jiří Suchomel 2012-06-15 08:40:51 UTC
*** Bug 767107 has been marked as a duplicate of this bug. ***
Comment 9 Manuel Stol 2012-06-16 12:21:54 UTC
YaST crashes in libpy2ag_xml.so.2

Repos: Factory, KDE, VLC, Packman (for ffmpeg)
Updated: 2012-06-16 (with 'zypper up' and 'zypper dup')

YaST Qt Software Manager crashes with following error:
"
/usr/lib/YaST2/bin/y2base: symbol lookup error: /usr/lib64/YaST2/plugin/libpy2ag_xml.so.2: undefined symbol: _Z16should_be_loggediSs
"

Steps to reproduce:
- Start YaST Qt Control Center:
    menu > Computer > YaST
- Start YaST Software Manager:
    Software > Software Manager
- Crash

Note:
- Starting YaST Software Manager directly,
  i.e. not via the YaST Control Center,
  will not produce the error message.
Comment 10 Arvin Schnell 2012-06-16 12:29:45 UTC
That is a completely different problem introduced just a few days ago and
already taken care of (see my mails on opensuse-buildservice and yast-devel).
Comment 11 Manuel Stol 2012-06-16 12:44:27 UTC
Ok, thanks.
Comment 12 Bernhard Wiedemann 2012-06-17 17:49:23 UTC
*** Bug 767224 has been marked as a duplicate of this bug. ***
Comment 13 Thomas Nielsen 2012-06-18 09:28:22 UTC
I See in comment #5 that there is a patch. Is there a chance to have this as something a little more user friendly to test and verify ( a binary or rpm ) please.
Comment 14 Martin Vidner 2012-06-18 14:47:46 UTC
Michal, rewriting the conflicting code to use C++ string manipulation is cleaner in the long term, but we need a temporary fix soon. Let's submit Mike's patch from comment 5.
Comment 15 Arvin Schnell 2012-06-18 15:57:00 UTC
I have now moved all functions from glib to the namespace YaST. Can someone
please check if the latest repo version now solves the problem?
Comment 16 Arvin Schnell 2012-06-18 16:22:41 UTC
New version works for me.
Comment 17 Michal Filka 2012-06-19 06:40:22 UTC
C++ version available (sent pull request). Sorry for delay, i have found some testcase issues in quoting too.
Comment 18 Bernhard Wiedemann 2012-06-19 07:23:52 UTC
http://openqa.opensuse.org/viewimg/openqa/testresults/openSUSE-DVD-x86_64-Build0443-yastdevel/yast2_i-2.png

shows a segfault from a new testrun with YaST:Head repos included.

changelog has

yast2-core-2.23.2-1.1.x86_64: 1339977600 Mon Jun 18 2012 aschnell suse.de
- fixed function name conflict in agent-ini (bnc#765519)
- 2.23.2

yast2-core-2.23.2-1.1.x86_64: 1339545600 Wed Jun 13 2012 aschnell suse.de
- fixed UTF-8 handling of several string builtins (bnc#755414)
Comment 19 Duncan Mac-Vicar 2012-06-19 07:52:23 UTC
Watching at Bernahrd's backtrace the crash is in the libyui ncurses classes, in a dynamic cast and does not seem related to the symbol clash. I think there are other bugs open that match better the libyui crashes.
Comment 20 Duncan Mac-Vicar 2012-06-19 08:09:07 UTC
Tracking the crash described by Bernhard in bug 767619
Comment 21 Bernhard Wiedemann 2012-06-20 10:00:09 UTC
This is an autogenerated message for OBS integration:
This bug (765519) was mentioned in
https://build.opensuse.org/request/show/125505 Factory / yast2-core
Comment 22 Bernhard Wiedemann 2012-06-20 12:00:23 UTC
This is an autogenerated message for OBS integration:
This bug (765519) was mentioned in
https://build.opensuse.org/request/show/125517 Factory / yast2-core
Comment 23 Ursan Marius Bogdan 2012-06-20 19:07:41 UTC
YaST got signal 11 at YCP file PackagesUI.ycp:280
/sbin/yast2: line 427:  3151 Segmentation fault      $ybindir/y2base $module "$@" "$SELECTED_GUI" $Y2_GEOMETRY $Y2UI_ARGS

The software management module from Yast is still crashing. Is this fix not in openSUSE 12.2 Beta 2? Where can i test it from ?
Comment 24 Michal Filka 2012-06-21 05:32:31 UTC
Ursan,

What is version of your yast2-core?

Could you attach y2logs? (see http://en.opensuse.org/openSUSE:Bugreport_YaST).

(In reply to comment #23)
> YaST got signal 11 at YCP file PackagesUI.ycp:280
> /sbin/yast2: line 427:  3151 Segmentation fault      $ybindir/y2base $module
> "$@" "$SELECTED_GUI" $Y2_GEOMETRY $Y2UI_ARGS
I think this bug is different from that which is discussed here.
Comment 25 Ursan Marius Bogdan 2012-06-21 06:15:41 UTC
Created attachment 495770 [details]
y2log
Comment 26 Ursan Marius Bogdan 2012-06-21 06:16:15 UTC
yast2-core version is 2.23.2
Comment 27 Thomas Nielsen 2012-06-21 06:59:34 UTC
Created attachment 495781 [details]
y2log

To add to the misery :-)

yast2 online_update &
[1] 2949
linux-p8rs:/var/log/YaST2 # YaST got signal 11 at YCP file /usr/share/YaST2/clients/online_update_select.ycp:136
/sbin/yast2: line 427:  2981 Segmentation fault      $ybindir/y2base $module "$@" "$SELECTED_GUI" $Y2_GEOMETRY $Y2UI_ARGS

[1]+  Exit 139                yast2 online_update
linux-p8rs:/var/log/YaST2 # rpm -qi yast2-core
Name        : yast2-core
Version     : 2.23.2
Release     : 1.2
Architecture: x86_64
Install Date: Wed Jun 20 12:56:49 2012
Group       : System/YaST
Size        : 4096364
License     : GPL-2.0+
Signature   : DSA/SHA1, Tue Jun 19 16:46:05 2012, Key ID 5b2547d861e7d06c
Source RPM  : yast2-core-2.23.2-1.2.src.rpm
Build Date  : Tue Jun 19 16:45:18 2012
Build Host  : build32
Relocations : (not relocatable)
Vendor      : obs://build.opensuse.org/YaST
Summary     : YaST2 - Core Libraries
Description :
This package contains the scanner, parser, and interpreter runtime
library for the YCP scripting language used in YaST2.
Distribution: YaST:Head / openSUSE_Factory
Comment 28 Jiří Suchomel 2012-06-21 11:04:57 UTC
Reopening for closer look if we have fixed it...
Comment 29 Jiří Suchomel 2012-06-21 11:09:35 UTC
Thomas, please test again with latest yast2-core from YaST:Head project, it's version 2.23.2:

https://build.opensuse.org/package/show?package=yast2-core&project=YaST%3AHead


If it crashes again, do not attach just the last y2log file, but whole content of  archive created by save_y2logs.
Comment 30 Thomas Nielsen 2012-06-21 13:58:15 UTC
Created attachment 495865 [details]
save_y2logs archive

yast2 online_update &
[1] 1995
linux-p8rs:~ # YaST got signal 11 at YCP file /usr/share/YaST2/clients/online_update_select.ycp:136
/sbin/yast2: line 427:  2027 Segmentation fault      $ybindir/y2base $module "$@" "$SELECTED_GUI" $Y2_GEOMETRY $Y2UI_ARGS

[1]+  Exit 139                yast2 online_update



linux-p8rs:~ #  rpm -qi yast2-core
Name        : yast2-core
Version     : 2.23.3
Release     : 2.1
Architecture: x86_64
Install Date: Thu Jun 21 15:50:03 2012
Group       : System/YaST
Size        : 4091759
License     : GPL-2.0+
Signature   : DSA/SHA1, Wed Jun 20 13:59:28 2012, Key ID 5b2547d861e7d06c
Source RPM  : yast2-core-2.23.3-2.1.src.rpm
Build Date  : Wed Jun 20 13:57:31 2012
Build Host  : build21
Relocations : (not relocatable)
Vendor      : obs://build.opensuse.org/YaST
Summary     : YaST2 - Core Libraries
Description :
This package contains the scanner, parser, and interpreter runtime
library for the YCP scripting language used in YaST2.
Distribution: YaST:Head / openSUSE_Factory
linux-p8rs:~ # save_y2logs 
Saving y2logs to /tmp/y2log-9vgJ6O.tar.gz
Comment 31 Jiří Suchomel 2012-06-21 14:09:38 UTC
Thomas, could you take a look at the logs? 
To me it seems to be crashing in UI...

And 2.23.3 version has Michal's and Arvin's fixes included...


Thomas: is it different with ncurses or GTK UI?
Comment 32 Thomas Nielsen 2012-06-21 14:51:51 UTC
I used to be able to make both interfaces segfault, but right now I cannot get ncurses to fail anymore. Whereas the GTK UI still happily falls over

To be clear, I am not doing exactly the same thing. In an ongoing workstation kamikaze, i regularly (weekly or more) do:
"Update If Newer Version Available"
and in ncurses i have to:
yast sw_single 
press enter in the search field
go to 
"Actions"
"All listed packages.."
"Update If Newer Version Available"

But in the yast2 GUI i do 
yast2 online_update
"Package"
"All packages"
"update if newer version available"
and prayers and for the moment :-/
yast2 online_update
YaST got signal 11 at YCP file /usr/share/YaST2/clients/online_update_select.ycp:136
/sbin/yast2: line 427:  6254 Segmentation fault      $ybindir/y2base $module "$@" "$SELECTED_GUI" $Y2_GEOMETRY $Y2UI_ARGS
Comment 33 Thomas Nielsen 2012-06-21 14:58:36 UTC
evidence of the ncurses interface crashing can be found in the initial bug i logged:
bug 767107

yast online_update
sbin/yast: line 427: 15676 Segmentation fault      $ybindir/y2base $module "$@"
"$SELECTED_GUI" $Y2_GEOMETRY $Y2UI_ARGS

yast2 online_update
YaST got signal 11 at YCP file
/usr/share/YaST2/clients/online_update_select.ycp:136
/sbin/yast2: line 427: 20217 Segmentation fault      $ybindir/y2base $module
"$@" "$SELECTED_GUI" $Y2_GEOMETRY $Y2UI_ARGS

for completeness, i also tried ncurses 
yast online_update
but could not make it segfault
Comment 34 Cedric Simon 2012-06-21 19:29:30 UTC
Error while selecting Wine package using yast GUI:

YaST got signal 11 at YCP file PackagesUI.ycp:280
/sbin/yast2: line 427:  8421 Segmentation fault      $ybindir/y2base $module "$@" "$SELECTED_GUI" $Y2_GEOMETRY $Y2UI_ARGS

Selecting WineDoors, itself selecting wine as dependency, gave no problem.

All installed packaged are updated already.

openSUSE 12.2 Beta 2 (x86_64)
VERSION = 12.2
CODENAME = Mantis

Linux linux-ir4m.site 3.4.2-1-desktop #1 SMP PREEMPT Thu Jun 14 17:07:01 UTC 2012 (a3aa67c) x86_64 x86_64 x86_64 GNU/Linux

Name        : yast2-core
Version     : 2.23.2
Release     : 1.1
Architecture: x86_64
Install Date: Tue 19 Jun 2012 05:13:13 PM CST
Group       : System/YaST
Size        : 3428391
License     : GPL-2.0+
Signature   : RSA/SHA256, Mon 18 Jun 2012 01:19:20 PM CST, Key ID b88b2fd43dbdc284
Source RPM  : yast2-core-2.23.2-1.1.src.rpm
Build Date  : Mon 18 Jun 2012 01:17:59 PM CST
Build Host  : build14
Relocations : (not relocatable)
Packager    : http://bugs.opensuse.org
Vendor      : openSUSE
Summary     : YaST2 - Core Libraries
Description :
This package contains the scanner, parser, and interpreter runtime
library for the YCP scripting language used in YaST2.
Distribution: openSUSE Factory
Comment 35 Stephan Kulow 2012-06-22 07:21:25 UTC
Cedric, what GUI? We have 3 of them - and GTK is known to be broken.
Comment 36 Thomas Nielsen 2012-06-22 07:57:36 UTC
I am on kde - hence should be qt for me - if you want me to add more "head" packages just say so, but i am reluctant to just take all from Yast head
Comment 37 Jigish Gohil 2012-06-22 10:09:32 UTC
Created attachment 495982 [details]
Updated everything from Yast:Head, still has the same issue.

crash using yast2 ldap-server

*** glibc detected *** /usr/lib/YaST2/bin/y2base: free(): invalid pointer: 0x09c7b777 ***


laptop:~ # rpm -qa|grep yast
yast2-dbus-client-2.22.0-12.13.i586
yast2-nfs-server-2.21.3-18.4.noarch
webyast-base-0.3.10-1.1.noarch
yast2-mouse-2.21.0-12.6.i586
yast2-control-center-gnome-2.21.3-10.14.i586
rubygem-webyast-activedirectory-0.3.1-1.2.i586
yast2-inetd-2.21.1-13.9.noarch
yast2-xml-2.16.1-125.12.i586
yast2-qt-graph-2.19.0-24.10.i586
rubygem-webyast-system-0.3.2-1.1.i586
yast2-slp-2.22.0-91.11.i586
yast2-country-2.22.6-135.1.i586
yast2-dhcp-server-2.22.0-20.28.noarch
qwebyast-0.0.13-5.5.i586
yast2-perl-bindings-2.19.1-23.8.i586
yast2-iscsi-server-2.22.0-24.7.noarch
rubygem-webyast-ntp-0.3.3-1.1.i586
yast2-kerberos-client-2.22.2-38.2.noarch
yast2-restore-2.21.2-18.6.noarch
yast2-x11-2.22.1-5.3.i586
yast2-ycp-ui-bindings-2.21.3-22.8.i586
yast2-slp-server-2.21.1-19.9.noarch
rubygem-webyast-eulas-0.3.2-1.2.i586
yast2-scanner-2.23.0-20.3.i586
yast2-nis-server-2.22.0-12.6.noarch
yast2-ftp-server-2.22.0-16.6.noarch
yast2-trans-stats-2.19.0-12.11.noarch
yast2-ncurses-2.22.4-61.1.i586
yast2-packager-webpin-2.22.6-123.2.i586
yast2-qt-pkg-2.21.25-75.1.i586
yast2-runlevel-2.21.3-22.8.noarch
rubygem-webyast-software-0.3.22-1.2.i586
yast2-sound-2.22.1-38.10.i586
yast2-control-center-2.22.2-57.3.i586
yast2-online-update-2.22.2-42.1.noarch
yast2-http-server-2.22.0-20.6.noarch
rubygem-webyast-status-0.3.3-1.2.i586
autoyast2-installation-2.22.2-77.20.noarch
yast2-backup-2.22.2-25.1.noarch
yast2-theme-openSUSE-2.21.18-62.3.noarch
yast2-branding-openSUSE-2.18.0-24.1.noarch
yast2-ntp-client-2.21.2-36.5.noarch
yast2-irda-2.22.0-23.4.noarch
yast2-pkg-bindings-2.22.2-63.7.i586
webyast-base-branding-default-0.3.10-1.1.noarch
rubygem-webyast-ldap-0.3.2-1.1.i586
yast2-storage-2.22.5-114.2.i586
yast2-instserver-2.21.1-19.66.noarch
yast2-samba-client-2.22.2-67.9.noarch
rubygem-webyast-firewall-0.3.2-1.2.i586
yast2-control-center-qt-2.22.2-57.3.i586
rubygem-webyast-network-0.3.3-1.2.i586
yast2-mail-2.21.1-52.8.noarch
yast2-ldap-server-2.22.2-36.13.i586
yast2-qt-branding-life-12.2-8.2.noarch
patterns-openSUSE-webyast-ws-12.2-2.3.i586
patterns-openSUSE-gnome_yast-12.2-4.1.i586
patterns-openSUSE-kde4_yast-12.2-4.1.i586
yast2-trans-en_US-2.22.0-166.1.noarch
yast2-dbus-server-2.22.1-22.8.i586
yast2-qt-2.22.6-71.4.i586
patterns-openSUSE-webyast-ui-12.2-2.3.i586
yast2-core-2.23.3-2.1.i586
yast2-firewall-2.21.2-21.11.noarch
rubygem-webyast-users-0.3.2-1.2.i586
yast2-sysconfig-2.22.0-65.24.noarch
yast2-ldap-2.22.2-34.11.i586
yast2-metapackage-handler-0.8.14-18.13.noarch
yast2-online-update-frontend-2.22.2-42.1.noarch
yast2-dns-server-2.23.3-24.3.noarch
yast2-installation-2.22.7-1.15.noarch
yast2-libyui-2.21.4-32.3.i586
yast2-hardware-detection-2.22.0-12.28.i586
yast2-ruby-bindings-0.3.12-32.2.i586
yast2-tftp-server-2.22.1-17.5.noarch
yast2-pam-2.22.1-25.1.noarch
rubygem-webyast-roles-0.3.3-1.1.i586
yast2-printer-2.23.1-65.5.i586
yast2-nis-client-2.22.2-51.8.i586
yast2-bootloader-2.23.4-87.3.i586
yast2-tune-2.22.0-17.28.i586
rubygem-webyast-services-0.3.2-1.2.i586
yast2-sudo-2.22.0-9.1.noarch
patterns-openSUSE-yast2_basis-12.2-4.1.i586
yast2-ncurses-pkg-2.22.7-61.1.i586
yast2-nfs-client-2.21.6-38.1.noarch
rubygem-webyast-kerberos-0.3.2-1.1.i586
yast2-tv-2.21.4-31.83.noarch
yast2-update-2.22.2-28.11.i586
yast2-ca-management-2.22.2-45.5.noarch
rubygem-webyast-rake-tasks-0.3.1-1.3.i586
yast2-country-data-2.22.6-135.1.i586
yast2-theme-openSUSE-Oxygen-2.21.18-62.3.noarch
yast2-proxy-2.22.1-5.1.noarch
yast2-security-2.22.5-53.1.noarch
yast2-ldap-client-2.22.8-82.2.noarch
yast2-add-on-2.22.0-16.2.noarch
yast2-transfer-2.22.0-16.11.i586
yast2-2.23.0-1.19.i586
yast2-packager-2.22.6-123.2.i586
yast2-network-2.23.0-163.3.i586
yast2-samba-server-2.22.3-33.2.noarch
yast2-nfs-common-2.21.3-18.4.noarch
yast2-gtk-2.22.5-228.1.i586
yast2-vm-2.22.1-32.6.i586
yast2-iscsi-client-2.22.1-59.3.noarch
rubygem-webyast-administrator-0.3.1-1.1.i586
yast2-users-2.22.4-93.9.i586
Comment 38 Cedric Simon 2012-06-22 12:33:00 UTC
(In reply to comment #35)
> Cedric, what GUI? We have 3 of them - and GTK is known to be broken.

I am using KDE.

Information for package yast2-qt:

Repository: openSUSE-12.2-Oss
Name: yast2-qt
Version: 2.22.6-1.1
Arch: x86_64
Vendor: openSUSE
Installed: Yes
Status: up-to-date
Installed Size: 1.0 MiB
Summary: YaST2 - Graphical User Interface
Description: 
One of several user interfaces available for YaST2, based on Qt and the
X Window System.


Most packages install without problem. Just Wine package gave me the error. Let me know if I can provide any additional debug information. I suspect an error in dependency check.

Information for package yast2-pkg-bindings:

Repository: openSUSE-12.2-Oss
Name: yast2-pkg-bindings
Version: 2.22.2-1.5
Arch: x86_64
Vendor: openSUSE
Installed: Yes
Status: up-to-date
Installed Size: 1.7 MiB
Summary: YaST2 - Package Manager Access
Description: 
This package contains a name space for accessing the package manager
library in YaST2.
Comment 39 Forgotten User GcDfVwe3gD 2012-06-24 23:50:32 UTC
I got a similar bug after I tried to search a package to YaST2. Here is the message I got:
YaST got signal 11 at YCP file PackagesUI.ycp:280
/sbin/yast2: line 427:  2010 Segmentation fault      $ybindir/y2base $module "$@" "$SELECTED_GUI" $Y2_GEOMETRY $Y2UI_ARGS
QGtkStyle was unable to detect the current GTK+ theme.
Qt: Session management error: Authentication Rejected, reason : None of the authentication protocols specified are supported and host-based authentication failed

I have 12.2 beta with XFCE. Please let me know if this the same bug or should I open a new bug report.

Following the same procedure but with YaST in n-curses environment everything worked fine and nothing crashed.
Comment 40 Jiří Suchomel 2012-06-25 08:16:06 UTC
*** Bug 768563 has been marked as a duplicate of this bug. ***
Comment 41 Duncan Mac-Vicar 2012-06-25 09:05:38 UTC
I just checked the old ini agent and I can see the glib symbols. In the new one I can't. This has to be something different. Please stop reopening unless you have some evidence that it is related. Otherwise look for a better duplicate bug or open a new one if there is none.
Comment 42 Stephan Kulow 2012-07-03 09:17:50 UTC
see above, please file a new bug