GNOME Bugzilla – Bug 548972
cannot load ipod-sharp
Last modified: 2009-06-05 22:45:36 UTC
Steps to reproduce: 1. start banshee-1 2. 3. Stack trace: [Info 11:35:10.534] Running Banshee 1.2.1 [Warn 11:35:21.495] Service `Nereid.PlayerInterface' not started: Could not load file or assembly 'ipod-sharp, Version=0.0.1.0, Culture=neutral, PublicKeyToken=536f152cecbf758a' or one of its dependencies. The system cannot find the file specified. [Warn 11:35:21.557] Caught an exception - Could not load file or assembly 'ipod-sharp, Version=0.0.1.0, Culture=neutral, PublicKeyToken=536f152cecbf758a' or one of its dependencies. The system cannot find the file specified. (in `mscorlib') at (wrapper managed-to-native) System.AppDomain:LoadAssembly (string,System.Security.Policy.Evidence,bool) at System.AppDomain.Load (System.Reflection.AssemblyName assemblyRef, System.Security.Policy.Evidence assemblySecurity) [0x00000] at (wrapper remoting-invoke-with-check) System.AppDomain:Load (System.Reflection.AssemblyName,System.Security.Policy.Evidence) at System.AppDomain.Load (System.Reflection.AssemblyName assemblyRef) [0x00000] at (wrapper remoting-invoke-with-check) System.AppDomain:Load (System.Reflection.AssemblyName) at System.Reflection.Assembly.Load (System.Reflection.AssemblyName assemblyRef) [0x00000] at GLib.GType.FindTypeInReferences (System.String type_name, System.Reflection.Assembly asm, System.Collections.Hashtable visited) [0x00000] at GLib.GType.LookupType (IntPtr typeid) [0x00000] at GLib.ObjectManager.GetTypeOrParent (IntPtr obj) [0x00000] at GLib.ObjectManager.CreateObject (IntPtr raw) [0x00000] at GLib.Object.GetObject (IntPtr o, Boolean owned_ref) [0x00000] at GLib.Object.GetObject (IntPtr o) [0x00000] at Gtk.Widget.get_Screen () [0x00000] at Bacon.VolumeButton.BuildPopup (Double min, Double max, Double step) [0x00000] at Bacon.VolumeButton..ctor (Double min, Double max, Double step, IconSize size) [0x00000] at Bacon.VolumeButton..ctor () [0x00000] at Banshee.Gui.Widgets.ConnectedVolumeButton..ctor () [0x00000] at Nereid.PlayerInterface.BuildHeader () [0x00000] at Nereid.PlayerInterface.BuildPrimaryLayout () [0x00000] at Nereid.PlayerInterface.Initialize () [0x00000] at Banshee.Gui.BaseClientWindow.InitializeWindow () [0x00000] at Banshee.Gui.BaseClientWindow..ctor (System.String title) [0x00000] at Nereid.PlayerInterface..ctor () [0x00000] at (wrapper managed-to-native) System.Reflection.MonoCMethod:InternalInvoke (object,object[]) at System.Reflection.MonoCMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] Exception in Gtk# callback delegate Note: Applications can use GLib.ExceptionManager.UnhandledException to handle the exception. System.IO.FileNotFoundException: Could not load file or assembly 'ipod-sharp, Version=0.0.1.0, Culture=neutral, PublicKeyToken=536f152cecbf758a' or one of its dependencies. The system cannot find the file specified. File name: 'ipod-sharp, Version=0.0.1.0, Culture=neutral, PublicKeyToken=536f152cecbf758a' at (wrapper managed-to-native) System.AppDomain:LoadAssembly (string,System.Security.Policy.Evidence,bool) at System.AppDomain.Load (System.Reflection.AssemblyName assemblyRef, System.Security.Policy.Evidence assemblySecurity) [0x00000] at (wrapper remoting-invoke-with-check) System.AppDomain:Load (System.Reflection.AssemblyName,System.Security.Policy.Evidence) at System.AppDomain.Load (System.Reflection.AssemblyName assemblyRef) [0x00000] at (wrapper remoting-invoke-with-check) System.AppDomain:Load (System.Reflection.AssemblyName) at System.Reflection.Assembly.Load (System.Reflection.AssemblyName assemblyRef) [0x00000] at GLib.GType.FindTypeInReferences (System.String type_name, System.Reflection.Assembly asm, System.Collections.Hashtable visited) [0x00000] at GLib.GType.LookupType (IntPtr typeid) [0x00000] at GLib.ObjectManager.GetTypeOrParent (IntPtr obj) [0x00000] at GLib.ObjectManager.CreateObject (IntPtr raw) [0x00000] at GLib.Object.GetObject (IntPtr o, Boolean owned_ref) [0x00000] at GLib.Object.GetObject (IntPtr o) [0x00000] at Gtk.Window.get_Screen () [0x00000] at X11NotificationArea.OnRealized () [0x00000] at Gtk.Widget.realized_cb (IntPtr widget) [0x00000] at GLib.ExceptionManager.RaiseUnhandledException(System.Exception e, Boolean is_terminal) at Gtk.Widget.realized_cb(IntPtr widget) at Gtk.Widget.realized_cb(IntPtr ) at Gtk.Widget.gtk_widget_show_all(IntPtr ) at Gtk.Widget.gtk_widget_show_all(IntPtr ) at Gtk.Widget.ShowAll() at Banshee.NotificationArea.X11NotificationAreaBox..ctor() at Banshee.NotificationArea.NotificationAreaService.BuildNotificationArea() at Banshee.NotificationArea.NotificationAreaService.ServiceStartup() at Banshee.NotificationArea.NotificationAreaService.Banshee.ServiceStack.IExtensionService.Initialize() at Banshee.ServiceStack.ServiceManager.StartExtension(Mono.Addins.TypeExtensionNode node) at Banshee.ServiceStack.ServiceManager.Run() at Banshee.ServiceStack.Application.Run() at Banshee.Gui.GtkBaseClient.Initialize(Boolean registerCommonServices) at Banshee.Gui.GtkBaseClient..ctor(Boolean initializeDefault, System.String defaultIconName) at Banshee.Gui.GtkBaseClient..ctor() at Nereid.Client..ctor() at System.Reflection.MonoCMethod.InternalInvoke(System.Object , System.Object[] ) at System.Reflection.MonoCMethod.InternalInvoke(System.Object , System.Object[] ) at System.Reflection.MonoCMethod.Invoke(System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) at System.Reflection.MonoCMethod.Invoke(BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) at System.Reflection.ConstructorInfo.Invoke(System.Object[] parameters) at System.Activator.CreateInstance(System.Type type, Boolean nonPublic) at System.Activator.CreateInstance(System.Type type) at Banshee.Gui.GtkBaseClient.Startup() at Hyena.Gui.CleanRoomStartup.Startup(Hyena.Gui.StartupInvocationHandler startup) at Banshee.Gui.GtkBaseClient.Entry() at Nereid.Client.Main(System.String[] args) Other information: This is on Mandriva Cooker i586 with banshee 1.2.1, gtk-sharp 2.12.2, gnome-sharp 2.23.90 and the files from ipod-sharp 0.8.0 which are in /usr/lib/banshee-1/Extensions.
Did you install banshee and ipod-sharp from a package or compile it yourself ? It looks like banshee can't find the ipod-sharp.dll it was compiled with.
i install from package recomanded by mandriva
I have even tried a fresh rebuild of banshee against the ipod-sharp package, no change.
*** Bug 549116 has been marked as a duplicate of this bug. ***
hello again , any solution for that problem please
(In reply to comment #5) > hello again , any solution for that problem please No, not yet. You're CCed on this bug; you'll be notified of any updates when they happen.
Adding myself as PLD Linux is affected in the same way.
To quote part of my mail to the banshee-list: [patrys@purrr SPECS]$ rpm -ql dotnet-ipod-sharp-0.8.0-1.i686 /usr/lib/ipod-sharp /usr/lib/ipod-sharp/ipod-sharp-firmware.dll /usr/lib/ipod-sharp/ipod-sharp-firmware.dll.mdb /usr/lib/ipod-sharp/ipod-sharp-ui.dll /usr/lib/ipod-sharp/ipod-sharp-ui.dll.mdb /usr/lib/ipod-sharp/ipod-sharp.dll /usr/lib/ipod-sharp/ipod-sharp.dll.mdb /usr/lib/pkgconfig/ipod-sharp-ui.pc /usr/lib/pkgconfig/ipod-sharp.pc /usr/share/doc/dotnet-ipod-sharp-0.8.0 /usr/share/doc/dotnet-ipod-sharp-0.8.0/AUTHORS.gz /usr/share/doc/dotnet-ipod-sharp-0.8.0/ChangeLog.gz /usr/share/doc/dotnet-ipod-sharp-0.8.0/NEWS.gz /usr/share/doc/dotnet-ipod-sharp-0.8.0/README.gz While: [patrys@purrr SPECS]$ strace -ff -eopen banshee-1 2>&1 | grep ipod-sharp.dll [pid 28528] open("/usr/lib/mono/gac/policy.0.0.ipod-sharp/0.0.0.0__536f152cecbf758a/policy.0.0.ipod-sharp.dll", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory) [pid 28528] open("/usr/lib/mono/gac/ipod-sharp/0.0.1.0__536f152cecbf758a/ipod-sharp.dll", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory) [pid 28528] open("/usr/lib/ipod-sharp.dll", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory) [pid 28528] open("/usr/lib/mono/gac/ipod-sharp/0.0.1.0__536f152cecbf758a/ipod-sharp.dll", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory) [pid 28528] open("/usr/lib/ipod-sharp.dll", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory) So it seems it tries to open some other file than the one it used to compile (all paths in pkgconfig files are correct).
It works indeed here after moving ipod-sharp* from /usr/lib/banshee-1/Extensions to /usr/lib/banshee-1.
See above: 1) it does not try to open anything inside /usr/lib/banshee 2) even if it did it's banshee depending on ipod-sharp, not the other way around so banshee should be happy with whatever dir ipod-sharp puts itself in 3) ipod-sharp can't land in banshee's dir as that would cause a mutual dependency
Created attachment 117404 [details] [review] Register ipod-sharp with GAC Correct me if I am wrong but the source of all the problems seems to lay in ipod-sharp-0.8.0. To be more precisely src/Makefile.am has the following lines commented out: #install-data-hook: # $(GACUTIL) /i $(ASSEMBLY) /package $(PACKAGE) /gacdir $(libdir) /root $(DESTDIR)$(libdir) That in turn causes ipod-sharp and ipod-sharp-ui not to be registered with Mono's GAC so it can't find the assembly. See attachment for the proposed solution (patch against ipod-sharp 0.8.0). Lo and behold - Banshee 1.2.1 no longer crashes on start. It seems older versions of Banshee somehow compensated for the broken ipod-sharp library (perhaps by setting MONO_PATH?). Others having the same problem - can you confirm that this patch fixes it? All files should remain in their original directories so please undo any .dll moving.
Looking at the ipod-sharp svn, it seems that the dlls are intentionally not put in the GAC since 2005. See : http://anonsvn.mono-project.com/viewvc/trunk/ipod-sharp/src/Makefile.am?view=log#rev47240 Apps using ipod-sharp are then supposed to copy the dlls over to their directory, like banshee seems to do (see build/m4/banshee/dap-ipod.m4 and src/Dap/Banshee.Dap.Ipod/Makefile.am in the banshee source tree). This copy should happen when you run "make install", or I guess be handled by the packaging stuff. Sorry I can't be of more help, I'm running Gentoo, and don't have an iPod.
Bertrand: I've found that but: 1) it's three years old, I don't think ipod-sharp is stil in alpha state 2) mono does not even try to look for ipod-sharp.dll in /usr/lib/banshee-1/Extensions where make install puts it Because of 2) having a copy there is of no use since it's not just the iPod plugin but more like the main banshee binary depending on this library. The result is it's a startup crasher rather than loss of a single function. To put it in other words it's not that iPod does not work - I'm not even able to launch Banshee and you can see that in the original bug reported by Götz Waschk above. Making ipod-sharp register itself like the rest of the Mono libs do fixes both Banshee and iPod support.
There are two independant reports, so I'm setting this to NEW.
After taking another look around this issue it seems a proper fix is making sure Banshee's main binary does not link against ipod-sharp. Then registering ipod-sharp with GAC is just a useful enhancement.
Patryk, are you running mono from svn? I've heard it no longers loads assemblies from the current directory, just from the initially executing directory.
No, I'm running 1.2.1 (I'm a downstream packager for PLD)
Gabriel: Please also see previous comments. The problem is not with loading the iPod extension, it's the main Banshee binary that dies with the traceback. While losing one extensions would not be critical we somehow end up linking banshee-1 with ipod-sharp which causes a hard dependency (and at this stage the extension directory is not scanned as the process is not yet controlled by Banshee itself).
This looks like a packaging issue to me. Aaron?
to #18: in the Mandriva package, this is worked around like this: http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/banshee/current/SPECS/banshee.spec?revision=276433&view=markup
We're not going to register with the GAC w/o a review of the API etc - quite an involved process, b/c it's a big commitment to make. Is this still happening w/ the latest releases? I have never been able to reproduce this - any idea why? What is mono --version for people who can reproduce?
I cannot reproduce this anymore on Mandriva Cooker with banshee 1.4.1 and mono 2.0.1. Ipod-sharp is loaded from /usr/lib/banshee-1/Extensions just fine.
Closing, was almost certainly a Mandriva packaging problem.