Skip to content

Commit da1913c

Browse files
oliverchangaddaleax
authored andcommitted
deps: cherry-pick 3f4536894ac from V8 upstream
Original commit message: d8: Make in process stack dumping optional Adds a flag (--disable-in-process-stack-traces) to not install signal handlers so that e.g. ASan signal handlers will work. This flag mirrors chromium's one. [email protected] BUG=chromium:716235 Review-Url: https://codereview.chromium.org/2854173002 Cr-Commit-Position: refs/heads/master@{#45142} PR-URL: #13985 Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent da93046 commit da1913c

File tree

4 files changed

+24
-6
lines changed

4 files changed

+24
-6
lines changed

deps/v8/include/libplatform/libplatform.h

+4-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ namespace v8 {
1313
namespace platform {
1414

1515
enum class IdleTaskSupport { kDisabled, kEnabled };
16+
enum class InProcessStackDumping { kDisabled, kEnabled };
1617

1718
/**
1819
* Returns a new instance of the default v8::Platform implementation.
@@ -27,7 +28,9 @@ enum class IdleTaskSupport { kDisabled, kEnabled };
2728
*/
2829
V8_PLATFORM_EXPORT v8::Platform* CreateDefaultPlatform(
2930
int thread_pool_size = 0,
30-
IdleTaskSupport idle_task_support = IdleTaskSupport::kDisabled);
31+
IdleTaskSupport idle_task_support = IdleTaskSupport::kDisabled,
32+
InProcessStackDumping in_process_stack_dumping =
33+
InProcessStackDumping::kEnabled);
3134

3235
/**
3336
* Pumps the message loop for the given isolate.

deps/v8/src/d8.cc

+11-1
Original file line numberDiff line numberDiff line change
@@ -2575,6 +2575,9 @@ bool Shell::SetOptions(int argc, char* argv[]) {
25752575
} else if (strncmp(argv[i], "--lcov=", 7) == 0) {
25762576
options.lcov_file = argv[i] + 7;
25772577
argv[i] = NULL;
2578+
} else if (strcmp(argv[i], "--disable-in-process-stack-traces") == 0) {
2579+
options.disable_in_process_stack_traces = true;
2580+
argv[i] = NULL;
25782581
}
25792582
}
25802583

@@ -2998,10 +3001,17 @@ int Shell::Main(int argc, char* argv[]) {
29983001
#endif // defined(_WIN32) || defined(_WIN64)
29993002
if (!SetOptions(argc, argv)) return 1;
30003003
v8::V8::InitializeICUDefaultLocation(argv[0], options.icu_data_file);
3004+
3005+
v8::platform::InProcessStackDumping in_process_stack_dumping =
3006+
options.disable_in_process_stack_traces
3007+
? v8::platform::InProcessStackDumping::kDisabled
3008+
: v8::platform::InProcessStackDumping::kEnabled;
3009+
30013010
g_platform = i::FLAG_verify_predictable
30023011
? new PredictablePlatform()
30033012
: v8::platform::CreateDefaultPlatform(
3004-
0, v8::platform::IdleTaskSupport::kEnabled);
3013+
0, v8::platform::IdleTaskSupport::kEnabled,
3014+
in_process_stack_dumping);
30053015

30063016
platform::tracing::TracingController* tracing_controller;
30073017
if (options.trace_enabled) {

deps/v8/src/d8.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,8 @@ class ShellOptions {
304304
snapshot_blob(NULL),
305305
trace_enabled(false),
306306
trace_config(NULL),
307-
lcov_file(NULL) {}
307+
lcov_file(NULL),
308+
disable_in_process_stack_traces(false) {}
308309

309310
~ShellOptions() {
310311
delete[] isolate_sources;
@@ -336,6 +337,7 @@ class ShellOptions {
336337
bool trace_enabled;
337338
const char* trace_config;
338339
const char* lcov_file;
340+
bool disable_in_process_stack_traces;
339341
};
340342

341343
class Shell : public i::AllStatic {

deps/v8/src/libplatform/default-platform.cc

+6-3
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,12 @@ void PrintStackTrace() {
2929

3030
} // namespace
3131

32-
v8::Platform* CreateDefaultPlatform(int thread_pool_size,
33-
IdleTaskSupport idle_task_support) {
34-
v8::base::debug::EnableInProcessStackDumping();
32+
v8::Platform* CreateDefaultPlatform(
33+
int thread_pool_size, IdleTaskSupport idle_task_support,
34+
InProcessStackDumping in_process_stack_dumping) {
35+
if (in_process_stack_dumping == InProcessStackDumping::kEnabled) {
36+
v8::base::debug::EnableInProcessStackDumping();
37+
}
3538
DefaultPlatform* platform = new DefaultPlatform(idle_task_support);
3639
platform->SetThreadPoolSize(thread_pool_size);
3740
platform->EnsureInitialized();

0 commit comments

Comments
 (0)