Desktop freezes on group "Clear chat" and "Leave group", database stuck at 2.7 GB, directory de-lists the group anyway
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 25/100
- Issue 类型
- 缺陷
- 描述清晰度
- 需要澄清
- 活跃度
- 冷清
- 技术栈
- haskell
调研方向
No source files, tests, or entry points are named. Start by reproducing the freeze and relaunch behavior on Windows 11 with a large group database, then trace the Clear chat and Leave group operations, storage cleanup, and directory leave handling. Done means both operations complete or show an error without blocking the UI, storage is reclaimed, and the directory state matches membership.
由索引模型根据 Issue 内容生成。
描述
Is there an existing issue for this?
- I have searched the existing issues
Platform
Windows
OS version
Windows 11 Pro 25H2
App version
Desktop App 7.1 Beta
Current Behavior
I created a group a while back and I am still one of its owners. Over the last
few releases the desktop client has become unusable for that group, and by now
the whole profile is more or less a write-off. This is not new in 7.1 beta, it
was the same in the version before, and I think it has been like this for about
three releases.
Clicking "Clear chat" at the bottom of the group settings freezes the whole app.
Not just the chat view, the entire window. I cannot switch to the member list, I
cannot open settings, nothing responds. No error, no spinner, it just sits on
whatever was last on screen.
Since the group has more than one owner I thought I could work around it by
leaving and rejoining. Same freeze on "Leave group".
Getting out of the freeze is its own problem. If I close the window, the app
relaunches itself about a quarter of a second later, without me doing anything.
That second window is frozen as well, so I have to close it again before I can
start the app properly.
Meanwhile the database has grown past 2.7 GB. The group history does not show a
single file or image anymore, so whatever is taking up that space is not
reachable through the UI. And I cannot shrink it, because the two operations
that would (clear chat, leave group) are exactly the ones that hang. It is also
too big to import into the mobile app now, so moving the profile to my phone is
out as well.
The worst part is the directory. My leave attempt never went through, the client
hung and I killed it. I am still in the group, still an owner, I can still post.
I asked other members and none of them saw a "left the group" message. As far as
anyone can tell, nothing happened.
The SimpleX Directory removed the group from the listing anyway and announced
that the owner had left. So the directory is the only thing in the entire system
that thinks I left, and it is the one thing I cannot correct. I cannot retry the
leave because it hangs, and I see no way to get the listing back. As far as I
can tell I would have to register the whole group again from scratch.
The only thing that got me back to a working state was giving up on the profile:
rename the old owner profile, create a new one, make it an owner of the group,
switch to it, then delete the old profile in the desktop app. The database only
shrinks once the old profile is gone. Nothing you can do from inside the profile
frees that space. That is not an acceptable fix for a group owner. It means
throwing away a profile with all its contacts and every other group it is in,
just to get out of one broken group.
A few things that might help narrow it down:
The freeze locks the whole window, not just the chat, which looks more like
something blocking on the UI thread than a slow query stalling one screen.
Clear chat and leave group both hang, and both presumably run over the same bulk
delete of the group's items.
An empty looking history sitting on 2.7 GB, plus the space only being freed when
the entire profile is deleted, suggests deleted items leave their file payloads
behind.
On the directory: a leave goes out to each member over their own connection. If
those are sent one at a time and the client freezes partway through, an early
recipient gets its copy and the later ones never do. If the directory bot sits
early in that order, that would explain a de-listing nobody else ever saw. That
is a guess, I cannot see inside it, but it fits what I observe.
The self-relaunch after closing the frozen window may well be a separate defect.
Happy to split it out if you prefer.
Expected Behavior
Clear chat and leave group either finish or fail with a visible error. Neither
should block the whole app, and a long database operation should not run on the
UI thread with no progress shown.
Clearing a chat or leaving a group should actually free the storage, including
files that no chat item points at anymore.
Closing the app should close it, not relaunch it.
The directory should not act on a leave that the client never completed and that
no member ever received. Either the leave happens everywhere or nowhere. A leave
that survives only in the directory is the worst case, because I cannot undo it
and I cannot even retry it. And if a listing has been removed in error, an owner
should have a way to restore it without registering the group from scratch.
Steps To Reproduce
- Open the desktop client on Windows 11 with a profile whose database has grown
into the gigabyte range, on a large group you created and own. - Open the group, open the group settings, scroll to the bottom, click
"Clear chat". - The whole UI freezes. No navigation to the member list or to settings.
- Close the window. It relaunches itself after about a quarter of a second,
still frozen. Close it again, then start it normally. - Same thing, but click "Leave group" instead. Same freeze.
- Kill the app and restart it. You are still in the group and can still post.
The leave never happened. - Ask other members. They saw no leave message.
- Check the SimpleX Directory listing. The group is gone from it and the
directory reports that the owner left.
Relevant log output
- 主要语言
- Haskell
- 星标
- 19.5k
- 派生
- 1.4k
- 平均合并
- 2 天 4 小时
- 30 天内合并 PR
- 120
环境准备
- 提供 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
simplex-chat/simplex-chat 的其他 Issue
-
bug triage
难度 2/5 1-3 小时 新手友好度 68/100
simplex-chat/simplex-chat#7649 ·
维护者通常 1 天内回复
-
enhancement triage
难度 2/5 1-3 小时 新手友好度 72/100
simplex-chat/simplex-chat#7585 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
simplex-chat/simplex-chat#7248 ·
维护者通常 1 天内回复
-
Dead link at /docs/guide/readme.html可能重新可做 关联的 PR 已关闭且未合并。 未关闭
难度 1/5 1 小时以内 新手友好度 75/100
simplex-chat/simplex-chat#6782 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 74/100
simplex-chat/simplex-chat#6772 ·
维护者通常 1 天内回复
查看 simplex-chat/simplex-chat 的全部 Issue
相似的 Issue
-
bug
难度 2/5 1-3 小时 新手友好度 62/100
compiler-explorer/compiler-explorer#9272 ·
维护者通常 1 天内回复
-
enhancement
难度 1/5 1 小时以内 新手友好度 82/100
alunduil/siren-json.hs#247 ·
维护者通常 1 天内回复
-
enhancement
难度 1/5 1 小时以内 新手友好度 85/100
alunduil/network-arbitrary#196 ·
维护者通常 1 天内回复
-
enhancement
难度 1/5 1 小时以内 新手友好度 82/100
alunduil/collection-json.hs#402 ·
维护者通常 1 天内回复
-
`--margin` still counts code points when it measures the last line of a call in `Margin.hs`可能已有人在做 @sherenkov 于 1 天前认领。 未关闭bug
难度 2/5 1-3 小时 新手友好度 83/100
objectionary/phino#1871 · 2 条评论 ·
维护者通常 1 天内回复