Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2294)

Unified Diff: mojo/edk/embedder/embedder.cc

Issue 2617713002: [WIP] Add DCHECK for mojo::edk::Init().
Patch Set: test Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: mojo/edk/embedder/embedder.cc
diff --git a/mojo/edk/embedder/embedder.cc b/mojo/edk/embedder/embedder.cc
index 5cf70e5f416231880109c0ea5aedaabb324b7711..f4ef70617ace50993e9a7580528e6148a2320d5d 100644
--- a/mojo/edk/embedder/embedder.cc
+++ b/mojo/edk/embedder/embedder.cc
@@ -22,21 +22,16 @@
#include "mojo/edk/system/core.h"
#if !defined(OS_NACL)
+#include "base/debug/stack_trace.h"
#include "crypto/random.h"
#endif
namespace mojo {
namespace edk {
-
-class Core;
-class PlatformSupport;
-
namespace internal {
-Core* g_core;
-ProcessDelegate* g_process_delegate;
-
-Core* GetCore() { return g_core; }
+Core* g_core = nullptr;
+ProcessDelegate* g_process_delegate = nullptr;
} // namespace internal
@@ -98,7 +93,13 @@ void Init() {
MojoSystemThunks thunks = MakeSystemThunks();
size_t expected_size = MojoEmbedderSetSystemThunks(&thunks);
DCHECK_EQ(expected_size, sizeof(thunks));
-
+#if defined(OS_NACL) || 1
+ DCHECK(!internal::g_core) << "No nacl stack trace.";
+#else
+ static std::string prev_stack;
+ DCHECK(!internal::g_core) << prev_stack << "\nEndOfPrevStack";
+ prev_stack = base::debug::StackTrace().ToString();
+#endif
internal::g_core = new Core();
}
@@ -140,6 +141,13 @@ MojoResult PassSharedMemoryHandle(
void InitIPCSupport(ProcessDelegate* process_delegate,
scoped_refptr<base::TaskRunner> io_thread_task_runner) {
CHECK(internal::g_core);
+#if defined(OS_NACL) || 1
+ DCHECK(!internal::g_process_delegate) << "No stack trace on NaCl";
+#else
+ static std::string prev_stack;
+ DCHECK(!internal::g_process_delegate) << prev_stack << "\nEndOfPrevStack";
+ prev_stack = base::debug::StackTrace().ToString();
+#endif
internal::g_core->SetIOTaskRunner(io_thread_task_runner);
internal::g_process_delegate = process_delegate;
}
@@ -150,6 +158,7 @@ void ShutdownIPCSupport() {
internal::g_core->RequestShutdown(
base::Bind(&ProcessDelegate::OnShutdownComplete,
base::Unretained(internal::g_process_delegate)));
+ internal::g_process_delegate = nullptr;
}
#if defined(OS_MACOSX) && !defined(OS_IOS)
@@ -161,18 +170,18 @@ void SetMachPortProvider(base::PortProvider* port_provider) {
ScopedMessagePipeHandle CreateMessagePipe(
ScopedPlatformHandle platform_handle) {
- CHECK(internal::g_process_delegate);
+ CHECK(internal::g_core);
return internal::g_core->CreateMessagePipe(std::move(platform_handle));
}
ScopedMessagePipeHandle CreateParentMessagePipe(
const std::string& token, const std::string& child_token) {
- CHECK(internal::g_process_delegate);
+ CHECK(internal::g_core);
return internal::g_core->CreateParentMessagePipe(token, child_token);
}
ScopedMessagePipeHandle CreateChildMessagePipe(const std::string& token) {
- CHECK(internal::g_process_delegate);
+ CHECK(internal::g_core);
return internal::g_core->CreateChildMessagePipe(token);
}
« no previous file with comments | « mash/test/mash_unittests.cc ('k') | services/service_manager/background/tests/background_service_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698