Libitum / jellyfin-plugin-douban

Douban metadata provider for Jellyfin
MIT License
611 stars 76 forks source link

安装 Douban 插件后,Jellyfin 启动报错 #10

Closed leopku closed 4 years ago

leopku commented 4 years ago

Jellyfin 版本: 10.4.3 Douban 插件版本:0.3.0 安装平台: Docker

将 douban 插件放到插件相应目录下,重启 jellyfin 失败

[10:19:39] [INF] Loaded assembly Jellyfin.Plugins.Gotify, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null from /config/plugins/Gotify Notification/Jellyfin.Plugins.Gotify.dll
[10:19:39] [FTL] Error while starting server.
System.BadImageFormatException: Bad IL format.
   at System.Runtime.Loader.AssemblyLoadContext.LoadFromPath(IntPtr ptrNativeAssemblyLoadContext, String ilPath, String niPath, ObjectHandleOnStack retAssembly)
   at System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyPath(String assemblyPath)
   at System.Reflection.Assembly.LoadFrom(String assemblyFile)
   at Emby.Server.Implementations.ApplicationHost.GetComposablePartAssemblies()+MoveNext()
   at Emby.Server.Implementations.ApplicationHost.GetTypes(IEnumerable`1 assemblies)+MoveNext()
   at System.Collections.Generic.LargeArrayBuilder`1.AddRange(IEnumerable`1 items)
   at System.Collections.Generic.EnumerableHelpers.ToArray[T](IEnumerable`1 source)
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at Emby.Server.Implementations.ApplicationHost.DiscoverTypes()
   at Emby.Server.Implementations.ApplicationHost.InitAsync(IServiceCollection serviceCollection)
   at Jellyfin.Server.Program.StartApp(StartupOptions options)
[10:19:39] [INF] Disposing CoreAppHost

[10:19:39] [FTL] Unhandled Exception
System.NullReferenceException: Object reference not set to an instance of an object.
   at Emby.Server.Implementations.ApplicationHost.Dispose(Boolean dispose)
   at Jellyfin.Server.Program.StartApp(StartupOptions options)
   at Jellyfin.Server.Program.<Main>(String[] args)
Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.
   at Emby.Server.Implementations.ApplicationHost.Dispose(Boolean dispose)
   at Jellyfin.Server.Program.StartApp(StartupOptions options)
   at Jellyfin.Server.Program.<Main>(String[] args)
Aborted (core dumped)

将 douban 插件删除后,正常

Libitum commented 4 years ago

@leopku 多谢反馈,我再试一下看是不是编译的问题。请问可以帮忙只保留 dll 文件 在 plugins 目录里再尝试一下么?谢谢!

leopku commented 4 years ago

试了,还是报一样的错

Libitum commented 4 years ago

Hi @leopku 我在同样的 10.4.3 的 docker 环境下测试了一下,没有问题,相关日志是: [22:10:18] [INF] Loaded assembly Jellyfin.Plugin.Douban, Version=0.3.0.0, Culture=neutral, PublicKeyToken=null from /config/plugins/Douban/Jellyfin.Plugin.Douban.dll

根据你的报错信息,我初步怀疑是 dotnet core 的版本没有对应上。请问可否提供下你具体的一些安装信息?比如是什么操作系统,什么设备,使用的是哪个 docker 镜像?越多相关信息越好。 谢谢!

leopku commented 4 years ago

硬件: Dell R410 CPU: Xeon5506 Mem: 32G OS: Ubuntu 18.04 Arch: amd64 镜像: jellyfin/jellyfin:10.4.3 DOTNET_VERSION: 2.2.8

Libitum commented 4 years ago

这个问题很奇怪,目前看应该只有两种可能:文件损坏或者文件权限不对,比如运行时不可读。 建议这样排查一下:

  1. 检查一下文件的 md5 是否是正确的 md5sum Jellyfin.Plugin.Douban.dll 312ce94296e82200b16a4a77e2036737 Jellyfin.Plugin.Douban.dll

  2. 检查一下文件权限 ls -l Jellyfin.Plugin.Douban.dll 确认文件的 owner、权限 和 Jellyfin.Plugins.Gotify.dll 的是一致的,避免在 docker 里限制了 user 导致不可读。

leopku commented 4 years ago

md5 一致 312ce94296e82200b16a4a77e2036737 Jellyfin.Plugin.Douban.dll

文件权限也正常,与其它正常工作的插件一致

Libitum commented 4 years ago

我这边没有办法复现,那我暂时没有其他办法了,抱歉。

leopku commented 4 years ago

我这边没有办法复现,那我暂时没有其他办法了,抱歉。

放着没管,貌似又能正常使用了。-___-!

Libitum commented 4 years ago

这么神奇么 -___-

leopku commented 4 years ago

这么神奇么 -___-

就是这么神奇:smile:

谢谢大佬