diff options
author | rvargas@chromium.org <rvargas@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-31 12:24:29 +0000 |
---|---|---|
committer | rvargas@chromium.org <rvargas@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-31 12:24:29 +0000 |
commit | 65727eb275749203a7cd86602251a7d903af3860 (patch) | |
tree | d3ceacc8ed50708026300a12546b48eb5769be70 /ipc/ipc_channel_win.cc | |
parent | ac4d90489876c530c4d7fc98c8c43a392c5d2f5f (diff) | |
download | chromium_src-65727eb275749203a7cd86602251a7d903af3860.zip chromium_src-65727eb275749203a7cd86602251a7d903af3860.tar.gz chromium_src-65727eb275749203a7cd86602251a7d903af3860.tar.bz2 |
IPC: Add more debug logic (crash tracking)
BUG=387876
R=cpu@chromium.org
Review URL: https://codereview.chromium.org/427693004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@286759 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ipc/ipc_channel_win.cc')
-rw-r--r-- | ipc/ipc_channel_win.cc | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/ipc/ipc_channel_win.cc b/ipc/ipc_channel_win.cc index 9741dda..0dcde17 100644 --- a/ipc/ipc_channel_win.cc +++ b/ipc/ipc_channel_win.cc @@ -63,10 +63,11 @@ ChannelWin::ChannelWin(const IPC::ChannelHandle &channel_handle, peer_pid_(base::kNullProcessId), waiting_connect_(mode & MODE_SERVER_FLAG), processing_incoming_(false), - weak_factory_(this), validate_client_(false), + writing_(false), debug_flags_(0), - client_secret_(0) { + client_secret_(0), + weak_factory_(this) { CreatePipe(channel_handle, mode); } @@ -426,6 +427,8 @@ bool ChannelWin::ProcessOutgoingMessages( Message* m = output_queue_.front(); DCHECK(m->size() <= INT_MAX); debug_flags_ |= WRITE_MSG; + CHECK(!writing_); + writing_ = true; BOOL ok = WriteFile(pipe_, m->data(), static_cast<int>(m->size()), @@ -441,6 +444,7 @@ bool ChannelWin::ProcessOutgoingMessages( return true; } + writing_ = false; LOG(ERROR) << "pipe error: " << err; return false; } @@ -498,6 +502,9 @@ void ChannelWin::OnIOCompleted( ok = ProcessIncomingMessages(); } else { DCHECK(context == &output_state_.context); + CHECK(writing_); + CHECK(output_state_.is_pending); + writing_ = false; debug_flags_ |= WRITE_COMPLETED; if (debug_flags_ & WAIT_FOR_WRITE) { CHECK(!(debug_flags_ & WAIT_FOR_WRITE_COMPLETE)); |