FS#14107 - [gconf] segmentation fault with non-utf8 locales

Attached to Project: Arch Linux
Opened by Claudio Riva (Firetux) - Sunday, 05 April 2009, 15:13 GMT
Last edited by Jan de Groot (JGC) - Saturday, 13 June 2009, 11:47 GMT
Task Type Bug Report
Category Packages: Extra
Status Closed
Assigned To Jan de Groot (JGC)
Architecture All
Severity Critical
Priority Urgent
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 3
Private No

Details

Hello,

today I try to update GNOME from 2.24 to 2.26 but there was a lot of segmentation fault on different packages.
For example one of them (gnome-panel)

(1/1) aggiornamento in corso di gnome-panel [#####################] 100%
usr/sbin/gconfpkg: line 18: 3860 Segmentation fault GCONF_CONFIG_SOURCE=`/usr/bin/gconftool-2 --get-default-source` /usr/bin/gconftool-2 --makefile-install-rule /usr/share/gconf/schemas/${pkgname}.schemas > /dev/null

The problem seem to be that my LOCALE variable in rc.conf is set to italian language
LOCALE="it_IT@euro"
I change it to "en", restart the system and try again to upgrade GNOME and everything goes well. (pacman -S gnome gnome-extra)

I also try to set again LOCALE to italian version but if I try to reinstall again for example gnome-panel I got the same problem.

There are also other users having the same problem
http://bbs.archlinux.org/viewtopic.php?pid=528941
This task depends upon

Closed by  Jan de Groot (JGC)
Saturday, 13 June 2009, 11:47 GMT
Reason for closing:  Fixed
Additional comments about closing:  Fixed in 2.26.2-2.
Comment by David Hjelm (davidhjelm) - Sunday, 05 April 2009, 17:17 GMT
I'm having the same problem even though my locale is swedish. I've tried the workaround although i have the same problems:
(40/61) installing gnome-games [#####################] 100%
usr/sbin/gconfpkg: line 18: 20225 Segmenteringsfel GCONF_CONFIG_SOURCE=`/usr/bin/gconftool-2 --get-default-source` /usr/bin/gconftool-2 --makefile-install-rule /usr/share/gconf/schemas/${pkgname}.schemas > /dev/null
It does this for lots of packages.
Comment by Jan de Groot (JGC) - Sunday, 05 April 2009, 19:16 GMT
ok, this is a serious bug. Stupid that we didn't catch it before.

For those who are affected: after this segmentation fault, the system gconf schema database is corrupted and needs a full rebuild. To do so, run this from a terminal:

export LANG=C
export GCONF_CONFIG_SOURCE=`/usr/bin/gconftool-2 --get-default-source`
for i in /usr/share/gconf/schemas/*.schemas; do
/usr/bin/gconftool-2 --makefile-install-rule $i
done

This should install all gconf schemas on your system.

This happens with nearly every non-UTF8 locale.
Comment by Jan de Groot (JGC) - Sunday, 05 April 2009, 19:46 GMT
I pushed 2.26.0-3 to testing for both architectures. Please give it a try. I couldn't get it segfaulting anymore and gconf-editor shows descriptions in the right language for utf8 locales now (for non-utf8 it shows bad chars for now).
Comment by Claudio Riva (Firetux) - Sunday, 05 April 2009, 20:31 GMT
Hi Jan,

I made a full rebuild and now GNOEM works very well! :)

When new gconf package became available on the repository I try to upgrade GNOME on my laptop and I'll let you know.

Thank you
Comment by David Hjelm (davidhjelm) - Friday, 22 May 2009, 08:45 GMT
  • Field changed: Percent Complete (100% → 0%)
At gconf-2.26.2-1 I still have these problems. Everytime I do a update i have to run the fixscript.
Comment by Claudio Riva (Firetux) - Friday, 22 May 2009, 17:01 GMT
Me too, I still continue having the problem and run the script every time
Comment by Jan de Groot (JGC) - Friday, 29 May 2009, 18:44 GMT
For those with crashing GConf, I would like to know your locale and which package I need to reproduce it on.
Comment by Claudio Riva (Firetux) - Saturday, 30 May 2009, 09:07 GMT
cat /etc/rc.conf | grep LOCALE

# LOCALE: available languages can be listed with the 'locale -a' command
LOCALE="it_IT@euro"


cat /etc/locale.gen | grep -v "#"
it_IT@euro ISO-8859-15
Comment by Jan de Groot (JGC) - Saturday, 30 May 2009, 09:29 GMT
Can't reproduce it with those settings. Any environment variables set like LC_ALL and such?
Comment by Gerardo Exequiel Pozzi (djgera) - Wednesday, 03 June 2009, 21:55 GMT
Cleanup env vars, only LC_ALL

[CHROOT32][root@gerardo ~]# env -i LC_ALL="en_US.utf8" GCONF_CONFIG_SOURCE=`/usr/bin/gconftool-2 --get-default-source` /usr/bin/gconftool-2 --makefile-install-rule /usr/share/gconf/schemas/gnome-panel.schemas > /dev/null
[CHROOT32][root@gerardo ~]# env -i LC_ALL="en_US" GCONF_CONFIG_SOURCE=`/usr/bin/gconftool-2 --get-default-source` /usr/bin/gconftool-2 --makefile-install-rule /usr/share/gconf/schemas/gnome-panel.schemas > /dev/null
[CHROOT32][root@gerardo ~]# env -i LC_ALL="es_AR" GCONF_CONFIG_SOURCE=`/usr/bin/gconftool-2 --get-default-source` /usr/bin/gconftool-2 --makefile-install-rule /usr/share/gconf/schemas/gnome-panel.schemas > /dev/null
Segmentation fault
[CHROOT32][root@gerardo ~]# env -i LC_ALL="es_ES" GCONF_CONFIG_SOURCE=`/usr/bin/gconftool-2 --get-default-source` /usr/bin/gconftool-2 --makefile-install-rule /usr/share/gconf/schemas/gnome-panel.schemas > /dev/null
Segmentation fault
[CHROOT32][root@gerardo ~]# env -i LC_ALL="it_IT" GCONF_CONFIG_SOURCE=`/usr/bin/gconftool-2 --get-default-source` /usr/bin/gconftool-2 --makefile-install-rule /usr/share/gconf/schemas/gnome-panel.schemas > /dev/null
Segmentation fault
Comment by Gerardo Exequiel Pozzi (djgera) - Wednesday, 03 June 2009, 22:07 GMT
rebuilding glib2 with debug symbols... the crash is in function g_markup_escape_text() from glib2

(gdb) set arg --makefile-install-rule /usr/share/gconf/schemas/gnome-panel.schemas
(gdb) r
<snip>

IA__g_markup_escape_text (text=0x8139000 <Address 0x8139000 out of bounds>, length=-1) at gmarkup.c:2251
2251 next = g_utf8_next_char (p);
(gdb) bt full
#0 IA__g_markup_escape_text (text=0x8139000 <Address 0x8139000 out of bounds>, length=-1) at gmarkup.c:2251
str = (GString *) 0x8085a10
__PRETTY_FUNCTION__ = "IA__g_markup_escape_text"
Comment by Gerardo Exequiel Pozzi (djgera) - Wednesday, 03 June 2009, 22:27 GMT
mmm more info viewing what is in the address str = (GString *) 0xNNNNNNNN

with locale it_IT wi

(gdb) x/s *0x8c34600
0xb7726008: "Espande l&apos;elenco delle attività" <- note the "à"

es_AR
(gdb) x/s *0x93bea10
0xb76ab008: "Expandir la lista de cumpleaños" <- note the "ñ"

These strings are in the files /usr/share/locale/{it,es}/LC_MESSAGES/gnome-panel-2.0.mo
Comment by Gerardo Exequiel Pozzi (djgera) - Wednesday, 03 June 2009, 22:41 GMT
setting locales to "*.utf8" solves the problem, de_DE.utf8 es_AR.utf8 it_IT.utf8 etc.

Loading...