cef/libcef_dll/libcef_dll2.cc
Marshall Greenblatt 07bf5dbacc windows: Configure stack size for executables (fixes issue #3250)
Change the default stack size to 8 MiB for 64-bit and 0.5 MiB for 32-bit.

CEF's main thread needs at least a 1.5 MiB stack size in order to avoid
stack overflow crashes. However, if this is set in the PE file then other
threads get this size as well, leading to address-space exhaustion in 32-bit
CEF. A new CefRunWinMainWithPreferredStackSize function uses fibers to switch
the main thread to a 4 MiB stack (roughly the same effective size as the
64-bit build's 8 MiB stack) before running any other code.

This change additionally moves the existing Windows-only functions
CefSetOSModalLoop and CefEnableHighDPISupport from cef_app.h to cef_win.h.
2022-10-21 14:52:50 -04:00

79 lines
2.1 KiB
C++

// Copyright (c) 2011 The Chromium Embedded Framework Authors. All rights
// reserved. Use of this source code is governed by a BSD-style license that
// can be found in the LICENSE file.
//
#include <cstddef>
#include "include/base/cef_build.h"
#include "include/cef_api_hash.h"
#include "include/cef_version.h"
#if defined(OS_WIN)
#include "include/internal/cef_win.h"
#endif
CEF_EXPORT int cef_version_info(int entry) {
switch (entry) {
case 0:
return CEF_VERSION_MAJOR;
case 1:
return CEF_VERSION_MINOR;
case 2:
return CEF_VERSION_PATCH;
case 3:
return CEF_COMMIT_NUMBER;
case 4:
return CHROME_VERSION_MAJOR;
case 5:
return CHROME_VERSION_MINOR;
case 6:
return CHROME_VERSION_BUILD;
case 7:
return CHROME_VERSION_PATCH;
default:
return 0;
}
}
CEF_EXPORT const char* cef_api_hash(int entry) {
switch (entry) {
case 0:
return CEF_API_HASH_PLATFORM;
case 1:
return CEF_API_HASH_UNIVERSAL;
case 2:
return CEF_COMMIT_HASH;
default:
return NULL;
}
}
#if defined(OS_WIN)
#if defined(ARCH_CPU_32_BITS)
CEF_EXPORT int cef_run_winmain_with_preferred_stack_size(wWinMainPtr wWinMain,
HINSTANCE hInstance,
LPWSTR lpCmdLine,
int nCmdShow) {
return CefRunWinMainWithPreferredStackSize(wWinMain, hInstance, lpCmdLine,
nCmdShow);
}
CEF_EXPORT int cef_run_main_with_preferred_stack_size(mainPtr main,
int argc,
char* argv[]) {
return CefRunMainWithPreferredStackSize(main, argc, argv);
}
#endif // defined(ARCH_CPU_32_BITS)
CEF_EXPORT void cef_enable_highdpi_support() {
CefEnableHighDPISupport();
}
CEF_EXPORT void cef_set_osmodal_loop(int osModalLoop) {
CefSetOSModalLoop(osModalLoop ? true : false);
}
#endif // defined(OS_WIN)