我在C#项目中将cef.redist.x86.3.3497.1840与CefSharp一起使用。我有一组可以播放mp3音频的HTML页面,并且它们在Chrome中可以正常运行,但是当我尝试使用CEF / CefSharp加载它们时,视觉效果还可以,但是CEF / CefSharp给了我消息
"Uncaught RangeError: Maximum call stack size exceeded"
。
即使我可以加载单个.mp3文件并使用CEF提供的HTML5 gizmo播放它们,也要在我甚至尝试播放音频之前发生这种情况(在这种情况下BTW将不会播放)。
我从来没有暗示过在Chrome上使用这些页面会出现问题。
CEF / CefSharp堆栈是怎么回事?
我能以某种方式告诉它使用更大的堆栈吗?
我需要自己用更大的堆栈重建它吗?
CefSharp.MinimalExample.WinForms的64位版本和调试版本都会产生相同的堆栈溢出消息。
答案 0 :(得分:0)
我确实使用以下网站复制了x86和x64版本:
https://pass.carrefour.es/zona-cliente
https://online.bankofcyprus.com/netteller-web/
和基于C ++ CEF的项目。 (我当时认为是CEF分支3282-Chrome v60)。
如果我没记错的话,cefclient也转载了此内容。
这个问题确实是由很大的javascript代码最终触发后触发的。
我所做的是增加.vcxproj中的堆栈大小:
<StackReserveSize>0x00120000</StackReserveSize>
(因此,将128 KB额外增加到默认的1 MB)。
NodeJS的--v8-选项--stack_size听起来很相似,但我不知道CEF中是否有类似的东西(至少我不记得要直接公开)。
我当时对修复的评论是:
Increase stack size from the default 1MB adding 128 KB more.
This seems to be necessary for renderer's V8, which is trashing
the page guard instead of raising JS RangeError or stack overflow,
but blows up with STATUS_GUARD_PAGE_VIOLATION or STATUS_STACK_OVERFLOW *and*
overwriting the first frame.
The debugger itself is defeated since there is no context to determine which
10000+ lines JS blows up the parser.
我不确定V8为什么以这种方式工作(我可能是完全错误的,因为它是针对多个支持问题的关键修复程序,我只是使用了反复试验的方法,而不是进行彻底的调试)。
为方便起见,以下是报告的错误(已编辑):
[*edited*] webpage crashes if you access https://pass.carrefour.es/zona-cliente
We have internal repro 100%.
和
If you access the webpage https://online.bankofcyprus.com/netteller-web/ in [*edited*], the tab crashes unexpectedly:
"The webpage has quit unexpectedly. The problem may have been caused by an exception, or another exceptional condition such as blocking scripts or requests generated by the webpage.
Please Reload page or go Back to the previous page."
We have internal repro. Full dump can be found here: *edited*
可能与之相关的问题:
V8
https://bugs.chromium.org/p/v8/issues/detail?id=8234
https://bugs.chromium.org/p/v8/issues/detail?id=8053
https://bugs.chromium.org/p/v8/issues/detail?id=6617
https://bugs.chromium.org/p/v8/issues/detail?id=6438
铬:
https://bugs.chromium.org/p/chromium/issues/detail?id=753705