New issue
Advanced search Search tips

Issue 868383 link

Starred by 2 users

Issue metadata

Status: Duplicate
Merged: issue 888555
Owner: ----
Closed: Sep 26
Cc:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

Potential jank caused by ssl_error_assistant_component_installer LoadProtoFromDisk

Project Member Reported by etienneb@chromium.org, Jul 27

Issue description

Slow-reports is shipped back to our server with a chrome trace when some jank is detected on the chrome main thread.

See attachment.

Report: 36fd7f786bce4155


The cause of the jank seems to be:
https://cs.chromium.org/chromium/src/chrome/browser/ssl/ssl_error_assistant.cc?type=cs&g=0&l=324

  // TODO(meacer): Ideally, ReadErrorAssistantProtoFromResourceBundle should
  // only be called once and not on the UI thread. Move the call to the
  // component updater component.

Examples (crash):
  f04147beae734ba2   602 ms
  3ba332d29f23c91e   598 ms
  58d6909c877e3116   549 ms
  0745a3cc7d9a7c58   525 ms
  1cd1bbd0dca72e6c   478 ms

It may as well take about 1 sec
  f9367be428e239e3  1000 ms
 
jank_proto.png
4.5 KB View Download
Labels: Hotlist-Jank Hotlist-SamplingProfilerInField Performance-Browser
Cc: carlosil@chromium.org agl@chromium.org
It looks like parsing the ssl error message on main thread is taking too long.

Traces can be found at crash/IDs:
34c547b3abb5d8a0 (3s)
c02bd72004291e9a (1.5s)
fcad2a6c4bb4bd66
c7be69bf9592fb94
51807c8f025abf8d
0f8646c082f79310
7c37d9f62fa45994

The jank is caused by the stack trace:
chrome_browser_ssl::SSLErrorAssistantConfig::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream *)
google::protobuf::`anonymous namespace'::InlineMergeFromCodedStream
google::protobuf::MessageLite::ParseFromZeroCopyStream(google::protobuf::io::ZeroCopyInputStream *)
`anonymous namespace'::ReadErrorAssistantProtoFromResourceBundle
SSLErrorAssistant::SetErrorAssistantProto(std::unique_ptr<chrome_browser_ssl::SSLErrorAssistantConfig,std::default_delete<chrome_browser_ssl::SSLErrorAssistantConfig> >)
SSLErrorHandler::SetErrorAssistantProto(std::unique_ptr<chrome_browser_ssl::SSLErrorAssistantConfig,std::default_delete<chrome_browser_ssl::SSLErrorAssistantConfig> >)
<aliased> base::internal::Invoker<base::internal::BindState<void (*)(std::unique_ptr<(anonymous namespace)::AfterStartupTask,std::default_delete<(anonymous namespace)::AfterStartupTask> >),std::unique_ptr<(anonymous namespace)::AfterStartupTask,std::default_delete<(anonymous namespace)::AfterStartupTask> > >,void ()>::RunOnce
base::debug::TaskAnnotator::RunTask(char const *,base::PendingTask *)
base::MessageLoop::RunTask(base::PendingTask *)
base::MessageLoop::DoWork()
base::MessagePumpForUI::DoRunLoop()
base::MessagePumpWin::Run(base::MessagePump::Delegate *)
base::RunLoop::Run()
ChromeBrowserMainParts::MainMessageLoopRun(int *)
content::BrowserMainLoop::RunMainMessageLoopParts()
content::BrowserMainRunnerImpl::Run()
content::BrowserMain(content::MainFunctionParams const &)
content::RunBrowserProcessMain(content::MainFunctionParams const &,content::ContentMainDelegate *)
content::ContentMainRunnerImpl::Run(bool)
service_manager::Main(service_manager::MainParams const &)
content::ContentMain(content::ContentMainParams const &)
ChromeMain
I think I can manage to put together a solution.
I looked to that bug, may be related:
  https://bugs.chromium.org/p/chromium/issues/detail?id=888555
Mergedinto: 888555
Status: Duplicate (was: Untriaged)

Sign in to add a comment