Chromium Code Reviews| Index: net/quic/quic_http_stream.cc |
| diff --git a/net/quic/quic_http_stream.cc b/net/quic/quic_http_stream.cc |
| index db671f22e925e3313ae37f648a0e7e762eac4f1b..88b307865b945c70761487980e714f107a8537d8 100644 |
| --- a/net/quic/quic_http_stream.cc |
| +++ b/net/quic/quic_http_stream.cc |
| @@ -5,6 +5,9 @@ |
| #include "net/quic/quic_http_stream.h" |
| #include "base/callback_helpers.h" |
| +// TODO(rtenneti): Temporary while investigating crbug.com/585591. |
| +#include "base/debug/debugger.h" |
| +#include "base/debug/dump_without_crashing.h" |
| #include "base/metrics/histogram_macros.h" |
| #include "base/strings/stringprintf.h" |
| #include "net/base/io_buffer.h" |
| @@ -556,7 +559,19 @@ int QuicHttpStream::ProcessResponseHeaders(const SpdyHeaderBlock& headers) { |
| } |
| int QuicHttpStream::ReadAvailableData(IOBuffer* buf, int buf_len) { |
| + // TODO(rtenneti): Temporary until crbug.com/585591 is solved. |
| + CHECK(!read_is_called_); |
|
ramant (doing other things)
2016/02/11 19:45:46
Assuming Read() is not a recursive call. If it cou
eroman
2016/02/12 01:42:46
I don't know enough about this code to say if this
ramant (doing other things)
2016/02/12 02:47:09
Acknowledged.
If there is a recursion and if that
|
| + read_is_called_ = true; |
| + stream_->set_read_is_called(read_is_called_); |
| + |
| int rv = stream_->Read(buf, buf_len); |
|
eroman
2016/02/12 01:42:46
I suggest calling stream_->CrashIfInvalid() before
ramant (doing other things)
2016/02/12 02:47:09
Done.
|
| + // TODO(rtenneti): Temporary until crbug.com/585591 is solved. |
| + // CrashIfInvalid() may not be necessary. See if |stream_| became a nullptr |
| + // due to memory corruptions. |
| + read_is_called_ = false; |
|
eroman
2016/02/12 01:42:46
Might want to add CHECK(read_is_called_) here too,
ramant (doing other things)
2016/02/12 02:47:09
Done.
|
| + stream_->set_read_is_called(read_is_called_); |
| + stream_->CrashIfInvalid(); |
|
ramant (doing other things)
2016/02/11 19:45:46
Added this CrashIfInvalid() in case some one stomp
|
| + |
| if (stream_->IsDoneReading()) { |
| stream_->SetDelegate(nullptr); |
| stream_->OnFinRead(); |
| @@ -566,6 +581,16 @@ int QuicHttpStream::ReadAvailableData(IOBuffer* buf, int buf_len) { |
| } |
| void QuicHttpStream::ResetStream() { |
| + // TODO(rtenneti): Temporary until crbug.com/585591 is solved. |
| + if (read_is_called_) { |
| +// |stream_| is going away when Read is called. Capture the callstack. |
| +#if defined(NDEBUG) |
|
eroman
2016/02/12 01:42:46
I think you can just CHECK(false) here -- if this
ramant (doing other things)
2016/02/12 02:47:09
Done.
|
| + base::debug::DumpWithoutCrashing(); |
| +#else |
| + // Should never happen?? |
| + CHECK(false); |
| +#endif |
| + } |
| if (!stream_) |
| return; |
| closed_stream_received_bytes_ = stream_->stream_bytes_read(); |