简体   繁体   English

谷歌浏览器崩溃内存泄漏或任何渲染问题

[英]Google Chrome Crashes Memory leak or Any rendering issue

We have a SPA running on Chrome Browser.我们有一个 SPA 在 Chrome 浏览器上运行。 It is Crashing intermittently after using the application for some time.使用该应用程序一段时间后,它会间歇性地崩溃。 I am getting the Aw Snap error Page.我收到了 Aw Snap 错误页面。

在此处输入图片说明

I enabled the logs in the Chrome and found out following information in the log files.我在 Chrome 中启用了日志,并在日志文件中发现了以下信息。 Additionally, Google Chrome doesn't generate a Dump file even after enabling the Dump file setting in Chrome.此外,即使在 Chrome 中启用转储文件设置后,Google Chrome 也不会生成转储文件。

Error Message in Chrome Logs Chrome 日志中的错误消息

[0226/100630:INFO:SkScalerContext.cpp(170)] --- no context for glyph 6f
[0226/100630:INFO:SkScalerContext.cpp(170)] --- no context for glyph b3
[0226/100630:INFO:SkScalerContext.cpp(170)] --- no context for glyph 11b
[0226/100630:INFO:SkScalerContext.cpp(170)] --- no context for glyph bf
[0226/100630:INFO:SkScalerContext.cpp(170)] --- no context for glyph 48
[0226/100630:INFO:SkScalerContext.cpp(170)] --- no context for glyph 46
[0226/100630:INFO:SkScalerContext.cpp(170)] --- no context for glyph 23
[0226/100630:INFO:SkCanvas.cpp(747)] Unable to create device for layer.
[0226/100630:INFO:SkCanvas.cpp(747)] Unable to create device for layer.
[0226/100630:INFO:SkCanvas.cpp(747)] Unable to create device for layer.

Can anyone give some pointers as to what the error message "Unable to create device for layer."任何人都可以就错误消息“无法为层创建设备”提供一些指示 and "no context for glyph" means and what can be the possible reasons for this error message?“没有字形的上下文”是什么意思,这条错误消息的可能原因是什么?

Since the crash happens after using the application for some time, i am suspecting a memory leak.由于崩溃发生在使用应用程序一段时间后,我怀疑内存泄漏。 Is it possible that the error is happening because of memory leak?是否可能由于内存泄漏而发生错误?

EDIT 1:编辑 1:

There seems to be memory leak as the Javascript Memory is increasing.随着 Javascript 内存的增加,似乎存在内存泄漏。 Also, the Heap Allocation shows the increasing memory which is not getting Cleared.此外,堆分配显示增加的内存没有被清除。 However, the SPA itself is little complex and having a lot of Objects and i will analyze what Objects are Preventing other Objects from GC.但是,SPA 本身并不复杂,并且有很多对象,我将分析哪些对象正在阻止其他对象进行 GC。

Additionally, the Chrome creates a 0Kb dump file in the CrashReports folder.此外,Chrome 还会在 CrashReports 文件夹中创建一个0Kb转储文件。

Moreover, i took a process dump and analyzed using windbg .此外,我进行了进程转储并使用windbg进行了分析。 Following is the output from !analyze-v command.以下是 !analyze-v 命令的输出。 I am analyzing the memory dumps and from the windbg it seems that an access violation exception is raised and it seems that no memory is available for allocating the Bitmap.我正在分析内存转储,从windbg 看来,似乎引发了访问冲突异常,并且似乎没有内存可用于分配位图。 Does this dump information point to any other useful information as well?此转储信息是否也指向任何其他有用信息?

FAULTING_IP: 
chrome_1490000!skia::CrashForBitmapAllocationFailure+70 [c:\b\build\slave\chrome-official\build\src\skia\ext\platform_canvas_win.cc @ 46]
01956d67 mov     dword ptr ds:[3],0

EXCEPTION_RECORD:  ffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 01956d67 (chrome_1490000!skia::CrashForBitmapAllocationFailure+0x00000070)
   ExceptionCode: c0000005 (Access violation)
  ExceptionFlags: 00000000
