GNOME Bugzilla – Bug 551264
Fails to read PNM files coming from DCRawFile due to GIO not recognizing them.
Last modified: 2018-07-01 09:04:04 UTC
Please describe the problem: The f-spot display raw images as blank despite the dcraw program installed Steps to reproduce: Import raw photos Actual results: They are displayed blank Expected results: To be displayed Does this happen every time? Yes Other information: % f-spot Initializing Mono.Addins Starting new FSpot server Query: SELECT photos.id, photos.time, photos.uri, photos.description, photos.roll_id, photos.default_version_id, photos.rating FROM photos WHERE photos.id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = 2) ORDER BY photos.time Query: SELECT photos.id, photos.time, photos.uri, photos.description, photos.roll_id, photos.default_version_id, photos.rating FROM photos WHERE photos.id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = 2) ORDER BY photos.time Query: SELECT photos.id, photos.time, photos.uri, photos.description, photos.roll_id, photos.default_version_id, photos.rating FROM photos WHERE photos.id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = 2) ORDER BY photos.time Reloading Query: SELECT photos.id, photos.time, photos.uri, photos.description, photos.roll_id, photos.default_version_id, photos.rating FROM photos WHERE photos.id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = 2) ORDER BY photos.time item changed open uri = file:///home/uzytkownik/Multimedia/Photos/'03/My Familly/kif_0001.jpg open uri = file:///home/uzytkownik/Multimedia/Photos/'03/My Familly/kif_0001.jpg open uri = file:///home/uzytkownik/Multimedia/Photos/2008/07/23/p1010996.jpg open uri = file:///home/uzytkownik/Multimedia/Photos/2008/07/23/p1010996.jpg (f-spot:4617): GdkPixbuf-WARNING **: GdkPixbufLoader finalized without calling gdk_pixbuf_loader_close() - this is not allowed. You must explicitly end the data stream to the loader before dropping the last reference. open uri = file:///home/uzytkownik/Multimedia/Photos/2008/06/13/p1010979.jpg open uri = file:///home/uzytkownik/Multimedia/Photos/2008/06/13/p1010979.jpg open uri = file:///home/uzytkownik/Multimedia/Photos/2008/06/13/p1010978.jpg open uri = file:///home/uzytkownik/Multimedia/Photos/2008/06/13/p1010978.jpg open uri = file:///home/uzytkownik/Multimedia/Photos/2008/06/13/p1010977.jpg open uri = file:///home/uzytkownik/Multimedia/Photos/2008/06/13/p1010977.jpg open uri = file:///home/uzytkownik/Multimedia/Photos/2008/06/13/p1010976.jpg open uri = file:///home/uzytkownik/Multimedia/Photos/2008/06/13/p1010976.jpg open uri = file:///home/uzytkownik/Multimedia/Photos/2008/06/12/p1010975.jpg open uri = file:///home/uzytkownik/Multimedia/Photos/2008/06/12/p1010975.jpg open uri = file:///home/uzytkownik/Multimedia/Photos/2008/06/12/p1010974.raw Found Unknown Tiff Marker 55 GLib.GException: Unrecognised image file format at Gdk.PixbufLoader.Write (System.Byte[] buf, UInt64 count) [0x00000] at PixbufUtils+AspectLoader.Load (System.IO.Stream stream, PixbufOrientation orientation) [0x00000] at FSpot.ImageFile.Load (Int32 max_width, Int32 max_height) [0x00000] at PixbufLoader.ProcessRequest (.RequestItem request) [0x00000] open uri = file:///home/uzytkownik/Multimedia/Photos/2008/06/12/p1010973.raw Found Unknown Tiff Marker 55 GLib.GException: Unrecognised image file format at Gdk.PixbufLoader.Write (System.Byte[] buf, UInt64 count) [0x00000] at PixbufUtils+AspectLoader.Load (System.IO.Stream stream, PixbufOrientation orientation) [0x00000] at FSpot.ImageFile.Load (Int32 max_width, Int32 max_height) [0x00000] at PixbufLoader.ProcessRequest (.RequestItem request) [0x00000] (...) # emerge --info Portage 2.2_rc8 (default/linux/x86/2008.0/developer, gcc-4.3.1, glibc-2.8_p20080602-r0, 2.6.26-rc8-zen1.0 i686) ================================================================= System uname: Linux-2.6.26-rc8-zen1.0-i686-Intel-R-_Celeron-R-_M_processor_1.50GHz-with-glibc2.0 Timestamp of tree: Sun, 07 Sep 2008 16:04:01 +0000 ccache version 2.4 [enabled] app-shells/bash: 3.2_p39 dev-java/java-config: 1.3.7, 2.1.6-r1 dev-lang/python: 2.5.2-r7 dev-util/ccache: 2.4-r7 sys-apps/baselayout: 2.0.0 sys-apps/openrc: 0.2.5 sys-apps/sandbox: 1.2.18.1-r3 sys-devel/autoconf: 2.13, 2.62-r1 sys-devel/automake: 1.4_p6, 1.5, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10.1-r1 sys-devel/binutils: 2.18-r3 sys-devel/gcc-config: 1.4.0-r4 sys-devel/libtool: 2.2.4 virtual/os-headers: 2.6.26 ACCEPT_KEYWORDS="x86 ~x86" CBUILD="i686-pc-linux-gnu" CFLAGS="-Os -march=pentium-m -mfpmath=sse -pipe -momit-leaf-frame-pointer -ggdb -w -ftree-vectorize -ftree-loop-optimize -freorder-blocks-and-partition -fgcse-sm -fgcse-las -fgcse-after-reload -ftracer -maccumulate-outgoing-args" CHOST="i686-pc-linux-gnu" CONFIG_PROTECT="/etc /var/lib/hsqldb" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/terminfo /etc/texmf/web2c /etc/udev/rules.d" CXXFLAGS="-Os -march=pentium-m -mfpmath=sse -pipe -momit-leaf-frame-pointer -ggdb -w -ftree-vectorize -ftree-loop-optimize -freorder-blocks-and-partition -fgcse-sm -fgcse-las -fgcse-after-reload -ftracer -maccumulate-outgoing-args -fvisibility-inlines-hidden" DISTDIR="/var/tmp/distfiles" FEATURES="ccache collision-protect cvs digest distlocks multilib-strict parallel-fetch prelink preserve-libs sandbox sfperms sign splitdebug stricter unmerge-orphans userfetch userpriv usersandbox" GENTOO_MIRRORS="http://distfiles.gentoo.org http://distro.ibiblio.org/pub/linux/distributions/gentoo" LANG="en_US.UTF-8" LC_ALL="en_US.UTF-8" LDFLAGS="-Wl,-O1 -Wl,--add-needed -Wl,--as-needed -Wl,--hash-style=both -Wl,--sort-common" LINGUAS="en_GB en_US pl" PKGDIR="/usr/portage/packages" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/portage/local/layman/java-overlay /usr/portage/local/layman/java-experimental /usr/portage/local/layman/vala-overlay /usr/portage/local/layman/gnome /usr/portage/local/layman/banshee-overlay /usr/portage/local/layman/x11 /usr/local/portage" SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="X aac acl acpi alsa applet attr avahi avalon bash-completion berkdb bittorrent boo browseplugin bzip2 c++ cairo calendar caps cddb cdparanoia cdr cli clisp context cracklib crypt cups curl curlwrappers cxx d daap dbus deskbar devhelp disk-partition djvu docbook dri dvd dvdnav dvdr dvdread eclipse eds emacs emboss encode eog epiphany esd evo evolution exif expat extra fam ffmpeg flac flash fortran fuse galago gconf gd gdbm gdl gedit gif gimp git glib glut gmail gmp gnome gnome-keyring gnutls gpm gsf gstreamer gtk guile hal iconv idle imap inherit-graph inotify ipod iproute2 ipv6 isdnlog jabber java java5 java6 jingle jpeg jpeg2k jython kerberos keyring kqemu laptop latex libburn libffi libgda libnotify libsexy logrotate lucene mad maildir mailwrapper mhash midi mikmod mmap mmx mono moonlight mozilla mp3 mpeg mudflap mule musicbrainz nautilus ncurses network networkmanager nls nntp no-old-linux nptl nptlonly nsplugin ntpl ogg oggvorbis openal opengl openmp pam pango pbm pccts pch pcre pda pdf perl png policykit pop postgres ppds pppd pulseaudio python qt3support quicktime raw readline reflection regex reiserfs resolvconf rhino ruby samba scanner science sdl session snmp soap soup sourceview spell spl sqlite sqlite3 sse sse2 ssh ssl startup-notification subversion svg symlink sysfs syslog tcpd tetex theora threads threadsafe tiff timidity totem tracker trayicon truetype unicode usb valgrind vim vorbis vte wifi wxwindows x86 xattr xcb xforms xhtml xml xml2 xorg xsl xslt xulrunner xv zeroconf zlib" ALSA_CARDS="atiixp" ALSA_PCM_PLUGINS="null empty dmix dshare ioplug" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CAMERAS="panasonic" ELIBC="glibc" INPUT_DEVICES="evdev mouse keyboard" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en_GB en_US pl" USERLAND="GNU" VIDEO_CARDS="radeon" Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, MAKEOPTS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
what kind of raws are you trying to load? have it ever worked?
1. Panasonic FZ50 2. Yes. Even the photos that worked are not displayed
please provide an image
For example http://www.rawsamples.ch/raws/panasonic/fz50/RAW_PANASONIC_FZ50_SRGB.RAW - which used to work. % f-spot -v ~/Desktop/Downloads/RAW_PANASONIC_FZ50_SRGB.RAW [Info 14:15:48.255] Initializing DBus [Info 14:15:48.934] Initializing Mono.Addins [Info 14:15:50.208] Starting new FSpot server uri = file:///home/uzytkownik/Desktop/Downloads/RAW_PANASONIC_FZ50_SRGB.RAW Found Unknown Tiff Marker 55 (f-spot:21266): Gtk-WARNING **: gtk_menu_attach_to_widget(): menu already attached to GtkMenuItem zsh: segmentation fault f-spot -v ~/Desktop/Downloads/RAW_PANASONIC_FZ50_SRGB.RAW Segfault was after clicking on 'close' button (the 'x' added by WM) I'll try with 0.4.2.
(In reply to comment #4) > I'll try with 0.4.2. try svn instead, i have no problems in viewing that file!
Well. May be it is a problem with library. Do you have an idea which one it may be and/or how to check it.
Still present in 0.5.0.2. From the code it seems that the Gdk tries to load the RAW, which do not know how to handle. What's your output of: #include <gdk-pixbuf/gdk-pixbuf.h> #include <glib.h> int main(int argc, char **argv) { GSList *formats; gdk_init(&argc, &argv); formats = gdk_pixbuf_get_formats (); while (formats) { printf("%s\n", gdk_pixbuf_format_get_name(formats->data)); formats = formats->next; } } Mine is: wbmp ras bmp xbm ani svg jpeg tga xpm icns png gif tiff pcx pnm jpeg2000 ico
I can confirm that f-spot works fine with .raw images. And f-spot only fallback to pixbuf loader if it fails at processing the raw file itself. what's the result of this: dcraw -i ~/Desktop/Downloads/RAW_PANASONIC_FZ50_SRGB.RAW
% dcraw -i ~/Desktop/Downloads/RAW_PANASONIC_FZ50_SRGB.RAW /home/uzytkownik/Desktop/Downloads/RAW_PANASONIC_FZ50_SRGB.RAW is a Panasonic DMC-FZ50 image.
please run f-spot --debug -v ~/Desktop/Downloads/RAW_PANASONIC_FZ50_SRGB.RAW and report a complete stacktrace.
% f-spot --debug -v ~/Desktop/Downloads/RAW_PANASONIC_FZ50_SRGB.RAW ** Running f-spot in Debug Mode ** ** Running Mono with --debug ** [Info 20:14:31.550] Initializing DBus [Debug 20:14:32.541] DBusInitialization took 0.838319s [Info 20:14:32.542] Initializing Mono.Addins [Debug 20:14:34.496] Mono.Addins Initialization took 1.951682s [Info 20:14:34.630] Starting new FSpot server uri = file:///home/uzytkownik/Desktop/Downloads/RAW_PANASONIC_FZ50_SRGB.RAW (f-spot:16442): Gtk-WARNING **: gtk_menu_attach_to_widget(): menu already attached to GtkMenuItem [Info 20:14:40.149] Hack for gnome-settings-daemon engaged [Debug 20:14:44.170] Db Initialization took 3.818741s [Info 20:14:55.646] Exiting [Debug 20:14:55.845] Finalizer called on FSpot.Category. Should be Disposed [Debug 20:14:55.846] Finalizer called on FSpot.Category. Should be Disposed [Debug 20:14:55.846] Finalizer called on FSpot.Category. Should be Disposed [Debug 20:14:55.847] Finalizer called on FSpot.Category. Should be Disposed [Debug 20:14:55.863] Finalizer called on FSpot.Category. Should be Disposed [Debug 20:14:55.863] Finalizer called on FSpot.Category. Should be Disposed [Debug 20:14:55.864] Finalizer called on FSpot.Category. Should be Disposed [Debug 20:14:55.928] Finalizer called on FSpot.Category. Should be Disposed [Debug 20:14:55.929] Finalizer called on FSpot.Tag. Should be Disposed [Debug 20:14:55.929] Finalizer called on FSpot.Category. Should be Disposed [Debug 20:14:55.929] Finalizer called on FSpot.Category. Should be Disposed [Debug 20:14:55.930] Finalizer called on FSpot.Category. Should be Disposed [Debug 20:14:55.930] Finalizer called on FSpot.Category. Should be Disposed [Debug 20:14:55.933] Finalizer called on FSpot.Category. Should be Disposed [Debug 20:14:55.934] Finalizer called on FSpot.Category. Should be Disposed [Debug 20:14:55.934] Finalizer called on FSpot.Category. Should be Disposed [Debug 20:14:55.934] Finalizer called on FSpot.Category. Should be Disposed [Debug 20:14:55.934] Finalizer called on FSpot.Category. Should be Disposed [Debug 20:14:55.935] Finalizer called on FSpot.Category. Should be Disposed [Debug 20:14:55.935] Finalizer called on FSpot.Category. Should be Disposed [Debug 20:14:55.936] Finalizer called on FSpot.Category. Should be Disposed zsh: segmentation fault f-spot --debug -v ~/Desktop/Downloads/RAW_PANASONIC_FZ50_SRGB.RAW
as I can see in the previous message, f-spot is displaying your image nicely. or at least it does not fails PixbufLoader as you reported could you provide a real stack of a real crash ?
(In reply to comment #12) > as I can see in the previous message, f-spot is displaying your image nicely. > or at least it does not fails PixbufLoader as you reported > Well. If the image is the red cross then yes - it is displaying nicely. > could you provide a real stack of a real crash ? > In a moment. I currently tring to solve problems with mono (upgrading 1.9->2.0)
Only what I get is exceptions: GLib.GException: Unrecognised image file format at Gdk.PixbufLoader.Write (System.Byte[] buf, UInt64 count) [0x00000] at PixbufUtils+AspectLoader.Load (System.IO.Stream stream, PixbufOrientation orientation) [0x00000] at FSpot.ImageFile.Load (Int32 max_width, Int32 max_height) [0x00000] at PixbufLoader.ProcessRequest (.RequestItem request) [0x00000] GLib.GException: Unrecognised image file format I have mono-debugger so if you say where produce stacktraces I can provide them.
Could at lease someone point the place in code when the different backend are tried? All I found is loading via GDK.
Created attachment 123912 [details] [review] Patch making f-spot producing tiff files instead of ppm I found out what the problem is. DCRaw with options given produces a 'Netpbm PPM "rawbits" image data' which is not recognised by my gdk. % dcraw -h -w -c -t 0 /tmp/RAW_PANASONIC_FZ50_SRGB.RAW > /tmp/test.img % file /tmp/test.img /tmp/test.img: Netpbm PPM "rawbits" image data % python Python 2.6 (r26:66714, Nov 18 2008, 01:24:15) [GCC 4.3.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import gtk.gdk >>> pixbuf = gtk.gdk.pixbuf_new_from_file("/tmp/test.img") Traceback (most recent call last):
+ Trace 210461
>>> However if the Tiff image is produced all is OK. % dcraw -h -w -c -t 0 -T /tmp/RAW_PANASONIC_FZ50_SRGB.RAW > /tmp/test.img % file /tmp/test.img /tmp/test.img: TIFF image data, little-endian % python Python 2.6 (r26:66714, Nov 18 2008, 01:24:15) [GCC 4.3.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import gtk.gdk >>> pixbuf = gtk.gdk.pixbuf_new_from_file("/tmp/test.img") >>> Since many people claim that the ppm is working for them I will invastigate it. Possibly a gdk bug. I attach quick'n'dirty patch solving this issue.
you should have a file called gdk_pixbuf.laoders somewhere. can you paste it here ? could you also compile this code snippet and paste the result: using Gdk; public class Test { static void Main () { foreach (PixbufFormat format in Pixbuf.Formats) Console.WriteLine (format.Name); } } compile it with gmcs -pkg:gtk-sharp-2.0 those 2 results will help me figure if it's possible to, at runtime, detect the supported ppm format and fallback to something else.
The results are the same (line in line) as in Comment #7. I have no such file. # locate gdk_pixbuf /usr/lib/libgdk_pixbuf-2.0.la /usr/lib/xine/plugins/1.24/xineplug_decode_gdk_pixbuf.so /usr/lib/libgdk_pixbuf_xlib-2.0.so.0.1400.5 /usr/lib/libgdk_pixbuf_xlib-2.0.so /usr/lib/libgdk_pixbuf-2.0.so.0.1400.5 /usr/lib/libgdk_pixbuf-2.0.so /usr/lib/libgdk_pixbuf_xlib-2.0.la /usr/lib/libgdk_pixbuf-2.0.so.0 /usr/lib/libgdk_pixbuf_xlib-2.0.so.0 /usr/lib/debug/usr/lib/xine/plugins/1.24/xineplug_decode_gdk_pixbuf.so.debug /usr/lib/debug/usr/lib/libgdk_pixbuf_xlib-2.0.so.0.1400.5.debug /usr/lib/debug/usr/lib/libgdk_pixbuf-2.0.so.0.1400.5.debug
here's mine: Pixbuf.Formats.Select (x => x.Name); { "ani", "svg", "pnm", "ico", "png", "ras", "wbmp", "tga", "tiff", "jpeg2000", "gif", "wmf", "xpm", "xbm", "bmp", "pcx", "icns", "jpeg" }
I've experienced exactly the same issue, and found the explanation in bug #569671. In short, gdk_pixbuf no more uses its own signature thing for guessing file types, but relies on GIO. And GIO relies on shared-mime-info, which doesn't think the PNM files signature ("P[0-6]" at the beginning of files) is long enough to be reliable ( http://bugs.freedesktop.org/show_bug.cgi?id=19811 ). So the "fix" that was adopted for bug #569671 is a fallback on guessing from the filename. But, sure, in the case we have here it won't help. As a workaround, i have recompiled my GTK+ so that gdk_pixbuf loaders works the old way (undef GDK_PIXBUF_USE_GIO_MIME), and f-spot now works fine again with raw files. But i don't know what the right fix would be: - Make freedesktop people change their mind about PNM signatures? On the other hand, i understand their point about 2 chars not being enough... - Make GTK+ people find a better workaround? Maybe a fallback on their own old signatures thing? - Change dcraw options in f-spot, as proposed by Macieij? I confirm that TIFF detection happens to work both with or without GDK_PIXBUF_USE_GIO_MIME, so it should be safe. Only drawback i can think of is that TIFF support in GTK+/gdk_pixbuf is optionnal, with a dependency on an other lib, whereas PNM was builtin. Might have an impact for f-spot packagers.
Well other solutions would be: - Save the output to temporary file.But IMHO it's terrible sollution - if tiff_supported then use_tiff else try use_pnm catch display_error
This should be fixed by my branch (bug 590150).
Greate - but why change back the description? If it is coused by method of reading PNM by GDK previous description was better (greater chances of avoiding duplicates and it was not panasonic-specific).
Sorry, fixed that
Comment on attachment 123912 [details] [review] Patch making f-spot producing tiff files instead of ppm Maintenance update: In the past we've been less than stellar in reviewing patches. As such we have a pile of patches in bugzilla which are outdated and don't apply anymore. Am currently marking all of these as "needs-work". My apologies for this. Since I've become a maintainer of the project, I've set the personal rule of quickly reviewing all patches, to avoid that this happens again. If you (or anyone) wants to go through the trouble of updating this patch, please talk to us to figure out if it fits in the F-Spot long term roadmap. Should you, in the future, notice a patch lingering around for too long, please notify us immediately and we'll look into it, to avoid situations like these from happening again. You can filter these mails by searching for ###F-OLDPATCHCLEANUP###
f-spot is not under active development anymore, has not seen code changes for five years, and saw its last tarball release in the year 2010. Its codebase has been archived: https://gitlab.gnome.org/Archive/f-spot/commits/master Closing this report as WONTFIX as part of Bugzilla Housekeeping to reflect reality. Please feel free to reopen this ticket (or rather transfer the project to GNOME Gitlab, as GNOME Bugzilla is deprecated) if anyone takes the responsibility for active development again.