SSLUITest.TestUnauthenticatedFrameNavigation is flaky with --site-per-process |
||||||
Issue descriptionhttps://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=SSLUITest.TestUnauthenticatedFrameNavigation&testType=site_per_process_browser_tests https://luci-logdog.appspot.com/v/?s=chromium%2Fbb%2Fchromium.linux%2FLinux_Tests__dbg__1_%2F59127%2F%2B%2Frecipes%2Fsteps%2Fsite_per_process_browser_tests_on_Ubuntu-12.04%2F0%2Flogs%2FSSLUITest.TestUnauthenticatedFrameNavigation%2F0
,
Nov 28 2016
,
Nov 28 2016
meacer@: Are you familiar with this test? Looks like you re-enabled it in https://codereview.chromium.org/2045653002 for issue 43437 . I wonder if it's a different failure this time, though. Here's an example from the recent logs, suggesting TextInputManager::SelectionBoundsChanged might be involved. ekaramad@, can you take a look? https://build.chromium.org/p/chromium.linux/builders/Linux%20Tests%20(dbg)(1)/builds/59130 [ RUN ] SSLUITest.TestUnauthenticatedFrameNavigation Xlib: extension "RANDR" missing on display ":9". Xlib: extension "RANDR" missing on display ":9". [2624:2624:1127/173530:WARNING:audio_manager.cc(317)] Multiple instances of AudioManager detected [2624:2624:1127/173530:WARNING:audio_manager.cc(278)] Multiple instances of AudioManager detected [2624:2624:1127/173530:WARNING:password_store_factory.cc(248)] Using basic (unencrypted) store for password storage. See https://chromium.googlesource.com/chromium/src/+/master/docs/linux_password_storage.md for more information about password storage options. [2624:2830:1127/173531:WARNING:simple_synchronous_entry.cc(1054)] Could not open platform files for entry. [2624:2824:1127/173532:WARNING:embedded_test_server.cc(202)] Request not handled. Returning 404: /favicon.ico [2624:2624:1127/173533:WARNING:render_frame_host_impl.cc(2154)] OnDidStopLoading was called twice. [2624:2624:1127/173533:FATAL:unguessable_token.h(96)] Check failed: token. #0 0x7f2bb3d8183e base::debug::StackTrace::StackTrace() #1 0x7f2bb3defacf logging::LogMessage::~LogMessage() #2 0x7f2ba8eaf9f4 base::UnguessableTokenHash::operator()() #3 0x7f2ba8eaf7ad cc::LocalFrameId::hash() #4 0x7f2ba8eaf70a cc::SurfaceId::hash() #5 0x7f2ba8eaf6d9 cc::SurfaceIdHash::operator()() #6 0x7f2ba8eaf5fc std::__detail::_Hash_code_base<>::_M_hash_code() #7 0x7f2ba8efda37 std::_Hashtable<>::find() #8 0x7f2ba8ef60a5 std::__debug::unordered_map<>::find() #9 0x7f2ba8ef32b5 cc::SurfaceManager::GetSurfaceForId() #10 0x7f2ba8eef058 cc::SurfaceHittest::GetRenderPassForSurfaceById() #11 0x7f2ba8eeeaf5 cc::SurfaceHittest::GetTransformToTargetSurfaceInternal() #12 0x7f2ba8eeea1c cc::SurfaceHittest::GetTransformToTargetSurface() #13 0x7f2ba8eeefe2 cc::SurfaceHittest::TransformPointToTargetSurface() #14 0x7f2bac57d03e content::DelegatedFrameHost::TransformPointToLocalCoordSpace() #15 0x7f2bac0e7a4b content::RenderWidgetHostViewAura::TransformPointToLocalCoordSpace() #16 0x7f2baba78660 content::CrossProcessFrameConnector::TransformPointToCoordSpaceForView() #17 0x7f2baba785d1 content::CrossProcessFrameConnector::TransformPointToRootCoordSpace() #18 0x7f2babb4e33b content::RenderWidgetHostViewChildFrame::TransformPointToRootCoordSpace() #19 0x7f2bac102e2b content::TextInputManager::SelectionBoundsChanged() #20 0x7f2bac0f1883 content::RenderWidgetHostViewBase::SelectionBoundsChanged() #21 0x7f2bac0b23ec content::RenderWidgetHostImpl::OnSelectionBoundsChanged() #22 0x7f2bac0c83fd _ZN4base20DispatchToMethodImplIPN7content20RenderWidgetHostImplEMS2_FvRK34ViewHostMsg_SelectionBounds_ParamsERKSt5tupleIJS4_EEJLm0EEEEvRKT_T0_OT1_NS_13IndexSequenceIJXspT2_EEEE #23 0x7f2bac0c8350 _ZN4base16DispatchToMethodIPN7content20RenderWidgetHostImplEMS2_FvRK34ViewHostMsg_SelectionBounds_ParamsERKSt5tupleIJS4_EEEEvRKT_T0_OT1_ #24 0x7f2bac0c82cf _ZN3IPC16DispatchToMethodIN7content20RenderWidgetHostImplEMS2_FvRK34ViewHostMsg_SelectionBounds_ParamsEvSt5tupleIJS3_EEEEvPT_T0_PT1_RKT2_ #25 0x7f2bac0bea1f _ZN3IPC8MessageTI39ViewHostMsg_SelectionBoundsChanged_MetaSt5tupleIJ34ViewHostMsg_SelectionBounds_ParamsEEvE8DispatchIN7content20RenderWidgetHostImplES8_vMS8_FvRKS3_EEEbPKNS_7MessageEPT_PT0_PT1_T2_ #26 0x7f2bac0b01be content::RenderWidgetHostImpl::OnMessageReceived() #27 0x7f2bac05ea02 content::RenderProcessHostImpl::OnMessageReceived() #28 0x7f2baef82be8 IPC::ChannelProxy::Context::OnDispatchMessage() #29 0x7f2baef896cf _ZN4base8internal13FunctorTraitsIMN3IPC12ChannelProxy7ContextEFvRKNS2_7MessageEEvE6InvokeIRK13scoped_refptrIS4_EJS7_EEEvS9_OT_DpOT0_ #30 0x7f2baef895b6 _ZN4base8internal12InvokeHelperILb0EvE8MakeItSoIRKMN3IPC12ChannelProxy7ContextEFvRKNS4_7MessageEEJRK13scoped_refptrIS6_ES9_EEEvOT_DpOT0_ #31 0x7f2baef89543 _ZN4base8internal7InvokerINS0_9BindStateIMN3IPC12ChannelProxy7ContextEFvRKNS3_7MessageEEJ13scoped_refptrIS5_ES6_EEEFvvEE7RunImplIRKSA_RKSt5tupleIJSC_S6_EEJLm0ELm1EEEEvOT_OT0_NS_13IndexSequenceIJXspT1_EEEE #32 0x7f2baef8945c _ZN4base8internal7InvokerINS0_9BindStateIMN3IPC12ChannelProxy7ContextEFvRKNS3_7MessageEEJ13scoped_refptrIS5_ES6_EEEFvvEE3RunEPNS0_13BindStateBaseE #33 0x7f2bb3d87651 _ZNO4base8internal8RunMixinINS_8CallbackIFvvELNS0_8CopyModeE0ELNS0_10RepeatModeE0EEEE3RunEv #34 0x7f2bb3d87022 base::debug::TaskAnnotator::RunTask() #35 0x7f2bb3e18d0a base::MessageLoop::RunTask() #36 0x7f2bb3e18f94 base::MessageLoop::DeferOrRunPendingTask() #37 0x7f2bb3e1927e base::MessageLoop::DoWork() #38 0x7f2bb3e31796 base::MessagePumpGlib::Run() #39 0x7f2bb3e1888a base::MessageLoop::RunHandler() #40 0x7f2bb3ec3d34 base::RunLoop::Run() #41 0x000003921ce3 content::RunThisRunLoop() #42 0x000003922a1f content::MessageLoopRunner::Run() #43 0x000003923068 content::WindowedNotificationObserver::Wait() #44 0x0000011c571f SSLUITest_TestUnauthenticatedFrameNavigation_Test::RunTestOnMainThread() #45 0x0000027563e8 InProcessBrowserTest::RunTestOnMainThreadLoop() #46 0x00000388dff3 content::BrowserTestBase::ProxyRunTestOnMainThreadLoop() #47 0x00000084c475 _ZN4base8internal13FunctorTraitsIM25RenderViewContextMenuBaseFvvEvE6InvokeIP21RenderViewContextMenuJEEEvS4_OT_DpOT0_ #48 0x00000084c391 _ZN4base8internal12InvokeHelperILb0EvE8MakeItSoIRKM25RenderViewContextMenuBaseFvvEJP21RenderViewContextMenuEEEvOT_DpOT0_ #49 0x00000388f0e7 _ZN4base8internal7InvokerINS0_9BindStateIMN7content15BrowserTestBaseEFvvEJNS0_17UnretainedWrapperIS4_EEEEEFvvEE7RunImplIRKS6_RKSt5tupleIJS8_EEJLm0EEEEvOT_OT0_NS_13IndexSequenceIJXspT1_EEEE #50 0x00000388f02c _ZN4base8internal7InvokerINS0_9BindStateIMN7content15BrowserTestBaseEFvvEJNS0_17UnretainedWrapperIS4_EEEEEFvvEE3RunEPNS0_13BindStateBaseE #51 0x00000083271b base::internal::RunMixin<>::Run() #52 0x0000033c5aa3 ChromeBrowserMainParts::PreMainMessageLoopRunImpl() #53 0x0000033c44a0 ChromeBrowserMainParts::PreMainMessageLoopRun() #54 0x7f2bab7a3e81 content::BrowserMainLoop::PreMainMessageLoopRun() #55 0x7f2baadd3795 _ZN4base8internal13FunctorTraitsIMN7content22IndexedDBCallbacksImpl13InternalStateEFvvEvE6InvokeIPS4_JEEEvS6_OT_DpOT0_ #56 0x7f2bab7ac351 _ZN4base8internal12InvokeHelperILb0EiE8MakeItSoIRKMN7content15BrowserMainLoopEFivEJPS5_EEEiOT_DpOT0_ #57 0x7f2bab7ac2f7 _ZN4base8internal7InvokerINS0_9BindStateIMN7content15BrowserMainLoopEFivEJNS0_17UnretainedWrapperIS4_EEEEEFivEE7RunImplIRKS6_RKSt5tupleIJS8_EEJLm0EEEEiOT_OT0_NS_13IndexSequenceIJXspT1_EEEE #58 0x7f2bab7ac23c _ZN4base8internal7InvokerINS0_9BindStateIMN7content15BrowserMainLoopEFivEJNS0_17UnretainedWrapperIS4_EEEEEFivEE3RunEPNS0_13BindStateBaseE #59 0x7f2baacbd84b base::internal::RunMixin<>::Run() #60 0x7f2bac35f61b content::StartupTaskRunner::RunAllTasksNow() #61 0x7f2bab7a1c80 content::BrowserMainLoop::CreateStartupTasks()
,
Nov 29 2016
I enabled the test after not observing failures on my local runs. I'm now trying with --site-per-process and gtest_repeat=100 and still can't reproduce the failure. I can't think of any textbox related event happening in that test, other than the text in the omnibox changing. Perhaps it's related to recent changes in the omnibox? (e.g. verbose states changes for "secure" and "not secure" page)
,
Nov 29 2016
TestGoodFrameNavigation is also failing - in build 59177; same stack trace. The comments in unguessable_token.h say that it's an error to send empty tokens across process boundaries; The SurfaceManager was just updated to use unguessable_token a couple of weeks ago, (https://chromium.googlesource.com/chromium/src/+/7d7f6ebb02ae3b9e354406ce2670399a241baeca). Maybe there's an interaction between the test framework and site-isolation that is causing this to occasionally trigger the dcheck.
,
Nov 29 2016
I highly doubt it will be related to TextInputManager since all we do here is converting some rects into root coord space. macer@: Changes in omnibox would not go to TextInputManager as TextInputManager's job is to collect text related state from RenderWidgets inside the page. Also, apparently selection bounds updates are sent when 1) there is a change in text selection and 2) in every compositor frame and according to 2) we do not need to have text input on page to get the IPC. https://cs.chromium.org/chromium/src/content/renderer/render_widget.cc?rcl=1480422069&l=1993 To me it looks like LocalFrameId::nonce_ is empty which could be the case if we never explicitly assign the RWHVCF a proper local_frame_id_? Shouldn't we explicitly verify that the |local_frame_id_| is valid here: https://cs.chromium.org/chromium/src/content/browser/frame_host/render_widget_host_view_child_frame.cc?rcl=1480422069&l=520? kenrb@: WDYT?
,
Nov 29 2016
Could it be just that we are receiving a SelectionBoundsChanged message from the renderer before the compositor frame swap? It looks like that could cause this problem. It used to be that if we tried to do coordinate transformation using a non-existent surface it would just return false, but it appears that the refactoring of SurfaceID to FrameSinkID/LocalFrameID might have slightly changed that behavior, and as a result it now hits a check. I agree that Ehsan's suggestion in comment #6 looks like the right thing.
,
Nov 29 2016
Sorry for misplaced comment. I can try kenrb@'s suggestion based on comment #6.
,
Dec 1 2016
,
Dec 1 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/2677ed350ab354042313bc3b47c371d7a3b67292 commit 2677ed350ab354042313bc3b47c371d7a3b67292 Author: ekaramad <ekaramad@chromium.org> Date: Thu Dec 01 22:44:47 2016 Do not try to convert point to root coordinate space when |local_frame_id_| is invalid. It appears that we might receive IPC which would trigger this code path while |local_frame_id_| is not valid. It is reasonable to verify the validity of |local_frame_id_| before passing the SurfaceId to CrossProcessFrameConnector for point transform. This CL also attempts to re-enable SSLUITest.TestUnauthenticatedFrameNavigation with --site-per-process (which was most probably flaky due to the issue above). BUG= 668913 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_site_isolation Review-Url: https://codereview.chromium.org/2542463002 Cr-Commit-Position: refs/heads/master@{#435744} [modify] https://crrev.com/2677ed350ab354042313bc3b47c371d7a3b67292/chrome/browser/ssl/ssl_browser_tests.cc [modify] https://crrev.com/2677ed350ab354042313bc3b47c371d7a3b67292/content/browser/frame_host/render_widget_host_view_child_frame.cc
,
Dec 2 2016
I will wait until next week and if no more flakiness is observed, mark this as fixed.
,
Dec 8 2016
Marking as fixed since no flakiness was found.
,
Jan 24 2018
|
||||||
►
Sign in to add a comment |
||||||
Comment 1 by bugdroid1@chromium.org
, Nov 28 2016