Banshee 启动时崩溃

Banshee 启动时崩溃

操作系统 16.04。banshee至今每天都在使用,但后来出现了错误。

包含致命日志错误。

[ERROR] FATAL UNHANDLED EXCEPTION: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.MethodAccessException: Method `IBusProxy:.ctor ()' is inaccessible from method `NDesk.DBus.BusObject:.ctor ()'

  at (wrapper managed-to-native) System.Object:__icall_wrapper_mono_throw_method_access (intptr,intptr)
  at IBusProxy..ctor () [0x00000] in <8f213ad6c6e7479eb4b70a3891c9ae32>:0 
  at (wrapper managed-to-native) System.Reflection.MonoCMethod:InternalInvoke (System.Reflection.MonoCMethod,object,object[],System.Exception&)
  at System.Reflection.MonoCMethod.InternalInvoke (System.Object obj, System.Object[] parameters) [0x00002] in <f712f98eb8e445c8918edaf595bbe465>:0 
   --- End of inner exception stack trace ---
  at System.Reflection.MonoCMethod.InternalInvoke (System.Object obj, System.Object[] parameters) [0x00019] in <f712f98eb8e445c8918edaf595bbe465>:0 
  at System.RuntimeType.CreateInstanceMono (System.Boolean nonPublic) [0x000ca] in <f712f98eb8e445c8918edaf595bbe465>:0 
  at System.RuntimeType.CreateInstanceSlow (System.Boolean publicOnly, System.Boolean skipCheckThis, System.Boolean fillCache, System.Threading.StackCrawlMark& stackMark) [0x0001a] in <f712f98eb8e445c8918edaf595bbe465>:0 
  at System.RuntimeType.CreateInstanceDefaultCtor (System.Boolean publicOnly, System.Boolean skipCheckThis, System.Boolean fillCache, System.Threading.StackCrawlMark& stackMark) [0x0002a] in <f712f98eb8e445c8918edaf595bbe465>:0 
  at System.Activator.CreateInstance (System.Type type, System.Boolean nonPublic) [0x00040] in <f712f98eb8e445c8918edaf595bbe465>:0 
  at System.Activator.CreateInstance (System.Type type) [0x00000] in <f712f98eb8e445c8918edaf595bbe465>:0 
  at NDesk.DBus.BusObject.GetObject (NDesk.DBus.Connection conn, System.String bus_name, NDesk.DBus.ObjectPath object_path, System.Type declType) [0x00008] in <6f993bb1a1414adf8517b25c86b39e83>:0 
  at NDesk.DBus.Connection.GetObject (System.Type type, System.String bus_name, NDesk.DBus.ObjectPath path) [0x0000d] in <6f993bb1a1414adf8517b25c86b39e83>:0 
  at NDesk.DBus.Connection.GetObject[T] (System.String bus_name, NDesk.DBus.ObjectPath path) [0x00001] in <6f993bb1a1414adf8517b25c86b39e83>:0 
  at NDesk.DBus.Bus..ctor (System.String address) [0x0000f] in <6f993bb1a1414adf8517b25c86b39e83>:0 
  at NDesk.DBus.Bus.Open (System.String address) [0x00033] in <6f993bb1a1414adf8517b25c86b39e83>:0 
  at Mono.Zeroconf.Providers.AvahiDBus.DBusManager.ConnectToSystemBus () [0x0001f] in <6f993bb1a1414adf8517b25c86b39e83>:0 
  at Mono.Zeroconf.Providers.AvahiDBus.DBusManager.IterateThread (System.Object o) [0x00012] in <6f993bb1a1414adf8517b25c86b39e83>:0 
  at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context (System.Object state) [0x0000e] in <f712f98eb8e445c8918edaf595bbe465>:0 
  at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x0008d] in <f712f98eb8e445c8918edaf595bbe465>:0 
  at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <f712f98eb8e445c8918edaf595bbe465>:0 
  at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem () [0x0002a] in <f712f98eb8e445c8918edaf595bbe465>:0 
  at System.Threading.ThreadPoolWorkQueue.Dispatch () [0x00096] in <f712f98eb8e445c8918edaf595bbe465>:0 
  at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback () [0x00000] in <f712f98eb8e445c8918edaf595bbe465>:0 

答案1

我在 Arch Linux 上遇到了同样的问题。我查看了我的日志,发现 mono 最近已从版本 4.6.1.3-1 升级到版本 4.8.0.495-1。我能够成功地将 mono 软件包从 ALA 回滚到版本 4.6.1.3-1,现在 banshee 似乎运行正常。

我不确定如何在 Ubuntu 上执行此操作,但在 Arch 上命令是:

