macOS: TLS 重连时客户端永久死锁 — SecureSocket::freeSSL() 在 SocketMultiplexer::removeSocket() 中持有 ssl_mutex_
作者: ismailislerr创建于 2026年9月7日更新于 2026年9月12日
桌面流程版本信息
服务台流量:1.26.0.0
数量: 6.10.1
系统:macOS 26.5.2 (25F84),苹果硅 (Mac16,10)QQ 构建类型
- 正式发布(GitHub发布后安装/包装)
QQ 服务台流程配置
- Windows服务器,macOS 26.5.2客户端(Mac迷你,苹果硅)
- 客户端作为发射代理运行无头(
org.deskflow.client'、keepAlive= true') - 每台机单监视器, TLS 启用( TLSv1.3)
哪些步骤将复制问题?
- 通过TLS连接一个macOS客户端到服务器,并留下连接.
- 以`发生tls错误(系统调用失败)'的方式打破TLS连接——就我的情况而言,它是在中断连接~3小时后自行发生的。
- 客户端登录 " 从服务器上断开 " ,然后 " 连接到 < server > :24800 " ,然后停止——没有成功、没有错误、没有重复、永远。
由于这个过程仍然活下来,启动的'KeepAlive'从不起火,因此客户端坐到手动重启为止. 我注意到之前,我一直保持了32分钟的楔子;服务器一直保持健康(ICMP很好,港口24800接受连接)。
观察日志, 最后一行之后一无所获 :
[2026-09-07T22:31:20.744] ERROR:tls出错(系统调用失败).
[2026-09-07T22:31:20.749] IPC:已与服务器断开
[2026-09-07T22:31:21.759] IPC:连接到"服务员":"服务员":24800- 悬挂是事件线程和多轴服务线程之间的锁令僵局
`样本'(1) 接合了两个相关线条:
线索 528084( Deskflow 事件队列)
应用: runEventsLoop( 无效 const *) + 24
事件队列: loop( ) + 344
事件队列: 发送Event( event const&) + 332
客户端: handleConnectTimeout () + 168
客户端: 清理连接() + 260
PacketStreamFilter::~PacketStreamFilter () + 92
StreamFilter::~ StreamFilter () + 104 (中文(简体) ).
安全套:~安全套()+48
安全套: 免费SSL () + 44
套接字多解::removeSocket(ISocket *)+76
拱门多端读取Poix:WaitCondVar (.) + 204
路径( C)
psynch cv等 + 8 < -- 等待服务线程
线索 528082( Socket 复式服务线程)
套接字复式:服务Thread(void const *)+1252
安全锁: 服务接通(ISocket MultiplexerJob*, bul, bul, bul)+ 56
安全套: 安全连接( int) + 84
安全锁: 装入证书( QString const &) + 40
ưμ㼯A
psynch mutex等 + 8 < -- 等待 ssl mutex 根原因
双方仍在 " 主机 " (`a930c87ea4ec'):
翻译: 无效安全套: freeSSL () { std::scoped lock ssl lock{sl mutex };//(1) 获取 ssl mutex
是 Fatal( 真实); // 从多轮驱动器取出套接字 ASAP 否则比赛条件 / 请检查url=值 (帮助). . . . . . . .
内容来源: deskflow/deskflow