diff options
author | blundell <blundell@chromium.org> | 2016-02-09 02:26:54 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-02-09 10:27:56 +0000 |
commit | c8588be061339ced9a34d3d7e3319daf7eee241d (patch) | |
tree | c51d3e41c3d4029ba97d47588867e1e9a2f085ae /mojo/edk/embedder/embedder.cc | |
parent | 1f071893d22e2260b5ebc6c97a02626a9ca945fe (diff) | |
download | chromium_src-c8588be061339ced9a34d3d7e3319daf7eee241d.zip chromium_src-c8588be061339ced9a34d3d7e3319daf7eee241d.tar.gz chromium_src-c8588be061339ced9a34d3d7e3319daf7eee241d.tar.bz2 |
Revert of [mojo-edk] Simplify multiprocess pipe bootstrap (patchset #7 id:140001 of https://codereview.chromium.org/1675603002/ )
Reason for revert:
This patch broke several browsertests on Linux: PlatformAppBrowserTest.LoadAndLaunchAppChromeRunning, PlatformAppBrowserTest.LoadAndLaunchAppWithFile, PolicyMakeDefaultBrowserTest.MakeDefaultDisabled (e.g., https://build.chromium.org/p/chromium.linux/buildstatus?builder=Linux%20Tests%20%28dbg%29%281%29%2832%29&number=25685). I could repro the failures locally, and reverting this patch fixed them.
Example failure:
PlatformAppBrowserTest.LoadAndLaunchAppChromeRunning (run #1):
[ RUN ] PlatformAppBrowserTest.LoadAndLaunchAppChromeRunning
<snip>
[26865:26901:0209/004101:FATAL:thread.cc(270)] Check failed: GetThreadWasQuitProperly().
#0 0x0000f7142d94 base::debug::StackTrace::StackTrace()
#1 0x0000f71a998f logging::LogMessage::~LogMessage()
#2 0x0000f72cc94f base::Thread::ThreadMain()
#3 0x0000f72b487a base::(anonymous namespace)::ThreadFunc()
#4 0x0000e749dd4c start_thread
#5 0x0000e6a7cb8e clone
Original issue's description:
> [mojo-edk] Simplify multiprocess pipe bootstrap
>
> This introduces a new MergePort message at the Ports layer
> for joining two independent port cycles which each have
> an unused (i.e. unwritten, unread, unsent) receiving port.
>
> MergePort allows us to create a MessagePipeDispatcher which
> is immediately usable but which will eventually be linked to
> a MessagePipeDispatcher on another port cycle, potentially in
> another process.
>
> The basic idea is to create a fully functional port pair but
> only bind one port to an MPD. Do this on each end and
> merge the dangling ports asynchronously.
>
> The simplification here allows a lot of code to be deleted
> from NodeController, some of which is deleted in this CL.
>
> Future work will convert existing bootstrap sites back to
> using synchronous bootstrap, including the token-based APIs.
>
> BUG=584764
> TBR=ben@chromium.org for null check in mash shell
>
> Committed: https://crrev.com/b3ea203171e07f5c7e476e94d210ec4ad53ce5b0
> Cr-Commit-Position: refs/heads/master@{#374322}
TBR=amistry@chromium.org,darin@chormium.org,rockot@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=584764
Review URL: https://codereview.chromium.org/1678333003
Cr-Commit-Position: refs/heads/master@{#374346}
Diffstat (limited to 'mojo/edk/embedder/embedder.cc')
-rw-r--r-- | mojo/edk/embedder/embedder.cc | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/mojo/edk/embedder/embedder.cc b/mojo/edk/embedder/embedder.cc index 926ee18..d1ab6c6 100644 --- a/mojo/edk/embedder/embedder.cc +++ b/mojo/edk/embedder/embedder.cc @@ -107,37 +107,29 @@ void ShutdownIPCSupport() { ScopedMessagePipeHandle CreateMessagePipe( ScopedPlatformHandle platform_handle) { - DCHECK(internal::g_core); - return internal::g_core->CreateMessagePipe(std::move(platform_handle)); + NOTREACHED(); + return ScopedMessagePipeHandle(); } void CreateMessagePipe( ScopedPlatformHandle platform_handle, const base::Callback<void(ScopedMessagePipeHandle)>& callback) { DCHECK(internal::g_core); - callback.Run(CreateMessagePipe(std::move(platform_handle))); -} - -ScopedMessagePipeHandle CreateParentMessagePipe(const std::string& token) { - DCHECK(internal::g_core); - return internal::g_core->CreateParentMessagePipe(token); + internal::g_core->CreateMessagePipe(std::move(platform_handle), callback); } void CreateParentMessagePipe( const std::string& token, const base::Callback<void(ScopedMessagePipeHandle)>& callback) { - callback.Run(CreateParentMessagePipe(token)); -} - -ScopedMessagePipeHandle CreateChildMessagePipe(const std::string& token) { DCHECK(internal::g_core); - return internal::g_core->CreateChildMessagePipe(token); + internal::g_core->CreateParentMessagePipe(token, callback); } void CreateChildMessagePipe( const std::string& token, const base::Callback<void(ScopedMessagePipeHandle)>& callback) { - callback.Run(CreateChildMessagePipe(token)); + DCHECK(internal::g_core); + internal::g_core->CreateChildMessagePipe(token, callback); } std::string GenerateRandomToken() { |