Chromium-browser 在 module_list.cc 中构建致命错误:检查失败

Posted

技术标签:

【中文标题】Chromium-browser 在 module_list.cc 中构建致命错误:检查失败【英文标题】:Chromium-browser build fatal errors in module_list.cc: Check Failed 【发布时间】:2016-07-28 11:51:45 【问题描述】:

我一直在尝试在 Windows 10 上构建 chromium,但我在运行时遇到了奇怪的错误,这似乎是由该模式引起的:

void CheckFreeLibrary(HMODULE module) 
  BOOL result = ::FreeLibrary(module);
  DCHECK(result);

第一个错误会在 Chromium 启动几秒钟后显示。它是这样说的:

[5904:9192:0726/025753:FATAL:module_list.cc(18)] Check failed: result.
Backtrace:
    base:debug:StackTrace:StackTrace [0x0000....] (e:\projects\clones\chromium\src\base\debug\stack_trace.cc) ...

由于我无法复制粘贴整个堆栈,因此我将加入一张截图来说明这一切的感觉:

我成功构建了最后一个修订版,或者至少,它似乎是成功的,因为使用Building instructions 中推荐的工具链进行编译时没有出现任何错误。

幸运的是,第一个错误不是模态的,之后可以浏览一下。然后,如果我将应用程序置于重载状态(例如 Facebook 新闻源),它会突然停止以静默方式响应。鼠标悬停效果将不再显示,重新加载页面将导致无限加载。当右键单击某些页面时,此行为也可以重现(例如:google 的主页有时会这样做)。

对于默认配置无法“开箱即用”的这种情况的解释是什么?如何解决这个问题?

P.S.:这个问题是对这个问题的补充: Windows chromium-browser fresh build stacktrace and anonymous fatal errors on runtime,如果它有助于了解问题的大局。

P.S.2.:我目前正在尝试重新从头开始重建,以查看是否效果更好。不过,大约 10 小时后我就能看到它了(是的,在我当前的设置下,构建过程很痛苦)。

void CheckFreeLibrary(HMODULE module) 
  BOOL result = ::FreeLibrary(module);
  if (!result) 
      result = ::UnmapViewOfFile(module);
  
  DCHECK(result);

更新 - 2016/07/29

使用 CheckFreeLibrary 进行测试在调试中仍然失败,但我终于找到了解决构建问题的方法。请参阅超级用户 question 中的更新 3。我所做的是通过gn args 将构建配置为发布模式。显然,这几乎不可能进行调试,因此尚未找到解决方案/解释为什么它在调试模式下失败。不过现在已经很接近了。

更新 2 - 2016/08/13

重新开始,再次在存储库中使用最新版本的调试版本,这一次我确信找到了一些东西。事实上,在我运行了更新、生成和构建的常规过程之后,我注意到位于 Windows Kit 调试器中的一些 win-core-* DLL 库没有被复制到 src 文件夹中,但其中一个被假定为在链接过程中。作为预防措施,我只是将它们全部复制以确保存在任何延迟加载或构建依赖项。铬第一次启动时,错误没有出现,并认为它正在解决问题。但是,右键单击 Google 主页具有相同的效果(没有响应,然后浏览器不再显示页面)。关闭并重新打开后,开始出现错误。

有人经历过吗?我会对“在 linux 上做,它在这个平台上效果更好”之类的东西感到非常满意。不过,我不愿意在不知道它会更好地工作的情况下这样做。

【问题讨论】:

【参考方案1】:

所以

BOOL result = ::FreeLibrary(module);

在调试版本中失败,看看你是否有一个

DWORD WINAPI GetLastError(void);

得到真正的错误。

我猜到了

模块未加载

模块为空

也许某些 DEBUG 语句正在改变模块的值?

【讨论】:

以上是关于Chromium-browser 在 module_list.cc 中构建致命错误:检查失败的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu16.04查看软件的安装位置

莫凡_linux

对铬的业力测试

centos 7 (软件应用)-chromium

为Chromium浏览器启用Flash支持

如何在 OSX 中替换 Chromium 的 V8 库?