Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
Back to tool/Back to issues
#1958·vicinae

macOS: SIGABRT on every quit

Author: yossizahnCreated Sep 15, 2026Updated Sep 15, 2026
LabelsbugmacOScrashauto-triaged

System information

  • Version: v0.28.2 (48c7c4e17)
  • Build info: AppleClang 21.0.0.21000099 - Release - LTO
  • Provenance: dmg
  • OS: macOS 27.0 (arm64)
  • QT Platform: cocoa
  • DE: Aqua

Describe the bug

Vicinae crashes every time it quits (crash log attached)

Vicinae-2026-09-15-202326.txt

To Reproduce

click menu icon → quit Vicinae

Expected behavior

Should quit cleanly

Additional context

Claude analysis :

The cause looks like an ownership mismatch in IpcCommandServer:

  • ipc-command-server.hpp#L83-L84: IpcService m_service; is a by-value member
  • ipc-command-server.cpp#L336: m_ipcServer(m_rpc, &m_service)
  • glaze-qt.hpp#L710: the generated Server constructor does m_service->setParent(this)

When m_ipcServer is destroyed, Qt deletes its children, which means delete &m_service. That pointer sits inside commandServer, a stack object in startServer (server.cpp#L460). The binary is stripped, but the crashing frame is IpcCommandServer's destructor (identified via RTTI), and it aborts while destroying the member at offset 0xb0, which is m_ipcServer.

Possible fix: let the server own a heap-allocated service, matching what the generated Client already does:

cpp
IpcService *m_service;
ipc_gen::Server m_ipcServer;

// ctor
m_service(new IpcService(m_rpc, *ctx)), m_ipcServer(m_rpc, m_service)

Alternatively, call m_service.setParent(nullptr) in an IpcCommandServer destructor.

Same root cause as #1571 (Linux, crash at logout). Resolving that trace against the unstripped v0.22.0 release binary gives main → startServer → IpcCommandServer::~IpcCommandServer() → QObject::~QObject on m_ipcServer, so logout just triggers a normal shutdown, which then crashes.

Analysis done with Claude Code (disassembly of the release binary plus reading the source); I haven't built or tested the fix.

Source: vicinaehq/vicinae

View original on GitHubView discussion on GitHub