GNOME Bugzilla – Bug 631333
XMP parse failure: System.InvalidOperationException: List has changed.
Last modified: 2011-01-02 10:16:53 UTC
I first updated my f-spot to new 0.8 version (0.8.0-1~lffl~lucid~ppa). After importing one photo, f-spot crashed and now it won't start again. Here's the dump: --- ** Running f-spot in Debug Mode ** ** Running Mono with --debug ** [1 Info 13:07:53.127] Initializing Mono.Addins [1 Debug 13:07:54.624] Mono.Addins Initialization took 1,43326 [1 Debug 13:08:00.786] Db Initialization took 3,931514 [1 Debug 13:08:01.484] Your screen doesn't support alpha channels! [1 Debug 13:08:03.766] Query Started : SELECT * FROM photos WHERE photos.id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = 2) ORDER BY time DESC, filename ASC [1 Debug 13:08:04.563] QueryToTemp took 0,796428 : SELECT * FROM photos WHERE photos.id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = 2) ORDER BY time DESC, filename ASC [1 Debug 13:08:04.563] Reloading the query took 0,810317 [2 Debug 13:08:05.314] PhotosPerMonth took 0,458354 [2 Debug 13:08:05.328] TimeAdaptor REAL Reload took 0,688973 [1 Debug 13:08:06.387] Query took 0,056762 : SELECT * FROM photoquery_temp_0 LIMIT 100 OFFSET 0 [1 Debug 13:08:06.952] Query Started : SELECT * FROM photos WHERE photos.id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = 2) ORDER BY time DESC, filename ASC [1 Debug 13:08:07.802] QueryToTemp took 0,849357 : SELECT * FROM photos WHERE photos.id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = 2) ORDER BY time DESC, filename ASC [1 Debug 13:08:07.905] Query took 0,005615 : SELECT * FROM photoquery_temp_0 LIMIT 100 OFFSET 0 [3 Debug 13:08:08.448] PhotosPerMonth took 0,437681 [3 Debug 13:08:08.448] TimeAdaptor REAL Reload took 0,643125 [1 Debug 13:08:08.892] open uri = file:///home/rauno/Kuvat/Valokuvat/2010/10/01/00016.jpg [1 Debug 13:08:08.972] Reloading the query took 2,020413 Exception in Gtk# callback delegate Note: Applications can use GLib.ExceptionManager.UnhandledException to handle the exception. System.ArgumentOutOfRangeException: Argument is out of range. at System.DateTime.DaysInMonth (Int32 year, Int32 month) [0x00000] at FSpot.TimeAdaptor.DateFromIndexDescending (Int32 item) [0x00000] at FSpot.TimeAdaptor.DateFromIndex (Int32 item) [0x00000] at FSpot.TimeAdaptor.TickLabel (Int32 item) [0x00000] at FSpot.GroupSelector.HandleAdaptorChanged (FSpot.GroupAdaptor adaptor) [0x00000] at (wrapper delegate-invoke) FSpot.GroupAdaptor/ChangedHandler:invoke_void__this___GroupAdaptor (FSpot.GroupAdaptor) at FSpot.TimeAdaptor+<DoReload>c__AnonStorey19.<>m__6B () [0x00000] at FSpot.Driver+<RunIdle>c__AnonStorey11.<>m__50 () [0x00000] at GLib.Idle+IdleProxy.Handler () [0x00000] at GLib.ExceptionManager.RaiseUnhandledException(System.Exception e, Boolean is_terminal) at GLib.Idle+IdleProxy.Handler() at Gtk.Application.gtk_main() at Gtk.Application.Run() at FSpot.Driver.Startup() at Hyena.Gui.CleanRoomStartup.Startup(Hyena.Gui.StartupInvocationHandler startup) at FSpot.Driver.Main(System.String[] args) [4 Debug 13:08:14.899] Finalizer called on FSpot.Utils.DisposableCache`2[System.String,Gdk.Pixbuf]. Should be Disposed [4 Debug 13:08:14.947] Finalizer called on FSpot.Core.Tag. Should be Disposed [4 Debug 13:08:14.948] Finalizer called on FSpot.Database.Db. Should be Disposed Any ideas to get this fixed?
If needed, I can offer the photo that seemed to have caused this. I can't see anything wrong in the photo but f-spot stored it under a funny subfolder path .../photos/1/01/01/IMG_2343.JPG and f-spot crashed after I imported it (and only it) - and never recovered. Still it doesn't cause any problems to older f-spot version.
Can you attach the photo here if possible? Please not that it would be public.
I can send a photo to you (or anybody who is interested about it) but can't save it here because it is too big (about 4,7 Mb). To where should I put it?
Here (http://dl.dropbox.com/u/2766483/IMG_2343.JPG) is the photo that WILL crash the f-spot database if imported. Please tell me how it can be fixed!
Interesting parse failure. This looks like a corner-case XMP file which gives trouble. Looks like we'll need to fix the XMP parsing code in XmpTag. For reference: Unhandled Exception: System.InvalidOperationException: List has changed. at System.Collections.ArrayList+SimpleEnumerator.MoveNext () [0x00068] in /home/ruben/Projects/builds/mono-2.6.1/mcs/class/corlib/System.Collections/ArrayList.cs:150 at TagLib.Xmp.XmpTag.ParsePropertyElement (TagLib.Xmp.XmpNode parent, System.Xml.XmlNode node) [0x00223] in /home/ruben/Projects/taglib-sharp/src/TagLib/Xmp/XmpTag.cs:396 at TagLib.Xmp.XmpTag.ParseNodeElement (TagLib.Xmp.XmpNode parent, System.Xml.XmlNode node) [0x001b5] in /home/ruben/Projects/taglib-sharp/src/TagLib/Xmp/XmpTag.cs:356 at TagLib.Xmp.XmpTag.ParseNodeElementList (TagLib.Xmp.XmpNode parent, System.Xml.XmlNode xml_parent) [0x0002d] in /home/ruben/Projects/taglib-sharp/src/TagLib/Xmp/XmpTag.cs:314 at TagLib.Xmp.XmpTag.ParseRDF (System.Xml.XmlNode rdf_node, TagLib.File file) [0x000f2] in /home/ruben/Projects/taglib-sharp/src/TagLib/Xmp/XmpTag.cs:303 at TagLib.Xmp.XmpTag..ctor (System.String data, TagLib.File file) [0x00072] in /home/ruben/Projects/taglib-sharp/src/TagLib/Xmp/XmpTag.cs:271 at TagLib.Jpeg.File.ReadAPP1Segment (UInt16 length) [0x00176] in /home/ruben/Projects/taglib-sharp/src/TagLib/Jpeg/File.cs:486 at TagLib.Jpeg.File.ReadMetadata () [0x000b6] in /home/ruben/Projects/taglib-sharp/src/TagLib/Jpeg/File.cs:374 at TagLib.Jpeg.File.Read (ReadStyle propertiesStyle) [0x0001d] in /home/ruben/Projects/taglib-sharp/src/TagLib/Jpeg/File.cs:246 at TagLib.Jpeg.File..ctor (IFileAbstraction abstraction, ReadStyle propertiesStyle) [0x00007] in /home/ruben/Projects/taglib-sharp/src/TagLib/Jpeg/File.cs:167 at (wrapper managed-to-native) System.Reflection.MonoCMethod:InternalInvoke (object,object[],System.Exception&) at System.Reflection.MonoCMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00119] in /home/ruben/Projects/builds/mono-2.6.1/mcs/class/corlib/System.Reflection/MonoMethod.cs:500
Created attachment 173309 [details] [review] Fix an XMP parse failure.
Created attachment 173311 [details] [review] Update TagLib for XMP parse fix.
Attachment 173311 [details] pushed as ab2dfc8 - Update TagLib for XMP parse fix. I have solved the metadata parsing failure for the file you attached. The fix is currently in the master branch of git and on the stable-0.8 branch. It will be in the 0.8.1 release.
I just recently updated f-spot to 0.8.2 from the ppa (amd64 build) and I still get following messages: [Warn 11:05:59.477] Metadata of file file:///media/PhotosAndVideos/Pictures/PhotoLibrary/2010/11/14/2010-11-190.jpg may be corrupt, refusing to write to it, falling back to XMP sidecar. [Warn 11:06:00.037] Metadata of file file:///media/PhotosAndVideos/Pictures/PhotoLibrary/2010/11/14/2010-11-192.jpg may be corrupt, refusing to write to it, falling back to XMP sidecar. [Warn 11:06:00.597] Metadata of file file:///media/PhotosAndVideos/Pictures/PhotoLibrary/2010/11/14/2010-11-194.jpg may be corrupt, refusing to write to it, falling back to XMP sidecar. [Warn 11:06:01.157] Metadata of file file:///media/PhotosAndVideos/Pictures/PhotoLibrary/2010/11/14/2010-11-196.jpg may be corrupt, refusing to write to it, falling back to XMP sidecar. [Warn 11:06:02.307] Metadata of file file:///media/PhotosAndVideos/Pictures/PhotoLibrary/2010/11/15/2010-11-200.jpg may be corrupt, refusing to write to it, falling back to XMP sidecar. [Warn 11:06:02.867] Metadata of file file:///media/PhotosAndVideos/Pictures/PhotoLibrary/2010/11/14/2010-11-199.jpg may be corrupt, refusing to write to it, falling back to XMP sidecar. Photos are however imported as expected, only it uses XMP instead of writing the metadata to the files themselves.