Note: This is a beta release of Red Hat Bugzilla 5.0. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Also email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback here.
Bug 155820 - gtk2.i386 %post scripts segfault on x86_64
Summary: gtk2.i386 %post scripts segfault on x86_64
Alias: None
Product: Fedora
Classification: Fedora
Component: kernel
Version: rawhide
Hardware: x86_64
OS: Linux
Target Milestone: ---
Assignee: Dave Jones
QA Contact: Brian Brock
Depends On:
Blocks: FC4Blocker
TreeView+ depends on / blocked
Reported: 2005-04-24 02:55 UTC by Michal Jaegermann
Modified: 2015-01-04 22:19 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Last Closed: 2005-05-16 08:51:41 UTC

Attachments (Terms of Use)

Description Michal Jaegermann 2005-04-24 02:55:57 UTC
Description of problem:

Postinstall scriplet from gtk2.i386 does this:

/usr/bin/update-gdk-pixbuf-loaders i386-redhat-linux
/usr/bin/update-gtk-immodules i386-redhat-linux

The problem is that the second line has the following effect:

# /usr/bin/update-gdk-pixbuf-loaders i386-redhat-linux
/usr/bin/update-gdk-pixbuf-loaders: line 22:  8638 Segmentation fault     
/usr/bin/gdk-pixbuf-query-loaders-32 >/etc/gtk-2.0/$host/gdk-pixbuf.loaders

and as a side-effect leftovers from the previous version of gtk2 are also
left on a system.

This does not happen on x86 installation or if one does
/usr/bin/update-gdk-pixbuf-loaders x86_64-redhat-linux
as in gtk2.x86_64 postinstall scriplet.

The following packages depend on gtk2.i386:

 GConf2                  i386       2.10.0-2         installed         4.0 M
 evolution-data-server   i386       1.2.2-2          installed         9.1 M
 gnome-vfs2              i386       2.10.0-3         installed         3.9 M
 libgcj                  i386       4.0.0-0.42       installed          26 M
 libgnome                i386       2.10.0-2         installed         2.8 M
 libgsf                  i386       1.11.1-2         installed         156 k
 libwpd                  i386       0.8.0-4          installed         435 k     i386       1:1.9.92-2       installed         186 M  i386       1:1.9.92-2       installed         4.2 M     i386       1:1.9.92-2       installed         3.1 M    i386       1:1.9.92-2       installed         238 k   i386       1:1.9.92-2       installed         5.6 M

so deinstalling it is not really a good option.
Version-Release number of selected component (if applicable):

How reproducible:

Comment 1 Matthias Clasen 2005-04-25 16:11:28 UTC
Works fine on a x86_64 rawhide box here. 
I will need a stacktrace to make any progress on this.

Comment 2 Matthias Clasen 2005-04-25 16:11:56 UTC
Please reopen from NEEDINFO if you attach a stacktrace

Comment 3 Michal Jaegermann 2005-04-25 18:04:12 UTC
Hm, this seems to be a problem.  As a quoted error message says
this is /usr/bin/gdk-pixbuf-query-loaders-32 which segfaults.
Running this under strace comes remarkably short:

["/usr/bin/gdk-pixbuf-query-loader"...], [/* 35 vars */]) = 0
brk(0)                                  = 0x804b000
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
[ Process PID=3222 runs in 32 bit mode. ]

An attempt to look at this with gdb makes gdb to print after 'run'

Loaded system supplied DSO at 0xffffe000

and after that nothing. Looking at a process table one can find
there something like that:

root      3097 Ss   10:58   0:00  \_ bash
root      3138 S    11:00   0:00  |   \_ gdb /usr/bin/gdk-pixbuf-query-loaders-32
root      3141 R+   11:00   1:54  |       \_ /usr/bin/gdk-pixbuf-query-loaders-32

with 'strace -p 3138' printing 'wait4(-1,' and this call, not
surprisingly, never finishing.

A process 3141 is unkillable.  I eventually ended up with sending to
it all possible signals in a loop with no traces of a reaction.  The
only way to make it to go is to reboot and this gives a big trouble
when unmounting file systems as most of everything is "busy".

After SysRq-T one can find something of that sort:

