| Index: src/api.cc
|
| diff --git a/src/api.cc b/src/api.cc
|
| index aed4af089b7c5b1eeb79194fa1622feba4c0daee..919e8394d0a0e122fecf26b24ede617937374240 100644
|
| --- a/src/api.cc
|
| +++ b/src/api.cc
|
| @@ -274,10 +274,23 @@ void i::V8::FatalProcessOutOfMemory(const char* location, bool is_heap_oom) {
|
| i::Isolate* isolate = i::Isolate::Current();
|
| char last_few_messages[Heap::kTraceRingBufferSize + 1];
|
| char js_stacktrace[Heap::kStacktraceBufferSize + 1];
|
| + i::HeapStats heap_stats;
|
| +
|
| + if (isolate == nullptr) {
|
| + // On a background thread -> we cannot retrieve memory information from the
|
| + // Isolate. Write easy-to-recognize values on the stack.
|
| + memset(last_few_messages, 0x0badc0de, Heap::kTraceRingBufferSize + 1);
|
| + memset(js_stacktrace, 0x0badc0de, Heap::kStacktraceBufferSize + 1);
|
| + memset(&heap_stats, 0xbadc0de, sizeof(heap_stats));
|
| + // Note that the embedder's oom handler won't be called in this case. We
|
| + // just crash.
|
| + FATAL("API fatal error handler returned after process out of memory");
|
| + return;
|
| + }
|
| +
|
| memset(last_few_messages, 0, Heap::kTraceRingBufferSize + 1);
|
| memset(js_stacktrace, 0, Heap::kStacktraceBufferSize + 1);
|
|
|
| - i::HeapStats heap_stats;
|
| intptr_t start_marker;
|
| heap_stats.start_marker = &start_marker;
|
| size_t new_space_size;
|
|
|