NumberParameters: 2
   Parameter[0]: 00000001
   Parameter[1]: 00000003
Attempt to write to address 00000003

PROCESS_NAME:  chrome.exe

ERROR_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%08lx referenced memory at 0x%08lx. The memory could not be %s.

EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%08lx referenced memory at 0x%08lx. The memory could not be %s.

EXCEPTION_PARAMETER1:  00000001

EXCEPTION_PARAMETER2:  00000003

WRITE_ADDRESS:  00000003 

FOLLOWUP_IP: 
chrome_1490000!skia::CrashForBitmapAllocationFailure+70 [c:\b\build\slave\chrome-official\build\src\skia\ext\platform_canvas_win.cc @ 46]
01956d67 mov     dword ptr ds:[3],0

MOD_LIST: <ANALYSIS/>

NTGLOBALFLAG:  0

APPLICATION_VERIFIER_FLAGS:  0

FAULTING_THREAD:  00002fac

BUGCHECK_STR:  APPLICATION_FAULT_NULL_CLASS_PTR_DEREFERENCE_INVALID_POINTER_WRITE

PRIMARY_PROBLEM_CLASS:  NULL_CLASS_PTR_DEREFERENCE

DEFAULT_BUCKET_ID:  NULL_CLASS_PTR_DEREFERENCE

LAST_CONTROL_TRANSFER:  from 014ef4ed to 01956d67

