Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Anr in rewards JSON Sanitize #28482

Closed
SergeyZhukovsky opened this issue Feb 13, 2023 · 1 comment · Fixed by brave/brave-core#17354
Closed

Anr in rewards JSON Sanitize #28482

SergeyZhukovsky opened this issue Feb 13, 2023 · 1 comment · Fixed by brave/brave-core#17354
Assignees
Labels
ANR Application Not Responding (Android stability issue) crash feature/rewards OS/Android Fixes related to Android browser functionality priority/P2 A bad problem. We might uplift this to the next planned release. QA/No release-notes/include

Comments

@SergeyZhukovsky
Copy link
Member

SergeyZhukovsky commented Feb 13, 2023

I found that crash stack in GPS in 1.48.160. We can try to move that task in the background thread as I don't see anything why it is in the main thread currently.

  RELADDR   FUNCTION                                                                          FILE:LINE
  000000000005c070  syscall+28                                                                        /apex/com.android.runtime/lib/bionic/libc.so
  000000000014a873  art::ConditionVariable::WaitHoldingLocks(art::Thread*)+82                         /apex/com.android.art/lib/libart.so
  00000000002de46d  art::JNI<false>::NewString(_JNIEnv*, unsigned short const*, int)+396              /apex/com.android.art/lib/libart.so
  v------>  _JNIEnv::NewString(unsigned short const*, int)                                    ../../third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/jni.h:828:14
  v------>  (anonymous namespace)::ConvertUTF16ToJavaStringImpl(_JNIEnv*, base::BasicStringPiece<char16_t, std::Cr::char_traits<char16_t>> const&)  ../../base/android/jni_string.cc:17:25
  00000000025f6079  base::android::ConvertUTF8ToJavaString(_JNIEnv*, base::BasicStringPiece<char, std::Cr::char_traits<char>> const&)  ../../base/android/jni_string.cc:75:43
  0000000001ba53bb  data_decoder::JsonSanitizer::Sanitize(std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>> const&, base::OnceCallback<void (data_decoder::JsonSanitizer::Result)>)  ../../services/data_decoder/public/cpp/json_sanitizer_android.cc:47:7
  00000000044d2191  brave_rewards::RewardsServiceImpl::OnURLLoaderComplete(std::Cr::__list_iterator<std::Cr::unique_ptr<network::SimpleURLLoader, std::Cr::default_delete<network::SimpleURLLoader>>, void*>, base::OnceCallback<void (ledger::mojom::UrlResponse const&)>, std::Cr::unique_ptr<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, std::Cr::default_delete<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>>>)  ../../brave/components/brave_rewards/browser/rewards_service_impl.cc:1195:12
  0000000001ae68b1  base::OnceCallback<void (std::Cr::unique_ptr<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, std::Cr::default_delete<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>>>)>::Run(std::Cr::unique_ptr<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>, std::Cr::default_delete<std::Cr::basic_string<char, std::Cr::char_traits<char>, std::Cr::allocator<char>>>>) &&  ../../base/functional/callback.h:152:12
  0000000002d7306b  network::(anonymous namespace)::SimpleURLLoaderImpl::FinishWithResult(int)        ../../services/network/public/cpp/simple_url_loader.cc:1630:18
  00000000012ea44f  network::mojom::URLLoaderClientStubDispatch::Accept(network::mojom::URLLoaderClient*, mojo::Message*)  gen/services/network/public/mojom/url_loader.mojom.cc:1289:13
  v------>  mojo::InterfaceEndpointClient::HandleValidatedMessage(mojo::Message*)             ../../mojo/public/cpp/bindings/lib/interface_endpoint_client.cc:1007:54
  000000000276d11b  mojo::InterfaceEndpointClient::HandleIncomingMessageThunk::Accept(mojo::Message*)  ../../mojo/public/cpp/bindings/lib/interface_endpoint_client.cc:357:18
  000000000276f4b3  mojo::MessageDispatcher::Accept(mojo::Message*)                                   ../../mojo/public/cpp/bindings/lib/message_dispatcher.cc:43:19
  000000000276df69  mojo::InterfaceEndpointClient::HandleIncomingMessage(mojo::Message*)              ../../mojo/public/cpp/bindings/lib/interface_endpoint_client.cc:694:20
  0000000002770ab9  mojo::internal::MultiplexRouter::ProcessIncomingMessage(mojo::internal::MultiplexRouter::MessageWrapper*, mojo::internal::MultiplexRouter::ClientCallBehavior, base::SequencedTaskRunner*)  ../../mojo/public/cpp/bindings/lib/multiplex_router.cc:1096:42
  00000000027707f5  mojo::internal::MultiplexRouter::Accept(mojo::Message*)                           ../../mojo/public/cpp/bindings/lib/multiplex_router.cc:710:7
  000000000276f4b3  mojo::MessageDispatcher::Accept(mojo::Message*)                                   ../../mojo/public/cpp/bindings/lib/message_dispatcher.cc:43:19
  000000000276baef  mojo::Connector::DispatchMessage(mojo::ScopedHandleBase<mojo::MessageHandle>)     ../../mojo/public/cpp/bindings/lib/connector.cc:542:49
  000000000276bf23  mojo::Connector::ReadAllAvailableMessages()                                       ../../mojo/public/cpp/bindings/lib/connector.cc:599:14
  v------>  base::OnceCallback<void ()>::Run() &&                                             ../../base/functional/callback.h:152:12
  00000000025b76ad  base::TaskAnnotator::RunTaskImpl(base::PendingTask&)                              ../../base/task/common/task_annotator.cc:157:32
  v------>  void base::TaskAnnotator::RunTask<base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl(base::LazyNow*)::$_0>(perfetto::StaticString, base::PendingTask&, base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl(base::LazyNow*)::$_0&&)  ../../base/task/common/task_annotator.h:85:5
  v------>  base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl(base::LazyNow*)  ../../base/task/sequence_manager/thread_controller_with_message_pump_impl.cc:484:23
  00000000025c3a15  base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWork()   ../../base/task/sequence_manager/thread_controller_with_message_pump_impl.cc:335:30
  00000000025c4009  non-virtual thunk to base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWork()  ../../base/task/sequence_manager/thread_controller_with_message_pump_impl.cc:0:0
  00000000025e6d01  base::MessagePumpForUI::DoNonDelayedLooperWork(bool)                              ../../base/message_loop/message_pump_android.cc:285:33
  v------>  base::MessagePumpForUI::OnNonDelayedLooperCallback()                              ../../base/message_loop/message_pump_android.cc:271:3
  00000000025e6865  base::(anonymous namespace)::NonDelayedLooperCallback(int, int, void*)            ../../base/message_loop/message_pump_android.cc:75:9
  00000000000102dd  android::Looper::pollInner(int)+692                                               /system/lib/libutils.so
  000000000000ffcf  android::Looper::pollOnce(int, int*, int*, void**)+62                             /system/lib/libutils.so
  00000000000e0c6b  android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long long, int)+24  /system/lib/libandroid_runtime.so
