Skip to content

Comments

fix: Update QTWEBENGINE_CHROMIUM_FLAGS for sw_64 build#585

Merged
lzwind merged 1 commit intolinuxdeepin:masterfrom
dengzhongyuan365-dev:master
Jan 20, 2026
Merged

fix: Update QTWEBENGINE_CHROMIUM_FLAGS for sw_64 build#585
lzwind merged 1 commit intolinuxdeepin:masterfrom
dengzhongyuan365-dev:master

Conversation

@dengzhongyuan365-dev
Copy link
Contributor

Change the QTWEBENGINE_CHROMIUM_FLAGS environment variable to use --js-flags=--jitless for sw_64 builds, enhancing performance and compatibility.

Log: Update QTWEBENGINE_CHROMIUM_FLAGS for sw_64 build.

bug: https://pms.uniontech.com/bug-view-347387.html

Change the QTWEBENGINE_CHROMIUM_FLAGS environment variable to use --js-flags=--jitless for sw_64 builds, enhancing performance and compatibility.

Log: Update QTWEBENGINE_CHROMIUM_FLAGS for sw_64 build.

bug: https://pms.uniontech.com/bug-view-347387.html
@deepin-ci-robot
Copy link

deepin pr auto review

这段代码修改涉及在 __sw_64__ 架构(通常指国产申威处理器架构)上运行 Qt 应用程序时的环境变量设置。针对从 --no-sandbox--js-flags=--jitless 的变更,以下是从语法逻辑、代码质量、性能和安全四个维度的详细审查与改进建议:

1. 语法逻辑

  • 审查结果:通过。
  • 分析:代码语法正确,qputenv 函数调用符合 Qt 规范,能够正确设置环境变量。

2. 代码质量

  • 审查结果:通过。
  • 分析:使用了 #ifdef 宏进行条件编译,逻辑清晰,仅在特定架构下生效,不会影响其他平台的代码。

3. 代码性能

  • 审查结果存在潜在风险
  • 分析
    • JITless 模式的影响--jitless 参数会禁用 JavaScript 的即时编译(JIT)功能,转而使用解释器执行 JS 代码。
    • 后果:这将导致 JavaScript 的执行速度显著下降(通常慢 10 倍甚至更多)。如果 dman(看起来是一个文档管理器)加载的文档包含大量复杂的 JavaScript 动画或交互逻辑,用户体验可能会明显变差(卡顿、加载慢)。
    • 改进建议:请确认该架构下的 Chromium/V8 引擎是否支持 JIT。如果只是因为 JIT 导致崩溃而临时禁用,建议优先修复 JIT 支持问题,而不是直接禁用。如果架构本身不支持 JIT,这是无奈之举,但需在文档中注明性能损耗。

4. 代码安全

  • 审查结果显著改进
  • 分析
    • 原代码 (--no-sandbox):这是一个非常危险的参数。它完全禁用了 Chromium 的沙箱机制。沙箱是浏览器安全的核心,用于隔离渲染进程,防止恶意网页代码访问系统文件或执行任意命令。禁用它意味着如果 WebView 加载了恶意页面,攻击者可以直接获得用户权限。
    • 新代码 (--js-flags=--jitless):虽然禁用 JIT 主要是为了安全(JIT 代码往往涉及内存可执行区域,容易成为漏洞利用的目标)和兼容性,但它保留了沙箱机制。相比完全移除沙箱,这是一个巨大的安全提升。
    • 结论:从安全角度来看,这是一个非常积极的改动,牺牲部分性能换取了系统安全性。

综合改进建议

虽然代码本身语法没有问题,但考虑到性能和安全的平衡,建议在提交代码前考虑以下优化:

  1. 性能测试
    在申威机器上对包含复杂 JS 的文档进行测试,确保禁用 JIT 后的性能在可接受范围内。如果性能损耗过大,可能需要寻找替代方案(例如优化文档内容,或寻找特定架构下的 JIT 补丁)。

  2. 代码注释
    建议添加注释说明为什么要设置这个标志,以便后续维护者理解背景。

    改进后的代码示例:

#ifdef __sw_64__
    // 申威架构下 Chromium 引擎可能存在 JIT 兼容性问题或不稳定,
    // 这里启用 jitless 模式以禁用 JIT,确保稳定性并保留沙箱安全机制。
    // 注意:这会降低 JS 执行性能。
    qputenv("QTWEBENGINE_CHROMIUM_FLAGS", "--js-flags=--jitless");
#endif
  1. 宏定义的可维护性
    如果这个参数未来可能会变,或者需要针对不同版本的申威环境做区分,建议将具体的 flag 字符串提取到头文件或配置文件中,而不是硬编码在源码里。

总结:该修改在安全性上是正确的方向,但需要警惕性能回退的风险。建议补充注释并进行充分的性能测试。

@deepin-ci-robot
Copy link

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: dengzhongyuan365-dev, lzwind

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@lzwind lzwind merged commit 6f6b035 into linuxdeepin:master Jan 20, 2026
15 of 17 checks passed
dengzhongyuan365-dev added a commit to dengzhongyuan365-dev/deepin-manual that referenced this pull request Feb 11, 2026
Change the QTWEBENGINE_CHROMIUM_FLAGS environment variable to use --js-flags=--jitless for sw_64 builds, enhancing performance and compatibility.

Log: Update QTWEBENGINE_CHROMIUM_FLAGS for sw_64 build.

bug: https://pms.uniontech.com/bug-view-347387.html
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants