Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-111907

Crash when touching text field inside WebEngineView

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • P1: Critical
    • None
    • 6.4.2
    • WebEngine
    • None
    • Linux/Other display system

    Description

      This is on a RPI4 + touchscreen, running Raspbian bookworm, using the official Debian Qt 6.4.2 packages. The app uses EGLFS.

      I have a QML app that uses WebEngineView + Qt Virtual Keyboard to create a very basic browser. If I open google.com and then touch the search input field, I see the VKB trying to show (it slides in a few pixels), but then the app crashes 100% of the time with the following back-trace. Debugging isn't fun as both the PI and the TS are mounted inside a kitchen cabinet

      I'll try to find another TS so I can reproduce it on an x86_64 Debian PC where debugging is much more comfortable, but maybe someone has an idea what might be wrong already from this backtrace:

       (gdb) bt
      #0  qmlEngine(QObject const*) (obj=obj@entry=0x0) at ./src/qml/qml/qqml.cpp:69
      #1  0x0000007ff7f1e760 in QQuickWebEngineViewPrivate::createTouchHandleDelegate(QMap<int, QImage> const&) (this=<optimized out>, images=...)
          at ./src/webenginequick/api/qquickwebengineview.cpp:1261
      #2  0x0000007fed568494 in QtWebEngineCore::TouchSelectionControllerClientQt::CreateDrawable() ()
          at /build/qt6-webengine-5ltows/qt6-webengine-6.4.2-final+dfsg/src/core/touch_selection_controller_client_qt.cpp:270
      #3  0x0000007ff1c834ec in ui::TouchSelectionController::CreateDrawable() () at ./../../../../../src/3rdparty/chromium/ui/touch_selection/touch_selection_controller.cc:501
      #4  ui::TouchHandle::TouchHandle(ui::TouchHandleClient*, ui::TouchHandleOrientation, gfx::RectF const&) ()
          at ./../../../../../src/3rdparty/chromium/ui/touch_selection/touch_handle.cc:74
      #5  0x0000007ff1c849a4 in std::make_unique<ui::TouchHandle, ui::TouchSelectionController*, ui::TouchHandleOrientation, gfx::RectF&>(ui::TouchSelectionController*&&, ui::TouchHandleOrientation&&, gfx::RectF&) () at /usr/include/c++/12/bits/unique_ptr.h:1065
      #6  ui::TouchSelectionController::ActivateInsertionIfNecessary() () at ./../../../../../src/3rdparty/chromium/ui/touch_selection/touch_selection_controller.cc:567
      #7  0x0000007ff1c85b0c in ui::TouchSelectionController::OnInsertionChanged() () at ./../../../../../src/3rdparty/chromium/ui/touch_selection/touch_selection_controller.cc:529
      #8  0x0000007ff1c85d8c in ui::TouchSelectionController::OnSelectionBoundsChanged(gfx::SelectionBound const&, gfx::SelectionBound const&) ()
          at ./../../../../../src/3rdparty/chromium/ui/touch_selection/touch_selection_controller.cc:151
      #9  0x0000007fed541eb0 in QtWebEngineCore::RenderWidgetHostViewQt::OnRenderFrameMetadataChangedAfterActivation(base::TimeTicks) ()
          at /build/qt6-webengine-5ltows/qt6-webengine-6.4.2-final+dfsg/src/core/render_widget_host_view_qt.cpp:1003
      #10 0x0000007feeb7d7a8 in content::RenderFrameMetadataProviderImpl::OnRenderFrameMetadataChangedAfterActivation(cc::RenderFrameMetadata, base::TimeTicks) ()
          at ../../../../../src/3rdparty/chromium/content/browser/renderer_host/render_frame_metadata_provider_impl.cc:89
      #11 0x0000007feeb7cb68 in base::internal::FunctorTraits<void (content::RenderFrameMetadataProviderImpl::*)(cc::RenderFrameMetadata, base::TimeTicks), void>::Invoke<void (content::RenderFrameMetadataProviderImpl::*)(cc::RenderFrameMetadata, base::TimeTicks), base::WeakPtr<content::RenderFrameMetadataProviderImpl>, cc::RenderFrameMetadata, base::TimeTicks>(void (content::RenderFrameMetadataProviderImpl::*)(cc::RenderFrameMetadata, base::TimeTicks), base::WeakPtr<content::RenderFrameMetadataProviderImpl>&&, cc::RenderFrameMetadata&&, base::TimeTicks&&) () at ../../../../../src/3rdparty/chromium/base/bind_internal.h:542
      #12 base::internal::InvokeHelper<true, void>::MakeItSo<void (content::RenderFrameMetadataProviderImpl::*)(cc::RenderFrameMetadata, base::TimeTicks), base::WeakPtr<content::RenderFrameMetadataProviderImpl>, cc::RenderFrameMetadata, base::TimeTicks>(void (content::RenderFrameMetadataProviderImpl::*&&)(cc::RenderFrameMetadata, base::TimeTicks), base::WeakPtr<content::RenderFrameMetadataProviderImpl>&&, cc::RenderFrameMetadata&&, base::TimeTicks&&) () at ../../../../../src/3rdparty/chromium/base/bind_internal.h:726
      #13 base::internal::Invoker<base::internal::BindState<void (content::RenderFrameMetadataProviderImpl::*)(cc::RenderFrameMetadata, base::TimeTicks), base::WeakPtr<content::RenderFrameMetadataProviderImpl>, cc::RenderFrameMetadata>, void (base::TimeTicks)>::RunImpl<void (content::RenderFrameMetadataProviderImpl::*)(cc::RenderFrameMetadata, base::TimeTicks), std::tuple<base::WeakPtr<content::RenderFrameMetadataProviderImpl>, cc::RenderFrameMetadata>, 0ul, 1ul>(void (content::RenderFrameMetadataProviderImpl::*&&)(cc::RenderFrameMetadata, base::TimeTicks), std::tuple<base::WeakPtr<content::RenderFrameMetadataProviderImpl>, cc::RenderFrameMetadata>&&, std::integer_sequence<unsigned long, 0ul, 1ul>, base::TimeTicks&&) () at ../../../../../src/3rdparty/chromium/base/bind_internal.h:779
      #14 base::internal::Invoker<base::internal::BindState<void (content::RenderFrameMetadataProviderImpl::*)(cc::RenderFrameMetadata, base::TimeTicks), base::WeakPtr<content::RenderFrameMetadataProviderImpl>, cc::RenderFrameMetadata>, void (base::TimeTicks)>::RunOnce(base::internal::BindStateBase*, base::TimeTicks&&) ()
          at ../../../../../src/3rdparty/chromium/base/bind_internal.h:748
      #15 0x0000007feea70aa0 in base::OnceCallback<void (base::TimeTicks)>::Run(base::TimeTicks) && () at ../../../../../src/3rdparty/chromium/base/callback.h:143
      #16 content::FrameTokenMessageQueue::DidProcessFrame(unsigned int, base::TimeTicks) ()
          at ../../../../../src/3rdparty/chromium/content/browser/renderer_host/frame_token_message_queue.cc:52
      #17 0x0000007fee17d1fc in viz::mojom::FrameSinkManagerClientStubDispatch::Accept(viz::mojom::FrameSinkManagerClient*, mojo::Message*) ()
          at gen/services/viz/privileged/mojom/compositing/frame_sink_manager.mojom.cc:2717
      #18 0x0000007ff0d189c0 in mojo::InterfaceEndpointClient::HandleValidatedMessage(mojo::Message*) ()
          at ../../../../../src/3rdparty/chromium/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc:957
      #19 0x0000007ff0d19498 in mojo::MessageDispatcher::Accept(mojo::Message*) () at ../../../../../src/3rdparty/chromium/mojo/public/cpp/bindings/lib/message_dispatcher.cc:43
      #20 0x0000007ff0d181c0 in mojo::InterfaceEndpointClient::HandleIncomingMessage(mojo::Message*) ()
          at ../../../../../src/3rdparty/chromium/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc:690
      #21 0x0000007ff0d1d7f4 in mojo::internal::MultiplexRouter::ProcessIncomingMessage(mojo::internal::MultiplexRouter::MessageWrapper*, mojo::internal::MultiplexRouter::ClientCallBehavior, base::SequencedTaskRunner*) () at ../../../../../src/3rdparty/chromium/mojo/public/cpp/bindings/lib/multiplex_router.cc:1102
      #22 0x0000007ff0d20764 in mojo::internal::MultiplexRouter::Accept(mojo::Message*) ()
          at ../../../../../src/3rdparty/chromium/mojo/public/cpp/bindings/lib/multiplex_router.cc:716
      #23 0x0000007ff0d19498 in mojo::MessageDispatcher::Accept(mojo::Message*) () at ../../../../../src/3rdparty/chromium/mojo/public/cpp/bindings/lib/message_dispatcher.cc:43
      #24 0x0000007ff0d12ed8 in mojo::Connector::DispatchMessage(mojo::ScopedHandleBase<mojo::MessageHandle>) ()
          at ../../../../../src/3rdparty/chromium/mojo/public/cpp/bindings/lib/connector.cc:561
      #25 0x0000007ff0d13604 in mojo::Connector::ReadAllAvailableMessages() () at ../../../../../src/3rdparty/chromium/mojo/public/cpp/bindings/lib/connector.cc:618
      #26 0x0000007ff0d35af8 in base::RepeatingCallback<void (unsigned int, mojo::HandleSignalsState const&)>::Run(unsigned int, mojo::HandleSignalsState const&) const & ()
          at ../../../../../src/3rdparty/chromium/base/callback.h:242
      #27 mojo::SimpleWatcher::OnHandleReady(int, unsigned int, mojo::HandleSignalsState const&) ()
          at ../../../../../src/3rdparty/chromium/mojo/public/cpp/system/simple_watcher.cc:278
      #28 0x0000007ff05d886c in base::OnceCallback<void ()>::Run() && () at ../../../../../src/3rdparty/chromium/base/callback.h:143
      #29 base::TaskAnnotator::RunTaskImpl(base::PendingTask&) () at ./../../../../../src/3rdparty/chromium/base/task/common/task_annotator.cc:135
      #30 0x0000007ff05ee8a8 in RunTask<base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl(base::sequence_manager::LazyNow*)::<lambda(perfetto::EventContext&)> > () at ../../../../../src/3rdparty/chromium/base/task/common/task_annotator.h:74
      #31 base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl(base::sequence_manager::LazyNow*) ()
          at ./../../../../../src/3rdparty/chromium/base/task/sequence_manager/thread_controller_with_message_pump_impl.cc:386
      #32 0x0000007ff05eef80 in base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWork() ()
          at ./../../../../../src/3rdparty/chromium/base/task/sequence_manager/thread_controller_with_message_pump_impl.cc:291
      #33 0x0000007fed4c5e68 in QtWebEngineCore::MessagePumpForUIQt::handleScheduledWork() ()
          at /build/qt6-webengine-5ltows/qt6-webengine-6.4.2-final+dfsg/src/core/browser_main_parts_qt.cpp:190
      #34 0x0000007ff5e728f4 in QObject::event(QEvent*) (this=0x5555df6340, e=0x7f34023cc0) at ./src/corelib/kernel/qobject.cpp:1355
      #35 0x0000007ff71a7f7c in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x5555df6340, e=0x7f34023cc0)
          at ./src/widgets/kernel/qapplication.cpp:3315
      #36 0x0000007ff5e36624 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=receiver@entry=0x5555df6340, event=event@entry=0x7f34023cc0)
          at ./src/corelib/kernel/qcoreapplication.cpp:1026
      #37 0x0000007ff5e36668 in QCoreApplication::sendEvent(QObject*, QEvent*) (receiver=receiver@entry=0x5555df6340, event=event@entry=0x7f34023cc0)
          at ./src/corelib/kernel/qcoreapplication.cpp:1442
      #38 0x0000007ff5e3689c in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x0, event_type=0, data=0x55556f7af0)
          at ./src/corelib/kernel/qcoreapplication.cpp:1804
      #39 0x0000007ff6016ea8 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x55556fb9f0) at ./src/corelib/kernel/qeventdispatcher_glib.cpp:243
      #40 0x0000007fec30774c in g_main_dispatch (context=0x555570efc0) at ../../../glib/gmain.c:3454
      #41 g_main_context_dispatch (context=context@entry=0x555570efc0) at ../../../glib/gmain.c:4172
      #42 0x0000007fec3079e0 in g_main_context_iterate (context=context@entry=0x555570efc0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
          at ../../../glib/gmain.c:4248
      #43 0x0000007fec307a84 in g_main_context_iteration (context=0x555570efc0, may_block=1) at ../../../glib/gmain.c:4313
      #44 0x0000007ff6014804 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x55556fba70, flags=...)
          at ./src/corelib/kernel/qeventdispatcher_glib.cpp:393
      #45 0x0000007ff5e40610 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fffffed80, flags=...) at ./src/corelib/global/qflags.h:34
      #46 0x0000007ff5e39448 in QCoreApplication::exec() () at ./src/corelib/global/qflags.h:74
      #47 0x000000555556b4a0 in main ()
      

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            mnegyokru Martin Negyokru
            rgriebl Robert Griebl
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes