From cd9d0c1b0f63485dcdf1b139d271e05d1c3d05bc Mon Sep 17 00:00:00 2001 From: Ales Pergl Date: Tue, 4 Jul 2017 19:58:02 +0200 Subject: [PATCH 1/3] Enabled true debug mode --- brightray/brightray.gypi | 22 +++++++++++++++++++--- vendor/libchromiumcontent | 2 +- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/brightray/brightray.gypi b/brightray/brightray.gypi index c0dc92b98c16..83406e4c8e0b 100644 --- a/brightray/brightray.gypi +++ b/brightray/brightray.gypi @@ -92,8 +92,6 @@ 'Common_Base': { 'abstract': 1, 'defines': [ - # We are using Release version libchromiumcontent: - 'NDEBUG', # Needed by gin: 'V8_USE_EXTERNAL_STARTUP_DATA', # From skia_for_chromium_defines.gypi: @@ -189,6 +187,7 @@ # Use this instead of "NDEBUG" to determine whether we are in # Debug build, because "NDEBUG" is already used by Chromium. 'DEBUG', + '_DEBUG', # Require when using libchromiumcontent. 'COMPONENT_BUILD', 'GURL_DLL', @@ -198,15 +197,32 @@ ], 'msvs_settings': { 'VCCLCompilerTool': { - 'RuntimeLibrary': '2', # /MD (nondebug DLL) + 'RuntimeLibrary': '3', # /MDd (debug DLL) 'Optimization': '0', # 0 = /Od # See http://msdn.microsoft.com/en-us/library/8wtf2dfz(VS.71).aspx 'BasicRuntimeChecks': '3', # 3 = all checks enabled, 0 = off }, + 'VCLinkerTool': { + 'OptimizeReferences': 2, # /OPT:REF + 'EnableCOMDATFolding': 2, # /OPT:ICF + }, }, + 'conditions': [ + ['OS=="linux"', { + 'defines': [ + '_GLIBCXX_DEBUG', + ], + 'cflags': [ + '-g', + ], + }], # OS=="linux" + ], }, # Debug_Base 'Release_Base': { 'abstract': 1, + 'defines': [ + 'NDEBUG', + ], 'msvs_settings': { 'VCCLCompilerTool': { 'RuntimeLibrary': '2', # /MD (nondebug DLL) diff --git a/vendor/libchromiumcontent b/vendor/libchromiumcontent index 8cfd08f84e41..7a9d4a1c9c26 160000 --- a/vendor/libchromiumcontent +++ b/vendor/libchromiumcontent @@ -1 +1 @@ -Subproject commit 8cfd08f84e415f3c8e5fde061f8e17400ef8aa7f +Subproject commit 7a9d4a1c9c265468dd54005f6c1920b2cc2c8ec3 From bdbf9e5d6afb6675b0371c50fa42180483f70909 Mon Sep 17 00:00:00 2001 From: Ales Pergl Date: Mon, 17 Jul 2017 14:01:21 +0200 Subject: [PATCH 2/3] Suppress assert dialog boxes when running CI tests --- atom/app/atom_main.cc | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/atom/app/atom_main.cc b/atom/app/atom_main.cc index 9c255db5fb27..76a62399d6ea 100644 --- a/atom/app/atom_main.cc +++ b/atom/app/atom_main.cc @@ -34,7 +34,7 @@ namespace { -const char* kRunAsNode = "ELECTRON_RUN_AS_NODE"; +const auto kRunAsNode = "ELECTRON_RUN_AS_NODE"; bool IsEnvSet(const char* name) { #if defined(OS_WIN) @@ -56,6 +56,30 @@ int APIENTRY wWinMain(HINSTANCE instance, HINSTANCE, wchar_t* cmd, int) { bool run_as_node = IsEnvSet(kRunAsNode); +#ifdef _DEBUG + // Don't display assert dialog boxes in CI test runs + static const auto kCI = "ELECTRON_CI"; + bool is_ci = IsEnvSet(kCI); + if (!is_ci) { + for (int i = 0; i < argc; ++i) { + if (!_wcsicmp(wargv[i], L"--ci")) { + is_ci = true; + _putenv_s(kCI, "1"); // set flag for child processes + break; + } + } + } + if (is_ci) { + _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_DEBUG | _CRTDBG_MODE_FILE); + _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR); + + _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_DEBUG | _CRTDBG_MODE_FILE); + _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR); + + _set_error_mode(_OUT_TO_STDERR); + } +#endif + // Make sure the output is printed to console. if (run_as_node || !IsEnvSet("ELECTRON_NO_ATTACH_CONSOLE")) base::RouteStdioToConsole(false); From 8e34aad410a6a9141a65a75da85781dd3f987b71 Mon Sep 17 00:00:00 2001 From: Ales Pergl Date: Wed, 19 Jul 2017 14:56:55 +0200 Subject: [PATCH 3/3] Fixed invalid empty vector subscript access --- atom/renderer/atom_sandboxed_renderer_client.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/atom/renderer/atom_sandboxed_renderer_client.cc b/atom/renderer/atom_sandboxed_renderer_client.cc index aa4780fa15b8..223cc4792e1a 100644 --- a/atom/renderer/atom_sandboxed_renderer_client.cc +++ b/atom/renderer/atom_sandboxed_renderer_client.cc @@ -216,7 +216,7 @@ void AtomSandboxedRendererClient::InvokeIpcCallback( auto callback_value = binding->Get(callback_key); DCHECK(callback_value->IsFunction()); // set by sandboxed_renderer/init.js auto callback = v8::Handle::Cast(callback_value); - ignore_result(callback->Call(context, binding, args.size(), &args[0])); + ignore_result(callback->Call(context, binding, args.size(), args.data())); } } // namespace atom