web search报错

都查全了,给你整理好了:


## 问题
Alma Desktop (Electron app, v0.0.833) 的 WebSearch 功能报 "Object has been destroyed"
环境:macOS 26.3 (Darwin 25.3.0, arm64), Apple Silicon M4

## 现象
- 调用 WebSearch 或 WebFetch 工具时抛 "Object has been destroyed"
- 不是 Alma 代码抛的,是 Electron 自身的 BrowserWindow 报错
- 搜索前后 Alma Helper (Renderer) 进程数不变(保持9个),说明新的 renderer 进程根本没创建成功
- 无新的 crash report 产生(之前设了 OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES 后不再有 fork crash)
- ChromeRelay(直接用用户真实 Chrome 浏览器)正常工作

## 之前的历史
- 最初 crash report 显示 "crashed on child side of fork pre-exec" + "*** multi-threaded process forked ***"
- 设 OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES 后不再 crash,但搜索仍失败——fork 问题绕过了,但 renderer 进程仍然起不来
- 尝试 --disable-gpu + --disable-software-rasterizer,无变化
- 回滚到旧版 Alma 0.0.825,问题一样——排除版本回归

## 核心代码逻辑
WebSearch 的搜索流程:
1. Cw() 创建隐藏的 BrowserWindow(x:-99999, y:-99999, opacity:0, show:false)
2. Mw() 用这个窗口 loadURL("https://www.google.com/") → 模拟输入搜索词 → form.submit() → 等 h3 出现 → 抓取结果
3. WebFetch 也是同样的 BrowserWindow 方案,只是改为 fetch URL

Cw 函数关键代码:

Cw=async(e=!0)=>{ const t=u.defaultSession, // ← 用的是默认session,非隔离session n=new r({width:1280, height:800, x:-99999, y:-99999, opacity:0, show:!1, title:"Web Search", webPreferences:{nodeIntegration:!1, contextIsolation:!0, session:t} }); return await yr(t), wr(n.webContents), // ← wr() 是更新webRequest handler t.webRequest.onBeforeSendHeaders({urls:[":///*"]}, (e,t)=>{ t({requestHeaders:{...e.requestHeaders, "User-Agent":bw}}) }), n.webContents.on("did-start-navigation", ()=>{ n.isDestroyed()||n.webContents.executeJavaScript( // 隐藏 webdriver 属性 + 添加 chrome 对象 + override permissions query ) }), n.setIgnoreMouseEvents(!0), e&&n.showInactive(), n }


## Chromium 启动参数(Alma Helper Renderer)
--enable-sandbox --seatbelt-client=XX

## 已尝试的修复
1. ❌ OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES(绕过了 fork crash,但 renderer 仍不启动)
2. ❌ --disable-gpu --disable-software-rasterizer
3. ❌ 回滚到 0.0.825(同样问题)
4. ❌ proxy.enabled = false

## 需要帮助
在 macOS 26.3 上,Electron 的 BrowserWindow 创建的 renderer 子进程启动失败,导致窗口被标记为 destroyed。可能的原因是什么?需要给 Electron 加什么启动参数或环境变量来绕过这个限制?

Please authenticate to join the conversation.

Upvoters
Status

In Review

Board
🐛

Bug Reports

Date

2 days ago

Author

KC P

Subscribe to post

Get notified by email when there are changes.