Fre*_*k.L 5 c++ browser windows chromium windows-10
我一直在尝试在 Windows 10 上构建 chromium,但在运行时遇到奇怪的错误,这似乎是由该模式引起的:
void CheckFreeLibrary(HMODULE module) {
BOOL result = ::FreeLibrary(module);
DCHECK(result);
}
Run Code Online (Sandbox Code Playgroud)
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) ...
Run Code Online (Sandbox Code Playgroud)
由于我无法复制粘贴整个堆栈,因此我将添加一个屏幕截图来说明这一切的感觉:

我成功构建了最后一个版本,或者至少看起来是成功的,因为使用构建说明中推荐的工具链进行编译时没有出现错误。
幸运的是,第一个错误不是模态的,之后可以浏览一下。然后,如果我将应用程序置于重负载状态(例如 Facebook 新闻源),它会突然以无声的方式停止响应。鼠标悬停效果将不再显示,重新加载页面将导致无限加载。当右键单击某些页面时,这种行为也可以重现(例如:谷歌的主页有时会这样做)。
对于默认配置无法“开箱即用”的解释是什么?如何解决这个问题?
PS:这个问题是对这个问题的补充: Windows chromium-browser fresh build stacktrace andonymous fatalErrors on runtime,如果它可以帮助了解问题的整体情况。
PS2.:我目前正在尝试从头开始重建,并进行这个微小的更改,看看效果是否更好。不过,大约 10 小时后我就能看到它(是的,在我当前的设置下构建是很痛苦的)。
void CheckFreeLibrary(HMODULE module) {
BOOL result = ::FreeLibrary(module);
if (!result) {
result = ::UnmapViewOfFile(module);
}
DCHECK(result);
}
Run Code Online (Sandbox Code Playgroud)
更新 - 2016/07/29
使用 CheckFreeLibrary 进行测试在调试中仍然失败,但我终于找到了解决构建中问题的方法。请参阅超级用户问题中的更新 3 。我所做的是将构建配置为发布模式通过gn args. 显然,这几乎不可能进行调试,因此尚未找到有关其在调试模式下失败的原因的解决方案/解释。不过,现在已经很接近了。
更新2 - 2016/08/13
重新开始,使用存储库中的最新版本再次获得调试版本,这一次我确信找到了一些东西。事实上,在我运行完通常的更新、生成和构建过程后,我注意到win-core-*位于 Windows Kit 调试器中的一些 DLL 库没有被复制到src文件夹中,但其中一个库被认为在链接过程中存在。作为预防措施,我只是将它们全部复制以确保存在任何延迟加载或构建依赖项。第一次启动 chromium 时,错误没有出现,并认为它已经解决了问题。然而,右键单击 Google 主页也有同样的效果(没有响应,然后浏览器不再显示页面)。关闭并重新打开它后,错误开始出现。
有没有人有过这样的经历?我会对“在 Linux 上做,在这个平台上工作得更好”之类的事情感到非常高兴。不过,在不知道效果会更好的情况下,我不愿意这样做。
所以
BOOL result = ::FreeLibrary(module);
Run Code Online (Sandbox Code Playgroud)
调试版本失败看看你是否有
DWORD WINAPI GetLastError(void);
Run Code Online (Sandbox Code Playgroud)
得到真正的错误。
我能猜到
模块未加载
模块为 NULL
也许某些 DEBUG 语句正在更改模块的值?
| 归档时间: |
|
| 查看次数: |
405 次 |
| 最近记录: |