gdk-pixbuf-qu R  running task       0  3141   3138                     (NOTLB)
gdb           S ffffffff805027a0     0  3138   3097  3141               (NOTLB)
ffff81000ca3fec8 0000000000000082 00007fffffcbb000 00007fffffcbaf7c 
       000000740ca3fea8 ffff810013dec0f0 ffff810013dec850 ffff810000000000 
       0000000000000c50 0000000000000012 
Call Trace:<ffffffff8013fe19>{do_wait+3577}

with no call trace for the proces in question.

OTOH if one will do in gdb that:

(gdb) b main
Function "main" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y

Breakpoint 1 (main) pending.

and aftet that 'run' then sometimes a bunch of messages from various
pixbuf loaders is printed and "program exited normally" but other
times the picture is the same as above.

When trying the same with /usr/bin/gtk-query-immodules-2.0-32, which
also bombs, results look remarkably the same as above.

If this does not pinpoint a source of the trouble then any other ideas
where to look?

Comment 4 Matthias Clasen 2005-04-26 05:26:59 UTC
Are the right loaders present in /usr/lib/gtk-2.0/2.4.0/loaders ? 
What does ldd /usr/bin/gdk-pixbuf-query-loaders report ?

Comment 5 Michal Jaegermann 2005-04-26 14:55:22 UTC
> What does ldd /usr/bin/gdk-pixbuf-query-loaders report ?

Not much, I am afraid.

# ldd /usr/bin/gdk-pixbuf-query-loaders-32 
/usr/bin/ldd: line 116:  3199 Segmentation fault      LD_TRACE_LOADED_OBJECTS=1

The problem is that "$@" expands to /usr/bin/gdk-pixbuf-query-loaders-32 and
we are back where we were before.  This is eval line which ends up with
a status 139 (128+11, as expected).

If you wonder if /usr/lib/gtk-2.0/2.4.0/loaders/ directory is properly
populated then 'rpm -qVf /usr/lib/gtk-2.0/2.4.0/loaders/' does not complain
about it and 'ls -l' reports:

 12396 Apr 22 13:55
 12684 Apr 22 13:55
 22668 Apr 22 13:55
 12600 Apr 22 13:55
 14348 Apr 22 13:55
  9308 Apr 22 13:55
 15024 Apr 22 13:55
 12008 Apr 22 13:55
  6880 Apr 22 13:55
 12072 Apr 22 13:55
 10296 Apr 22 13:55
  6432 Apr 22 13:55
 10040 Apr 22 13:55
 32508 Apr 22 13:55

64-bit loaders are, obviously, in /usr/lib64/gtk-2.0/2.4.0/loaders/.

Keep in mind that on few occasions I managed to run gdk-pixbuf-query-loaders-32
to normal completion; in gdb when I set a break in main().  The trouble
is that I cannot do that consistently and never when running outside gdb.

Comment 6 Michal Jaegermann 2005-04-26 15:07:56 UTC
I realized something.  Yesterday people on fedora-test-list were complaining
about random crashes in various programs after recent updates.  I rebooted
2.6.11-1.1251_FC4 kernel and both /usr/bin/gdk-pixbuf-query-loaders-32 and
/usr/bin/gtk-query-immodules-2.0-32 run without any problems.  But if booted
2.6.11-1.1258_FC4 or 2.6.11-1.1261_FC4 I am seeing what is described above.

It looks like that I am barking on a wrong tree.

Comment 7 Matthias Clasen 2005-04-26 15:15:09 UTC
Ok, moving to kernel then

Comment 8 Michal Jaegermann 2005-04-26 22:34:32 UTC
kernel-2.6.11-1.1267_FC4 does not change the picture.

Comment 9 Warren Togami 2005-04-27 09:15:10 UTC
The above might be describing 2 or more different issues.

x86_64 Random system deadlocks, spontatenous reboots or panics are Bug 155827

Bug 155790 are many 32-bit crashes on x86_64

Bug 155897 is kernel causing rpm trouble on x86_64

Comment 10 Michal Jaegermann 2005-04-27 15:44:31 UTC
My guess would be that this is another manifestation of bug 155790.  However
running under gdb may help only if a breakpoint was set before doing "run"
and even that is a gamble.  Without setting a breakpoint gdb does not help.

Comment 11 Warren Togami 2005-05-16 08:51:41 UTC
I'm willing to bet this has been solved by the solution to Bug 155790.  REOPEN
if this happens with the latest FC4 kernels.

Note You need to log in before you can comment on or make changes to this bug.