@SergeyZhukovsky SergeyZhukovsky added crash feature/rewards priority/P2 A bad problem. We might uplift this to the next planned release. QA/No release-notes/include OS/Android Fixes related to Android browser functionality labels Feb 13, 2023
@SergeyZhukovsky SergeyZhukovsky self-assigned this Feb 13, 2023
@SergeyZhukovsky SergeyZhukovsky changed the title And in rewards JSON Sanitize Anr in rewards JSON Sanitize Feb 13, 2023
@SergeyZhukovsky
Copy link
Member Author

A corresponding Java stack as the call for Android goes to Java

  at sun.misc.FloatingDecimal.parseDouble (FloatingDecimal.java:110)
  at java.lang.Double.parseDouble (Double.java:538)
  at org.chromium.services.data_decoder.JsonSanitizer.sanitize (JsonSanitizer.java:87)
  at org.chromium.services.data_decoder.JsonSanitizer.sanitize (JsonSanitizer.java:117)
  at android.os.MessageQueue.nativePollOnce (MessageQueue.java)
  at android.os.MessageQueue.next (MessageQueue.java:335)
  at android.os.Looper.loop (Looper.java:183)
  at android.app.ActivityThread.main (ActivityThread.java:7815)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:593)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1094)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ANR Application Not Responding (Android stability issue) crash feature/rewards OS/Android Fixes related to Android browser functionality priority/P2 A bad problem. We might uplift this to the next planned release. QA/No release-notes/include
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants