环境:KUbuntu 18.04,通过 https://github.com/wszqkzqk/deepin-wine-ubuntu 中的 kde_install.sh 脚本安装 deepin-wine,然后根据对应链接安装了 QQ。
现象:安装后使用 QQ 一切正常,可以登录以及收发消息。但运行几分钟后 QQ 崩溃,多次运行现象相同。并且终端显示:
netconnection.c:300:create_netconn_socket: 假设 ‘server->addr_len’ 失败。
检查 deepin-wine 版本:
$ deepin-wine --version
wine-2.18
经过查找,netconnection.c
位于 wine 的 Linux 版winsock.dll
中 ,因此下载 wine 2.18 源代码后删除这行 assert 语句并重新编译,替换原版本即可。替换后,同样的错误不再出现。
为了方便大家,我把编译好的版本发出来,用于替换 /usr/lib/i386-linux-gnu/deepin-wine/wininet.dll.so
:
https://1drv.ms/u/s!AkuuhpypFt0IlZE7FikXUudAswtwqA?e=hfV8xc
注意,直接删除 assert 语句往往很危险,因为 assert 语句反映了程序内部状态的不一致性,删除 assert 语句可能避免程序立刻出错,但容易导致将来更严重的错误。但此处的 assert 并不涉及非常关键的性质,不至于导致严重的错误。