Summary: | gnome-base/gdm-2.20.9-r1: fails with gdk-pixbuf-csource: Couldn't recognize the image file format for file png | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | John Masinter <john> |
Component: | [OLD] GNOME | Assignee: | Gentoo Linux Gnome Desktop Team <gnome> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | david.w.noon |
Priority: | High | ||
Version: | unspecified | ||
Hardware: | x86 | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- |
Description
John Masinter
2009-09-23 20:59:25 UTC
SOLVED! SUMMARY: emerge librsvg gdm DETAIL: Since the build failed while using gdk-pixbuf-csource utility from gtk+ I looked into that some more. This util loads code for different graphics file formats from the below loaders dir. # ls -al /usr/lib/gtk-2.0/2.10.0/loaders ...<snip>... # gdk-pixbuf-query-loaders ...<snip>... g_module_open() failed for /usr/lib/gtk-2.0/2.10.0/loaders/svg_loader.so: /usr/lib/libxcb-xlib.so.0: undefined symbol: _xcb_lock_io So investigating further, of all the loaders in loaders dir above, only svg is provided by a package outside of gtk+. Bug #46888 gave this hint, and suggestion to rebuild librsvg to correct this. Whola! You were trying to open a PNG file originally though, not a SVG.. This problem still persists, and the solution suggested here is, I'm afraid, totally specious. I have found that gdk-pixbuf-csource works just fine as a non-root user, but fails when run as root. The cause of this proved to be that the program scans /usr/share/mime/mime.cache when run as non-root, but not when run as root. As a work-around, I created a symlink for this file in /root/.local/share/mime/; but this is just a quick kludge. I can upload the 2 strace logs that produced this diagnosis [and produced the kludge that made gdk-pixbuf-csource work]. The correct solution is to fix gdk-pixbuf-csource so that it scans all the appropriate mime.cache files, regardless of which users runs the utility. (In reply to comment #3) > The correct solution is to fix gdk-pixbuf-csource so that it scans all the > appropriate mime.cache files, regardless of which users runs the utility. After some more research, I have found out why the /usr/share directory is omitted: it had been removed from one of the /etc/env.d files that assign the XDG_DATA_DIRS environment variable. In my case, it was 90xdg-data-base. Once I had corrected that file and performed env-update, all was working properly again. |