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
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
|
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.
Saturday, 13 June 2009, 11:47 GMT
Reason for closing: Fixed
Additional comments about closing: Fixed in 2.26.2-2.
(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.
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.
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
# 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
[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
(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"
with locale it_IT wi
(gdb) x/s *0x8c34600
0xb7726008: "Espande l'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