yaourt -S downgrader
downgrader mono

然后选择mono-4.6.1.3-1 (from ALA)

我尝试启动 Ubuntu Live 环境,甚至搜索http://packages.ubuntu.com/用于等效的 Ubuntu 命令,但似乎 mono 在许多不同的包下以不同的方式打包,如 mono-runtime 或 libmono 等,所以如果一个对 Ubuntu 更有经验的人可以为这个人提供适合 OP 的正确命令。

答案2

与 ThomasG 类似,为了确保万无一失,我还将 Mono 降级至 4.4.2 版。我这样做了:

  1. 使用 Synaptic 软件包管理器(是的,您仍然可以安装它,我更喜欢用它来管理软件包)我删除了与 mono 框架相关的所有软件包。其中一个项目将触发大多数项目的删除,banshee 也是如此。这很好。检查列表中您也想在之后重新安装的其他软件。另外:并非所有标题或描述中带有“mono”的搜索结果都属于 mono 框架。
  2. 打开“软件和更新”,在“其他软件”下找到 mono 存储库(以 开头http://download.mono-project.com),然后进行如下编辑:
    • 分布:“wheezy/snapshots”
    • 组件“[version]/main”(在我的情况下为“4.4.2/main”)。
  3. 我最终使用命令行运行sudo apt update,然后sudo apt list mono-complete检查版本。然后我用安装了 mono sudo apt install mono-complete,然后用安装了 banshee sudo apt install banshee,这两者都要求我接受无法验证的软件包。

我打开了 banshee,它就在那里:正在运行,并且所有播放列表都完好无损。

答案3

很抱歉发布到一个非常老的主题,但万一其他人遇到这个问题 - 解决方法是添加:

<Addin id="Banshee.Daap,1.0" enabled="False" />

/home/user/.config/banshee-1/addin-db-001/config.xml

您无法启用 DAAP曾经. 无需降低您的 mono 版本。

答案4

一种解决方案是使用 Docker 使其在具有旧依赖项的环境中运行。

首先,您需要设置一个 Dockerfile,在旧版本上安装 Docker 并启动它:

FROM debian:jessie-slim

ARG username
RUN apt-get update && \
    apt-get install -y banshee gnome-themes && \
    apt-get clean && \
    apt-get autoremove && \
    rm -rf /var/lib/apt/lists/*

RUN useradd ${username}

USER ${username}
CMD ["/usr/bin/banshee"]

然后,您需要通过传递您自己的本地用户名来构建它,以确保主机和客户机同步:

sudo docker build --build-arg username=$USER -t banshee .

然后,要连接到 pulseaudio,您需要从主机建立一个桥接:

pactl load-module module-native-protocol-unix socket=/tmp/pulseaudio.socket

我们通过在以下位置创建 conf 文件来通知访客/tmp/pulseaudio.client.conf

default-server = unix:/tmp/pulseaudio.socket
# Prevent a server running in the container
autospawn = no
daemon-binary = /bin/true
# Prevent the use of shared memory
enable-shm = false

最后一部分是通过将正确的参数传递给 docker 命令来正确连接所有内容(pulseaudio、X 服务器、dbus 等等)。

注意:此命令确实会删除 docker 的所有与安全相关的功能,因此如果 banshee 容易受到任何类型的攻击,您的机器也会如此。

docker run \
        --security-opt seccomp=unconfined \
        --net=host \
        --volume=${HOME}:${HOME}:rw \
        --volume="${HOME}/.Xauthority:${HOME}/.Xauthority:rw" \
        -v /tmp/.X11-unix:/tmp/.X11-unix \
        -e DISPLAY=unix${DISPLAY} \
        --env DBUS_SESSION_BUS_ADDRESS="${DBUS_SESSION_BUS_ADDRESS}" \
        -v /run/user/$(id -u)/bus:/run/user/$(id -u)/bus:rw \
        -v /var/lib/dbus/machine-id:/var/lib/dbus/machine-id \
        --device /dev/snd \
        -v /var/run/dbus/:/var/run/dbus \
        --env PULSE_SERVER=unix:/tmp/pulseaudio.socket \
       --env PULSE_COOKIE=/tmp/pulseaudio.cookie \
       --volume /tmp/pulseaudio.socket:/tmp/pulseaudio.socket \
       --volume /tmp/pulseaudio.client.conf:/etc/pulse/client.conf \
        --volume /usr/share/dbus-1:/usr/share/dbus-1 \
        --volume /usr/share/themes:/usr/share/themes \
        -ti banshee

链接到已制作的 Dockerfile(免责声明:我是作者):https://github.com/Musinux/banshee-docker

相关内容