STACK_TEXT:  
003deb9c 014ef4ed 000004cc 000000d6 00000057 chrome_1490000!skia::CrashForBitmapAllocationFailure+0x70 [c:\b\build\slave\chrome-official\build\src\skia\ext\platform_canvas_win.cc @ 46]
003debc0 0160893b 000004cc 000000d6 00000001 chrome_1490000!skia::PlatformCanvas::initialize+0x97 [c:\b\build\slave\chrome-official\build\src\skia\ext\platform_canvas_win.cc @ 107]
003debe4 016086ef 000004cc 000000d6 003ded54 chrome_1490000!TransportDIB::GetPlatformCanvas+0x3f [c:\b\build\slave\chrome-official\build\src\ui\gfx\surface\transport_dib_win.cc @ 74]
003dec04 0160696b 035f4774 000000d6 003dedd8 chrome_1490000!RenderProcessImpl::GetDrawingCanvas+0x4d [c:\b\build\slave\chrome-official\build\src\content\renderer\render_process_impl.cc @ 169]
003ded80 01606488 035f4700 017ec98a 003def0c chrome_1490000!RenderWidget::DoDeferredUpdate+0x49b [c:\b\build\slave\chrome-official\build\src\content\renderer\render_widget.cc @ 843]
003ded88 017ec98a 003def0c 035f4700 03606ab8 chrome_1490000!RenderWidget::DoDeferredUpdateAndSendInputAck+0x8 [c:\b\build\slave\chrome-official\build\src\content\renderer\render_widget.cc @ 731]
003dedb4 017ec725 015d826f 1d660a04 035f4700 chrome_1490000!RenderWidget::OnUpdateRectAck+0xe1 [c:\b\build\slave\chrome-official\build\src\content\renderer\render_widget.cc @ 383]
003dedb8 015d826f 1d660a04 035f4700 035f4700 chrome_1490000!IPC::Message::Dispatch<RenderWidget,RenderWidget>+0x1a [c:\b\build\slave\chrome-official\build\src\ipc\ipc_message.h @ 138]
003def0c 015c10c8 1d660a04 1d660a04 1d660a04 chrome_1490000!RenderWidget::OnMessageReceived+0xb0 [c:\b\build\slave\chrome-official\build\src\content\renderer\render_widget.cc @ 201]
003df420 0154d34f 1d660a04 03613d84 0154d329 chrome_1490000!RenderViewImpl::OnMessageReceived+0x1381 [c:\b\build\slave\chrome-official\build\src\content\renderer\render_view_impl.cc @ 764]
003df42c 0154d329 1d660a04 0150aed5 1d660a04 chrome_1490000!MessageRouter::RouteMessage+0x23 [c:\b\build\slave\chrome-official\build\src\content\common\message_router.cc @ 47]
003df434 0150aed5 1d660a04 003df510 00000000 chrome_1490000!MessageRouter::OnMessageReceived+0x1b [c:\b\build\slave\chrome-official\build\src\content\common\message_router.cc @ 39]
003df490 014c39f0 1d660a04 00000002 014c0c8a chrome_1490000!ChildThread::OnMessageReceived+0x178 [c:\b\build\slave\chrome-official\build\src\content\common\child_thread.cc @ 201]
003df49c 014c0c8a 1d6609f0 00000000 1d6609f4 chrome_1490000!base::internal::Invoker<2,base::internal::BindState<base::internal::RunnableAdapter<void (__thiscall quota::QuotaManagerProxy::*)(GURL const &)>,void __cdecl(quota::QuotaManagerProxy *,GURL const &),void __cdecl(quota::QuotaManagerProxy *,GURL)>,void __cdecl(quota::QuotaManagerProxy *,GURL const &)>::Run+0x16 [c:\b\build\slave\chrome-official\build\src\base\bind_internal.h @ 1254]
003df4e8 014c0962 003df748 003df510 003df748 chrome_1490000!MessageLoop::RunTask+0x21e [c:\b\build\slave\chrome-official\build\src\base\message_loop.cc @ 460]
003df758 01493ffd 0a805c60 00000051 00000004 chrome_1490000!MessageLoop::DoWork+0x2d1 [c:\b\build\slave\chrome-official\build\src\base\message_loop.cc @ 661]
003df860 014a5d87 035f0780 035f0788 035f0788 chrome_1490000!tcmalloc::ThreadCache::Deallocate+0x2c [c:\b\build\slave\chrome-official\build\src\third_party\tcmalloc\chromium\src\thread_cache.h @ 346]
003df930 014a86c6 00000014 0000001f 03613d84 chrome_1490000!std::_Allocate<unsigned short>+0x71 [c:\program files (x86)\microsoft visual studio 9.0\vc\include\xmemory @ 44]
003df98c 014b03f0 00000000 00000008 00000000 chrome_1490000!std::basic_string<char,std::char_traits<char>,std::allocator<char> >::compare+0x4b [c:\program files (x86)\microsoft visual studio 9.0\vc\include\xstring @ 2051]
003df9a8 014b1fe4 003dfa20 003dfab0 00000000 chrome_1490000!std::basic_string<char,std::char_traits<char>,std::allocator<char> >::compare+0x26 [c:\program files (x86)\microsoft visual studio 9.0\vc\include\xstring @ 2027]
003df9bc 014a54b4 003dfa78 003dfa20 003dfab0 chrome_1490000!`anonymous namespace'::RunNamedProcessTypeMain+0x42 [c:\b\build\slave\chrome-official\build\src\content\app\content_main.cc @ 264]
003dfa98 014a5244 01360000 003dfb98 003dfab0 chrome_1490000!content::ContentMain+0x224 [c:\b\build\slave\chrome-official\build\src\content\app\content_main.cc @ 457]
003dfacc 01385239 01360000 003dfb98 003dfba0 chrome_1490000!ChromeMain+0x1e [c:\b\build\slave\chrome-official\build\src\chrome\app\chrome_main.cc @ 28]
003dfb44 0138471d 01360000 003dfb98 fffffffe chrome!MainDllLoader::Launch+0xf1 [c:\b\build\slave\chrome-official\build\src\chrome\app\client_util.cc @ 343]
003dfba4 013a33ff 01360000 00000000 005e2fa4 chrome!wWinMain+0x60 [c:\b\build\slave\chrome-official\build\src\chrome\app\chrome_exe_main_win.cc @ 37]
003dfc34 76fb343d 7efde000 003dfc80 777f9832 chrome!__tmainCRTStartup+0x112 [f:\dd\vctools\crt_bld\self_x86\crt\src\crt0.c @ 263]
003dfc40 777f9832 7efde000 77d58cd7 00000000 kernel32!BaseThreadInitThunk+0xe
003dfc80 777f9805 013a346a 7efde000 00000000 ntdll!__RtlUserThreadStart+0x70
003dfc98 00000000 013a346a 7efde000 00000000 ntdll!_RtlUserThreadStart+0x1b


STACK_COMMAND:  ~0s; .ecxr ; kb

FAULTING_SOURCE_CODE:  
No source found for 'c:\b\build\slave\chrome-official\build\src\skia\ext\platform_canvas_win.cc'


SYMBOL_STACK_INDEX:  0

SYMBOL_NAME:  chrome!skia::CrashForBitmapAllocationFailure+70

FOLLOWUP_NAME:  MachineOwner

MODULE_NAME: chrome_1490000

IMAGE_NAME:  chrome.dll

DEBUG_FLR_IMAGE_TIMESTAMP:  4f331615

FAILURE_BUCKET_ID:  NULL_CLASS_PTR_DEREFERENCE_c0000005_chrome.dll!skia::CrashForBitmapAllocationFailure

BUCKET_ID:  APPLICATION_FAULT_NULL_CLASS_PTR_DEREFERENCE_INVALID_POINTER_WRITE_chrome!skia::CrashForBitmapAllocationFailure+70

WATSON_STAGEONE_URL:  http://watson.microsoft.com/StageOne/chrome_exe/18_0_1025_11/4f331682/chrome_dll/18_0_1025_11/4f331615/c0000005/004c6d67.htm?Retriage=1

Followup: MachineOwner
---------

Note: This error in not coming in the latest Chrome & Canary Build.注意:此错误不会出现在最新的 Chrome 和 Canary Build 中。 We are getting this error on the Older version of Chrome (32 bit).我们在旧版 Chrome(32 位)上收到此错误。

The messages you see in the log file are probably unrelated and not serious, considering that they say INFO at the beginning.您在日志文件中看到的消息可能无关且不严重,考虑到它们在开头说的是INFO

A memory leak could absolutely be what's causing the tab crashes.内存泄漏绝对是导致选项卡崩溃的原因。 As a quick test, you can open Chrome's process manager and check if memory consumption of the tab in question grows over time.作为快速测试,您可以打开 Chrome 的进程管理器并检查相关选项卡的内存消耗是否随着时间的推移而增长。

Once you have confirmed the suspicion that there is a memory leak, the DevTools are your best friend for figuring out what's going on.一旦您确认怀疑存在内存泄漏,DevTools 就是您找出发生了什么的最好的朋友。 Two approaches that are often useful are:通常有用的两种方法是:

  1. Take a heap snapshot, perform some sequence of operations where afterwards memory consumption should be the same as it was before you started (ie navigate somewhere and back, or the like), take a second heap snapshot, and use the comparison tool to compare them.拍摄堆快照,执行一些操作序列,之后内存消耗应与开始之前相同(即导航某处并返回等),拍摄第二个堆快照,并使用比较工具进行比较. Anything that's in the second snapshot but not in the first could point you towards the leak.在第二个快照中但不在第一个快照中的任何内容都可能指向泄漏。

  2. Use the "allocation timeline" feature.使用“分配时间线”功能。 It indicates when objects are allocated, and which of them are still around.它指示分配对象的时间,以及它们中的哪些仍然存在。

If you believe that the leak is in Chrome rather than your own app, please file a bug at crbug.com/new and include instructions on how to reproduce the problem.如果您认为泄漏是在 Chrome 中而不是您自己的应用程序中,请在crbug.com/new 上提交错误并包含有关如何重现问题的说明。 If you post the bug number here, I can make sure it gets looked at.如果你在这里发布错误号,我可以确保它被查看。 A quick test to determine whether the cause is likely your own app or the browser is to run it in another browser and see if you observe the same crash (and/or increase in memory consumption) there.快速测试以确定原因是否可能是您自己的应用程序或浏览器是在另一个浏览器中运行它,并查看您是否在那里观察到相同的崩溃(和/或内存消耗增加)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM