After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 631333 - XMP parse failure: System.InvalidOperationException: List has changed.
XMP parse failure: System.InvalidOperationException: List has changed.
Status: RESOLVED FIXED
Product: f-spot
Classification: Other
Component: General
0.8.0
Other Linux
: Urgent critical
: 0.8.1
Assigned To: F-spot maintainers
F-spot maintainers
Depends on:
Blocks:
 
 
Reported: 2010-10-04 17:25 UTC by Rauno Uusitalo
Modified: 2011-01-02 10:16 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Fix an XMP parse failure. (34.95 KB, patch)
2010-10-27 09:38 UTC, Ruben Vermeersch
committed Details | Review
Update TagLib for XMP parse fix. (608 bytes, patch)
2010-10-27 09:41 UTC, Ruben Vermeersch
committed Details | Review

Description Rauno Uusitalo 2010-10-04 17:25:29 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?
Comment 1 Rauno Uusitalo 2010-10-05 07:36:54 UTC
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.
Comment 2 André Klapper 2010-10-10 13:07:59 UTC
Can you attach the photo here if possible? Please not that it would be public.
Comment 3 Rauno Uusitalo 2010-10-10 15:36:59 UTC
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?
Comment 4 Rauno Uusitalo 2010-10-26 21:33:55 UTC
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!
Comment 5 Ruben Vermeersch 2010-10-27 09:01:38 UTC
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
Comment 6 Ruben Vermeersch 2010-10-27 09:38:21 UTC
Created attachment 173309 [details] [review]
Fix an XMP parse failure.
Comment 7 Ruben Vermeersch 2010-10-27 09:41:58 UTC
Created attachment 173311 [details] [review]
Update TagLib for XMP parse fix.
Comment 8 Ruben Vermeersch 2010-10-27 09:43:10 UTC
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.
Comment 9 YM 2011-01-02 10:16:53 UTC
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.