* [PATCH ncns v1 0/2] ncns fixes @ 2022-08-17 13:35 Ammar Faizi 2022-08-17 13:35 ` [PATCH ncns v1 1/2] chnet: Initialize `read_ret_` to zero Ammar Faizi ` (2 more replies) 0 siblings, 3 replies; 5+ messages in thread From: Ammar Faizi @ 2022-08-17 13:35 UTC (permalink / raw) To: Alviro Iskandar Setiawan; +Cc: Ammar Faizi, GNU/Weeb Mailing List Hi Al, Yet another small series for ncns. 1) Initialize `read_ret_` to zero. We can't rely on read_ret_ value being random at initialization. This caused a real crash where @ret value being random (83382480 in this case): ret = 83382480 [0817/093957.227555:FATAL:scoped_refptr.h(272)] Check failed: ptr_. #0 0x7fa9a8a6b62c <unknown> #1 0x7fa9a87cb30a <unknown> #2 0x7fa9a87cb2c5 <unknown> #3 0x7fa9a881c799 <unknown> #4 0x7fa9a881cfa9 <unknown> #5 0x7fa9a878537b <unknown> #6 0x7fa9a93866b6 <unknown> #7 0x7fa9a93121fa <unknown> #8 0x7fa9a931debd <unknown> #9 0x000000b0deed <unknown> #10 0x000000d972d0 <unknown> #11 0x000000d9880f <unknown> #12 0x0000016dabb9 <unknown> 2) Set error string when the Chromium hits net error. Translate the error code to string when the Chromium hits a net error. This makes debugging easier for the callers because now we can know what the returned error code means, easily. Signed-off-by: Ammar Faizi <[email protected]> --- Ammar Faizi (2): chnet: Initialize `read_ret_` to zero chnet: Set error string when the Chromium hits net error chnet/chnet.cc | 12 ++++++++++++ chnet/chnet.h | 2 ++ 2 files changed, 14 insertions(+) base-commit: 971f49f53c730aa82466b251a2b682c0827c3ec4 -- Ammar Faizi ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH ncns v1 1/2] chnet: Initialize `read_ret_` to zero 2022-08-17 13:35 [PATCH ncns v1 0/2] ncns fixes Ammar Faizi @ 2022-08-17 13:35 ` Ammar Faizi 2022-08-17 13:40 ` Alviro Iskandar Setiawan 2022-08-17 13:35 ` [PATCH ncns v1 2/2] chnet: Set error string when the Chromium hits net error Ammar Faizi 2022-08-17 13:41 ` [PATCH ncns v1 0/2] ncns fixes Alviro Iskandar Setiawan 2 siblings, 1 reply; 5+ messages in thread From: Ammar Faizi @ 2022-08-17 13:35 UTC (permalink / raw) To: Alviro Iskandar Setiawan; +Cc: Ammar Faizi, GNU/Weeb Mailing List We can't rely on read_ret_ value being random at initialization. This caused a real crash where @ret value being random (83382480 in this case): ret = 83382480 [0817/093957.227555:FATAL:scoped_refptr.h(272)] Check failed: ptr_. #0 0x7fa9a8a6b62c <unknown> #1 0x7fa9a87cb30a <unknown> #2 0x7fa9a87cb2c5 <unknown> #3 0x7fa9a881c799 <unknown> #4 0x7fa9a881cfa9 <unknown> #5 0x7fa9a878537b <unknown> #6 0x7fa9a93866b6 <unknown> #7 0x7fa9a93121fa <unknown> #8 0x7fa9a931debd <unknown> #9 0x000000b0deed <unknown> #10 0x000000d972d0 <unknown> #11 0x000000d9880f <unknown> #12 0x0000016dabb9 <unknown> Signed-off-by: Ammar Faizi <[email protected]> --- chnet/chnet.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/chnet/chnet.cc b/chnet/chnet.cc index 37c0b03..c870e05 100644 --- a/chnet/chnet.cc +++ b/chnet/chnet.cc @@ -43,6 +43,7 @@ CHNetDelegate::CHNetDelegate(void): { base::Thread::Options options(base::MessagePumpType::IO, 0); CHECK(thread_.StartWithOptions(std::move(options))); + read_ret_.store(0, std::memory_order_relaxed); } static void CHNetDelegateDestruct(std::unique_ptr<URLRequest> *url_req, -- Ammar Faizi ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH ncns v1 1/2] chnet: Initialize `read_ret_` to zero 2022-08-17 13:35 ` [PATCH ncns v1 1/2] chnet: Initialize `read_ret_` to zero Ammar Faizi @ 2022-08-17 13:40 ` Alviro Iskandar Setiawan 0 siblings, 0 replies; 5+ messages in thread From: Alviro Iskandar Setiawan @ 2022-08-17 13:40 UTC (permalink / raw) To: Ammar Faizi; +Cc: GNU/Weeb Mailing List On Wed, Aug 17, 2022 at 8:35 PM Ammar Faizi wrote: > We can't rely on read_ret_ value being random at initialization. This > caused a real crash where @ret value being random (83382480 in this > case): good catch btw, tq for the fix tq -- Viro ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH ncns v1 2/2] chnet: Set error string when the Chromium hits net error 2022-08-17 13:35 [PATCH ncns v1 0/2] ncns fixes Ammar Faizi 2022-08-17 13:35 ` [PATCH ncns v1 1/2] chnet: Initialize `read_ret_` to zero Ammar Faizi @ 2022-08-17 13:35 ` Ammar Faizi 2022-08-17 13:41 ` [PATCH ncns v1 0/2] ncns fixes Alviro Iskandar Setiawan 2 siblings, 0 replies; 5+ messages in thread From: Ammar Faizi @ 2022-08-17 13:35 UTC (permalink / raw) To: Alviro Iskandar Setiawan; +Cc: Ammar Faizi, GNU/Weeb Mailing List Translate the error code to string when the Chromium hits a net error. This makes debugging easier for the callers because now we can know what the returned error code means, easily. Signed-off-by: Ammar Faizi <[email protected]> --- chnet/chnet.cc | 11 +++++++++++ chnet/chnet.h | 2 ++ 2 files changed, 13 insertions(+) diff --git a/chnet/chnet.cc b/chnet/chnet.cc index c870e05..9d19882 100644 --- a/chnet/chnet.cc +++ b/chnet/chnet.cc @@ -149,6 +149,9 @@ int CHNetDelegate::Read(int size) void CHNetDelegate::OnResponseStarted(URLRequest *url_req, int net_err) { + if (unlikely(net_err < 0)) + SetError(net_err); + if (cb.response_started_) cb.response_started_(cb.response_started_data_, url_req, net_err); @@ -156,11 +159,19 @@ void CHNetDelegate::OnResponseStarted(URLRequest *url_req, int net_err) void CHNetDelegate::OnReadCompleted(URLRequest *url_req, int bytes_read) { + if (unlikely(bytes_read < 0)) + SetError(bytes_read); + read_ret_.store(bytes_read); if (cb.read_completed_) cb.read_completed_(cb.read_completed_data_, url_req, bytes_read); } +void CHNetDelegate::SetError(int err_code) +{ + err_ = "chromium_net_err:" + ErrorToString(err_code); +} + } /* namespace net */ CHNet::CHNet(void) diff --git a/chnet/chnet.h b/chnet/chnet.h index f91b25b..15ba8cd 100644 --- a/chnet/chnet.h +++ b/chnet/chnet.h @@ -26,6 +26,7 @@ #include "net/url_request/url_request_context_builder.h" #include "net/url_request/url_request_context.h" #include "net/url_request/url_request.h" +#include "net/base/net_errors.h" #define CHNET_EXPORT COMPONENT_EXPORT(CHNET) #else /* #ifdef __FOR_CHROMIUM_INTERNAL */ @@ -73,6 +74,7 @@ public: int Start(void); int Read(int size); void _Read(Waiter *sig, int size); + void SetError(int err_code); void OnResponseStarted(URLRequest *url_req, int net_error) override; void OnReadCompleted(URLRequest *url_req, int bytes_read) override; -- Ammar Faizi ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH ncns v1 0/2] ncns fixes 2022-08-17 13:35 [PATCH ncns v1 0/2] ncns fixes Ammar Faizi 2022-08-17 13:35 ` [PATCH ncns v1 1/2] chnet: Initialize `read_ret_` to zero Ammar Faizi 2022-08-17 13:35 ` [PATCH ncns v1 2/2] chnet: Set error string when the Chromium hits net error Ammar Faizi @ 2022-08-17 13:41 ` Alviro Iskandar Setiawan 2 siblings, 0 replies; 5+ messages in thread From: Alviro Iskandar Setiawan @ 2022-08-17 13:41 UTC (permalink / raw) To: Ammar Faizi; +Cc: GNU/Weeb Mailing List On Wed, Aug 17, 2022 at 8:35 PM Ammar Faizi wrote: > Hi Al, > > Yet another small series for ncns. applied tq -- Viro ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-08-17 13:41 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-08-17 13:35 [PATCH ncns v1 0/2] ncns fixes Ammar Faizi 2022-08-17 13:35 ` [PATCH ncns v1 1/2] chnet: Initialize `read_ret_` to zero Ammar Faizi 2022-08-17 13:40 ` Alviro Iskandar Setiawan 2022-08-17 13:35 ` [PATCH ncns v1 2/2] chnet: Set error string when the Chromium hits net error Ammar Faizi 2022-08-17 13:41 ` [PATCH ncns v1 0/2] ncns fixes Alviro Iskandar Setiawan
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox