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 548972 - cannot load ipod-sharp
cannot load ipod-sharp
Status: RESOLVED NOTGNOME
Product: banshee
Classification: Other
Component: Device - iPod
1.2.1
Other All
: Normal critical
: 1.x
Assigned To: Banshee Maintainers
Banshee Maintainers
: 549116 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2008-08-22 09:42 UTC by Götz Waschk
Modified: 2009-06-05 22:45 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Register ipod-sharp with GAC (1.23 KB, patch)
2008-08-26 13:39 UTC, Patryk Zawadzki
rejected Details | Review

Description Götz Waschk 2008-08-22 09:42:14 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.
Comment 1 Bertrand Lorentz 2008-08-23 19:09:56 UTC
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.
Comment 2 axlrose 2008-08-23 19:16:42 UTC
i install from package recomanded by mandriva 

Comment 3 Götz Waschk 2008-08-23 19:45:44 UTC
I have even tried a fresh rebuild of banshee against the ipod-sharp package, no change.
Comment 4 Andrew Conkling 2008-08-23 20:39:54 UTC
*** Bug 549116 has been marked as a duplicate of this bug. ***
Comment 5 axlrose 2008-08-24 23:04:28 UTC
hello again , any solution for that problem please
Comment 6 Andrew Conkling 2008-08-25 02:44:22 UTC
(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.
Comment 7 Patryk Zawadzki 2008-08-26 12:47:08 UTC
Adding myself as PLD Linux is affected in the same way.
Comment 8 Patryk Zawadzki 2008-08-26 12:51:55 UTC
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).
Comment 9 Götz Waschk 2008-08-26 13:01:54 UTC
It works indeed here after moving ipod-sharp* from /usr/lib/banshee-1/Extensions to /usr/lib/banshee-1.
Comment 10 Patryk Zawadzki 2008-08-26 13:07:15 UTC
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
Comment 11 Patryk Zawadzki 2008-08-26 13:39:28 UTC
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.
Comment 12 Bertrand Lorentz 2008-08-26 19:57:44 UTC
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.
Comment 13 Patryk Zawadzki 2008-08-26 20:17:15 UTC
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.
Comment 14 Götz Waschk 2008-09-08 12:52:53 UTC
There are two independant reports, so I'm setting this to NEW.
Comment 15 Patryk Zawadzki 2008-09-08 12:56:04 UTC
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.
Comment 16 Gabriel Burt 2008-09-09 23:19:26 UTC
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.
Comment 17 Patryk Zawadzki 2008-09-09 23:22:03 UTC
No, I'm running 1.2.1 (I'm a downstream packager for PLD)
Comment 18 Patryk Zawadzki 2008-09-09 23:36:18 UTC
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).
Comment 19 Gabriel Burt 2008-09-10 00:05:46 UTC
This looks like a packaging issue to me.  Aaron?
Comment 20 Götz Waschk 2008-09-10 05:26:26 UTC
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
Comment 21 Gabriel Burt 2009-01-13 19:20:58 UTC
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?
Comment 22 Götz Waschk 2009-01-13 19:37:23 UTC
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.
Comment 23 Gabriel Burt 2009-06-05 22:45:36 UTC
Closing, was almost certainly a Mandriva packaging problem.