zonyitoo / doubanfm-qt

A DoubanFM client
Other
511 stars 99 forks source link

弹出界面后等一会就退出 #13

Closed Blaskyy closed 8 years ago

Blaskyy commented 10 years ago

➜ ~ doubanfm-qt "Qt Warning - invalid keysym: dead_actute" Switch to channel "华语" Received new playlist with 5 songs CurrentPlaying:
artist: "陈奕迅" title: "圣诞结" album: "七" publicTime: "2003" company: "英皇娱乐" kbps: 5 like: false sid: 507939 subType: "" [1] 9798 segmentation fault (core dumped) doubanfm-qt

zonyitoo commented 10 years ago

什么系统?这个问题在某些系统上一直存在,但在我这里都重现不了,告诉我你的发行版、Qt版本,我在虚拟机试一下

Blaskyy commented 10 years ago

Linux 3.10.24-1-MANJARO, qt5-base 5.2.0-1, kdebase-runtime 4.11.4, 用yaourt装的qdoubanfm-git

zonyitoo commented 10 years ago

唔?在Archlinux我用得很正常呀,不过我是Gnome

Blaskyy commented 10 years ago

在KDE下试试?

zonyitoo commented 10 years ago

终于装好了KDE,BUG已重现,正在看是什么造成的

Blaskyy commented 10 years ago

辛苦了~Merry Christmas.

zonyitoo commented 10 years ago

Debug的时候看到是在QMediaPlayersetPlaylist方法出的异常

在Gitcafe上已经收到了多个类似的Issues

跟踪发现是调用libgstreamer一直调用到libkdecore.so.5出了错,里面全是汇编不知道代码的意义,在Gnome3.10下完全正常,在Mac OS X和Windows下测试也正常(仅为了粗略测试程序本身逻辑是否正确,不严谨),初步怀疑是KDE4.9与Qt5之间的Bug。

Gnome3.10和Qt5的Multimedia库之间配合也有Bug,但勉强可用。

我继续测试看看Bug出在什么地方。

noblehng commented 10 years ago

在KDE4环境下,libproxy用dlopen打开自己链接到libkdecore.so的模块config_kde4.so,导致Qt4的KDE4库和Qt5的程序符号冲突(这里是QHash),所以segfault了。 https://code.google.com/p/libproxy/issues/detail?id=197

像gitcafe那提到的一样,把libproxy的kde4模块移除就行: https://gitcafe.com/zonyitoo/doubanfm-qt/tickets/12

最近openSUSE Factory的Yast2软件管理用Qt5后也是这个问题: https://bugzilla.novell.com/show_bug.cgi?id=866692

zonyitoo commented 10 years ago

看来删掉它是唯一的处理方法了。非常感谢!

ZeppLu commented 8 years ago

亲测 KDE 5 中已无该问题,readme 文档该更新一下了

zonyitoo commented 8 years ago

Good, thanks!