Bug 445981 - gnome-config <-> pkg-config recursion dangerous
Summary: gnome-config <-> pkg-config recursion dangerous
Alias: None
Product: Fedora
Classification: Fedora
Component: gnome-libs
Version: 9
Hardware: All
OS: Linux
Target Milestone: ---
Assignee: Paul Howarth
QA Contact: Fedora Extras Quality Assurance
Depends On:
TreeView+ depends on / blocked
Reported: 2008-05-10 23:59 UTC by Jason Vas Dias
Modified: 2008-06-14 04:16 UTC (History)
0 users

Fixed In Version: 1.4.2-9.fc9
Doc Type: Bug Fix
Doc Text:
Clone Of:
Last Closed: 2008-06-14 04:16:38 UTC

Attachments (Terms of Use)

Description Jason Vas Dias 2008-05-10 23:59:06 UTC
Description of problem:
Running a fresh "Everything" install of rawhide 2008-05-10 x86_64 ( FC-9 ),
with the gnome desktop and display manager selected, results in 
runaway gnome-config <-> pkg-config recursive process growth and system 
overload & eventual crash.

It is a really dangerous bad idea to write program A that invokes program B 
which invokes program A, as is the case with the current gnome-config and
pkg-config programs.

OK, I know the usual caveats about rawhide useability / reliability, but really!

  $ grep -n pkg-config /usr/bin/gnome-config
  13:libdir=`pkg-config --variable=libdir glib

  $ strace -f -o /tmp/death.log -e trace=execve -e trace=open \
    pkg-config --variable=libdir glib
  # system overload of pkg-config invoking gnome-config which invokes pkg-config
  # results. The death.log will be a huge sequence of lines like:
  26771 execve("/usr/bin/gnome-config", ["gnome-config", "--libs", "glib"], [/*
24 vars */]) = 0
26772 execve("/usr/bin/pkg-config", ["pkg-config", "--variable=libdir", "glib"],
[/* 24 vars */]) = 0
26773 execve("/bin/sh", ["sh", "-c", "gnome-config --libs glib > /dev/null
2>&1"], [/* 24 vars */]) = 0
26779 execve("/usr/bin/gnome-config", ["gnome-config", "--libs", "glib"], [/* 24
vars */]) = 0

Whenever the gnome-desktop starts up, then, runaway process growth of 
recursive gnome-config -> pkg-config -> gnome-config invocations and 
system crash results.
Version-Release number of selected component (if applicable):


How reproducible:

Steps to Reproduce:
Install from rawhide and try to start desktop
Actual results:
System overload and eventual crash

Expected results:
gnome desktop

Comment 1 Jason Vas Dias 2008-05-11 00:29:13 UTC
    $ mv /usr/bin/gnome-config /usr/bin/gnome-config-broken
system is again usable and gnome-desktop does start - but what else relies on 

Comment 2 Bug Zapper 2008-05-14 10:58:51 UTC
Changing version to '9' as part of upcoming Fedora 9 GA.
More information and reason for this action is here:

Comment 3 Paul Howarth 2008-05-15 12:50:23 UTC
I'm unable to reproduce this:

$ strace -f -e trace=execve -e trace=open pkg-config --variable=libdir glib
open("/etc/ld.so.cache", O_RDONLY)      = 3
open("/lib64/libc.so.6", O_RDONLY)      = 3
open("/usr/lib64/pkgconfig", O_RDONLY|O_NONBLOCK|O_DIRECTORY|0x80000) = 3
open("/usr/share/pkgconfig", O_RDONLY|O_NONBLOCK|O_DIRECTORY|0x80000) = 3
open("/usr/lib64/pkgconfig/glib.pc", O_RDONLY) = 3
$ rpm -qa gnome-libs\* glib-\* pkgconfig | sort

gnome-config does indeed call pkgconfig for glib, but I can't see where you're
getting the callback to gnome-config from. The pkg-config file for glib is very
simple and doesn't call gnome-config (as indeed it shouldn't since gnome-libs is
higher up the dependency chain than glib):
$ cat /usr/lib64/pkgconfig/glib.pc 

Name: GLib
Description: C Utility Library
Version: 1.2.10
Libs: -L${libdir} -lglib
Cflags: -I${includedir}/glib-1.2 -I${libdir}/glib/include 

I'm similarly confused as to how any call to gnome-config has made it into your
desktop session startup. After all, gnome-config is a developer tool for the
ancient Gnome-1 libraries.

Any thoughts on that?

Comment 4 Amish S. Dave 2008-05-27 22:58:05 UTC
I've just run into this bug independently. I'm using Fedora 8 on x86_64.

I've tracked it down to happening because
is installed, but not
Installing the x86_64 package fixes the problem.
pkg-config calls gnome-config as a fallback when it can't find a package,
apparently, running it via the "system()" call.

This is a major annoyance, though, in that any call to pkg-config with an
unknown or not installed package name results in a recursive gnome-config
<-> pkg-config loop resulting in an out-of-memory situation.
In other words, just about every ./configure script will trigger this.
I never intentionally installed glib-devel-1.2.10-28.fc8.i386, I suspect
it was installed by yum as a dependency for something else (probably
glade3, looking at my `rpm -qa --last` output).

Comment 5 Paul Howarth 2008-05-28 14:02:04 UTC
Ah, looking at the pkg-config code I see this undocumented (in the manpage at
least) behaviour (in parse.c). Thanks for tracking that down.

I've prepared an update (gnome-libs-1.4.2-9.fc*) that two things to avoid this

1. gnome-libs-devel now has a file dependency on glib.pc that will pull in the
same-arch version of glib-devel and hence resolve the reporter's issue.

2. the first fix is not sufficient to prevent problems if someone just does "yum
install gnome-libs-devel.i386" on F9. That will result in 32-bit versions of
gnome-libs-devel and glib-devel, and a 64-bit pkg-config. The 64-bit pkg-config
won't find the 32-bit glib.pc file and will fall back to gnome-config, which
would fail as before. So I've also hacked gnome-config to test for the
pkg-config calls that happen in this situation and to output results as best I
can without calling pkg-config back, thus breaking the recursion.

F9 update:

F8 update:

I'll request that these get pushed to updates-testing.

Comment 6 Fedora Update System 2008-05-28 15:07:00 UTC
gnome-libs-1.4.2-9.fc9 has been submitted as an update for Fedora 9

Comment 7 Fedora Update System 2008-05-28 15:08:02 UTC
gnome-libs-1.4.2-9.fc8 has been submitted as an update for Fedora 8

Comment 8 Fedora Update System 2008-05-31 02:10:11 UTC
gnome-libs-1.4.2-9.fc9 has been pushed to the Fedora 9 testing repository.  If problems still persist, please make note of it in this bug report.
 If you want to test the update, you can install it with 
 su -c 'yum --enablerepo=updates-testing update gnome-libs'.  You can provide feedback for this update here: http://admin.fedoraproject.org/updates/F9/FEDORA-2008-4658

Comment 9 Jason Vas Dias 2008-05-31 03:11:32 UTC
Yes, this is fixed now. Thank you!

Comment 10 Fedora Update System 2008-06-14 04:15:01 UTC
gnome-libs-1.4.2-9.fc8 has been pushed to the Fedora 8 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 11 Fedora Update System 2008-06-14 04:16:36 UTC
gnome-libs-1.4.2-9.fc9 has been pushed to the Fedora 9 stable repository.  If problems still persist, please make note of it in this bug report.

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