Looks like non-official builds of Chromium will do in process stack printing on windows per below code for version 3.2526.1362.
This explains why breakpad's Out of Process dumping mechanism didn't work. With the line 203 commented, things work fine in cefclient for me in x64 and x86. Can anyone else facing similar issues confirm this ?
This finding also partially explains
https://groups.google.com/a/chromium.org/forum/#!msg/chromium-dev/tJ48PfabcC8/EPqIOqa60bEJ which I was observing till now as well. Not sure if this should be patched in CEF/fixed in Chromium.
However, i have noticed that in a case where render process went Out of memory, dump wasn't generated.
- Code: Select all
//line 203 of content_main_runner.cc
#if !defined(OFFICIAL_BUILD)
// Print stack traces to stderr when crashes occur. This opens up security
// holes so it should never be enabled for official builds.
base::debug::EnableInProcessStackDumping();
#if defined(OS_WIN)
base::RouteStdioToConsole(false);
LoadLibraryA("dbghelp.dll");
#endif
#endif
// Stack_trace_win.cc line 192
bool EnableInProcessStackDumping() {
// Add stack dumping support on exception on windows. Similar to OS_POSIX
// signal() handling in process_util_posix.cc.
g_previous_filter = SetUnhandledExceptionFilter(&StackDumpExceptionFilter);
// Need to initialize symbols early in the process or else this fails on
// swarming (since symbols are in different directory than in the exes) and
// also release x64.
return InitializeSymbols();
}
// Stack_trace_win.cc line 34
// Prints the exception call stack.
// This is the unit tests exception filter.
long WINAPI StackDumpExceptionFilter(EXCEPTION_POINTERS* info) {
debug::StackTrace(info).Print();
if (g_previous_filter)
return g_previous_filter(info);
return EXCEPTION_CONTINUE_SEARCH;
}