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

Grpc: use after free in 'handleSocketError'

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • P2: Important
    • None
    • 6.8.0
    • GRPC
    • None

    Description

      When a Q_TRY_WAIT* testcase fails I observed a user-after free error popping up very occasionally.

       

      Testserver started "/home/qtwayn/Qt/qt6/qtgrpc/build/debug/tests/auto/grpc/client/shared/test_server/grpc_testserver"
      ********* Start testing of QtGrpcClientUnaryCallTest *********
      Config: Using QtTest library 6.9.0, Qt 6.9.0 (x86_64-little_endian-lp64 shared (dynamic) debug build; by GCC 14.1.1 20240522), endeavouros unknown
      PASS   : QtGrpcClientUnaryCallTest::initTestCase()
      FAIL!  : QtGrpcClientUnaryCallTest::asyncWithSubscribe(Http2Client) The computed value is expected to be equal to the baseline, but is not
         Computed (status.code())              : Unavailable
         Baseline (QGrpcStatus::StatusCode::Ok): Ok
         Loc: [/home/qtwayn/Qt/qt6/qtgrpc/tests/auto/grpc/client/unarycall/tst_grpc_client_unarycall.cpp(62)]
      FAIL!  : QtGrpcClientUnaryCallTest::asyncWithSubscribe(Http2Client) The computed value is expected to be equal to the baseline, but is not
         Computed (waitForReply): 0
         Baseline (true)        : 1
         Loc: [/home/qtwayn/Qt/qt6/qtgrpc/tests/auto/grpc/client/unarycall/tst_grpc_client_unarycall.cpp(71)]
      QWARN  : QtGrpcClientUnaryCallTest::asyncWithSubscribe(Http2ClientUnix) testMethod called with:  "Hello Qt!"PASS   : QtGrpcClientUnaryCallTest::asyncWithSubscribe(Http2ClientUnix)
      QWARN  : QtGrpcClientUnaryCallTest::asyncWithSubscribe(Http2ClientSSL) testMethod called with:  "Hello Qt!"PASS   : QtGrpcClientUnaryCallTest::asyncWithSubscribe(Http2ClientSSL)
      PASS   : QtGrpcClientUnaryCallTest::immediateCancel(Http2Client)
      PASS   : QtGrpcClientUnaryCallTest::immediateCancel(Http2ClientUnix)
      PASS   : QtGrpcClientUnaryCallTest::immediateCancel(Http2ClientSSL)
      =================================================================
      ==38142==ERROR: AddressSanitizer: heap-use-after-free on address 0x50e000026bc0 at pc 0x78ac4b29f223 bp 0x7ffd00f5e850 sp 0x7ffd00f5e840
      READ of size 8 at 0x50e000026bc0 thread T0
          #0 0x78ac4b29f222 in void Debug::qDeleteAll<Debug::QList<Debug::QGrpcHttp2ChannelPrivate::Http2Handler*>::const_iterator>(Debug::QList<Debug::QGrpcHttp2ChannelPrivate::Http2Handler*>::const_iterator, Debug::QL
      ist<Debug::QGrpcHttp2ChannelPrivate::Http2Handler*>::const_iterator) (/home/qtwayn/Qt/qt6/build/debug/qtbase/lib/libQt6Grpc.so.6+0x29f222) (BuildId: c4fbe4a6f75f3a8dc7981acc233ad034558970a5)
          #1 0x78ac4b291eeb in void Debug::qDeleteAll<Debug::QList<Debug::QGrpcHttp2ChannelPrivate::Http2Handler*> >(Debug::QList<Debug::QGrpcHttp2ChannelPrivate::Http2Handler*> const&) (/home/qtwayn/Qt/qt6/build/debug/
      qtbase/lib/libQt6Grpc.so.6+0x291eeb) (BuildId: c4fbe4a6f75f3a8dc7981acc233ad034558970a5)
          #2 0x78ac4b270faf in Debug::QGrpcHttp2ChannelPrivate::handleSocketError() /home/qtwayn/Qt/qt6/qtgrpc/src/grpc/qgrpchttp2channel.cpp:795
          #3 0x78ac4b26821f in operator() /home/qtwayn/Qt/qt6/qtgrpc/src/grpc/qgrpchttp2channel.cpp:717
          #4 0x78ac4b27d651 in operator() /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qobjectdefs_impl.h:142
          #5 0x78ac4b27de2e in call_internal<void, Debug::QtPrivate::FunctorCall<Debug::QtPrivate::IndexesList<0>, Debug::QtPrivate::List<Debug::QAbstractSocket::SocketError>, void, Debug::QGrpcHttp2ChannelPrivate::QGrp
      cHttp2ChannelPrivate(const Debug::QUrl&, const Debug::QGrpcChannelOptions&)::<lambda(Debug::QAbstractSocket::SocketError)> >::call(Debug::QGrpcHttp2ChannelPrivate::QGrpcHttp2ChannelPrivate(const Debug::QUrl&, cons
      t Debug::QGrpcChannelOptions&)::<lambda(Debug::QAbstractSocket::SocketError)>&, void**)::<lambda()> > /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qobjectdefs_impl.h:72
          #6 0x78ac4b27d7a7 in call /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qobjectdefs_impl.h:141
          #7 0x78ac4b27b28d in call<Debug::QtPrivate::List<Debug::QAbstractSocket::SocketError>, void> /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qobjectdefs_impl.h:363
          #8 0x78ac4b27a32d in impl /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qobjectdefs_impl.h:573
          #9 0x78ac48c0645a in Debug::QtPrivate::QSlotObjectBase::call(Debug::QObject*, void**) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qobjectdefs_impl.h:487
          #10 0x78ac48cabc50 in void Debug::doActivate<false>(Debug::QObject*, int, void**) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qobject.cpp:4113
          #11 0x78ac48c9fbf1 in Debug::QMetaObject::activate(Debug::QObject*, Debug::QMetaObject const*, int, void**) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qobject.cpp:4173
          #12 0x78ac4ad459d6 in Debug::QAbstractSocket::errorOccurred(Debug::QAbstractSocket::SocketError) /home/qtwayn/Qt/qt6/build/debug/qtbase/src/network/Network_autogen/include/moc_qabstractsocket.cpp:407
          #13 0x78ac4ad41928 in Debug::QAbstractSocketPrivate::setErrorAndEmit(Debug::QAbstractSocket::SocketError, Debug::QString const&) /home/qtwayn/Qt/qt6/qtbase/src/network/socket/qabstractsocket.cpp:1381
          #14 0x78ac4ad4100c in Debug::QAbstractSocketPrivate::readFromSocket() /home/qtwayn/Qt/qt6/qtbase/src/network/socket/qabstractsocket.cpp:1202
          #15 0x78ac4ad3f7b8 in Debug::QAbstractSocketPrivate::canReadNotification() /home/qtwayn/Qt/qt6/qtbase/src/network/socket/qabstractsocket.cpp:626
          #16 0x78ac4ad4649a in Debug::QAbstractSocketPrivate::readNotification() /home/qtwayn/Qt/qt6/qtbase/src/network/socket/qabstractsocket_p.h:39
          #17 0x78ac4ad4a1b6 in Debug::QAbstractSocketEngine::readNotification() /home/qtwayn/Qt/qt6/qtbase/src/network/socket/qabstractsocketengine.cpp:120
          #18 0x78ac4ad50a25 in Debug::QReadNotifier::event(Debug::QEvent*) /home/qtwayn/Qt/qt6/qtbase/src/network/socket/qnativesocketengine.cpp:1238
          #19 0x78ac48bfe61d in Debug::QCoreApplicationPrivate::notify_helper(Debug::QObject*, Debug::QEvent*) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qcoreapplication.cpp:1328
          #20 0x78ac48bfe183 in doNotify /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qcoreapplication.cpp:1255
          #21 0x78ac48bfe0b7 in Debug::QCoreApplication::notify(Debug::QObject*, Debug::QEvent*) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qcoreapplication.cpp:1238
          #22 0x78ac48bfdf83 in Debug::QCoreApplication::notifyInternal2(Debug::QObject*, Debug::QEvent*) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qcoreapplication.cpp:1154
          #23 0x78ac48bfed4c in Debug::QCoreApplication::sendEvent(Debug::QObject*, Debug::QEvent*) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qcoreapplication.cpp:1598
          #24 0x78ac490c1a87 in socketNotifierSourceDispatch /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:76
          #25 0x78ac4890ea88  (/usr/lib/libglib-2.0.so.0+0x5ca88) (BuildId: 8880230af7e37f2edbd90b79170aead80dde617a)
          #26 0x78ac489709b6  (/usr/lib/libglib-2.0.so.0+0xbe9b6) (BuildId: 8880230af7e37f2edbd90b79170aead80dde617a)
          #27 0x78ac4890df94 in g_main_context_iteration (/usr/lib/libglib-2.0.so.0+0x5bf94) (BuildId: 8880230af7e37f2edbd90b79170aead80dde617a)
          #28 0x78ac490c2a2f in Debug::QEventDispatcherGlib::processEvents(Debug::QFlags<Debug::QEventLoop::ProcessEventsFlag>) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:395
          #29 0x78ac48bfe7d2 in Debug::QCoreApplication::processEvents(Debug::QFlags<Debug::QEventLoop::ProcessEventsFlag>, Debug::QDeadlineTimer) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qcoreapplication.cpp:1444
          #30 0x78ac48cceae5 in Debug::QTest::qWait(std::chrono::duration<long, std::ratio<1l, 1000l> >) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qtestsupport_core.cpp:127
          #31 0x78ac48ccea34 in Debug::QTest::qWait(int) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qtestsupport_core.cpp:94
          #32 0x566e5f55ea0e in QtGrpcClientUnaryCallTest::deferredCancel() /home/qtwayn/Qt/qt6/qtgrpc/tests/auto/grpc/client/unarycall/tst_grpc_client_unarycall.cpp:113
          #33 0x566e5f56c2d7 in QtGrpcClientUnaryCallTest::qt_static_metacall(Debug::QObject*, Debug::QMetaObject::Call, int, void**) /home/qtwayn/Qt/qt6/qtgrpc/build/debug/tests/auto/grpc/client/unarycall/tst_grpc_clie
      nt_unarycall_autogen/include/tst_grpc_client_unarycall.moc:127
          #34 0x78ac48c23b86 in Debug::QMetaMethodInvoker::invokeImpl(Debug::QMetaMethod, void*, Debug::Qt::ConnectionType, long long, void const* const*, char const* const*, Debug::QtPrivate::QMetaTypeInterface constconst*) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qmetaobject.cpp:2755
          #35 0x78ac48c22d64 in Debug::QMetaMethod::invokeImpl(Debug::QMetaMethod, void*, Debug::Qt::ConnectionType, long long, void const* const*, char const* const*, Debug::QtPrivate::QMetaTypeInterface const* const*)
       /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qmetaobject.cpp:2594
          #36 0x78ac4c58897d in std::enable_if<!std::disjunction<>::value, bool>::type Debug::QMetaMethod::invoke<void>(Debug::QObject*, Debug::Qt::ConnectionType, Debug::QTemplatedMetaMethodReturnArgument<void>) const 
      /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qmetaobject.h:149
          #37 0x78ac4c58637f in std::enable_if<!std::disjunction<>::value, bool>::type Debug::QMetaMethod::invoke<>(Debug::QObject*, Debug::Qt::ConnectionType) const /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qmetaob
      ject.h:161
          #38 0x78ac4c576ee2 in invokeTestMethodIfValid /home/qtwayn/Qt/qt6/qtbase/src/testlib/qtestcase.cpp:448
          #39 0x78ac4c57997b in Debug::QTest::TestMethods::invokeTestOnData(int) const /home/qtwayn/Qt/qt6/qtbase/src/testlib/qtestcase.cpp:1086
          #40 0x78ac4c57a835 in Debug::QTest::TestMethods::invokeTest(int, Debug::QLatin1String, std::optional<Debug::QTest::WatchDog>&) const /home/qtwayn/Qt/qt6/qtbase/src/testlib/qtestcase.cpp:1388
          #41 0x78ac4c57bc55 in Debug::QTest::TestMethods::invokeTests(Debug::QObject*) const /home/qtwayn/Qt/qt6/qtbase/src/testlib/qtestcase.cpp:1725
          #42 0x78ac4c57c7fd in Debug::QTest::qRun() /home/qtwayn/Qt/qt6/qtbase/src/testlib/qtestcase.cpp:1949
          #43 0x78ac4c57bf5c in Debug::QTest::qExec(Debug::QObject*, int, char**) /home/qtwayn/Qt/qt6/qtbase/src/testlib/qtestcase.cpp:1827
          #44 0x566e5f56ba89 in main /home/qtwayn/Qt/qt6/qtgrpc/tests/auto/grpc/client/unarycall/tst_grpc_client_unarycall.cpp:231
          #45 0x78ac47c39c87  (/usr/lib/libc.so.6+0x25c87) (BuildId: 32a656aa5562eece8c59a585f5eacd6cf5e2307b)
          #46 0x78ac47c39d4b in __libc_start_main (/usr/lib/libc.so.6+0x25d4b) (BuildId: 32a656aa5562eece8c59a585f5eacd6cf5e2307b)
          #47 0x566e5f558f54 in _start (/home/qtwayn/Qt/qt6/qtgrpc/build/debug/tests/auto/grpc/client/unarycall/tst_grpc_client_unarycall+0x100f54) (BuildId: 98074c0ebfbdfdbff748822c4d0120ead912bb7f)0x50e000026bc0 is located 0 bytes inside of 160-byte region [0x50e000026bc0,0x50e000026c60)
      freed by thread T0 here:
          #0 0x78ac4befe7e2 in operator delete(void*, unsigned long) /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_new_delete.cpp:164
          #1 0x78ac4b257aac in Debug::QGrpcHttp2ChannelPrivate::Http2Handler::~Http2Handler() /home/qtwayn/Qt/qt6/qtgrpc/src/grpc/qgrpchttp2channel.cpp:274
          #2 0x78ac4b270af3 in Debug::QGrpcHttp2ChannelPrivate::createHttp2Connection() /home/qtwayn/Qt/qt6/qtgrpc/src/grpc/qgrpchttp2channel.cpp:784
          #3 0x78ac4b2cc8ed in Debug::QtPrivate::FunctorCall<Debug::QtPrivate::IndexesList<>, Debug::QtPrivate::List<>, void, void (Debug::QGrpcHttp2ChannelPrivate::*)()>::call(void (Debug::QGrpcHttp2ChannelPrivate::*)(
      ), Debug::QGrpcHttp2ChannelPrivate*, void**)::{lambda()#1}::operator()() const /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qobjectdefs_impl.h:153
          #4 0x78ac4b2d0ba9 in void Debug::QtPrivate::FunctorCallBase::call_internal<void, Debug::QtPrivate::FunctorCall<Debug::QtPrivate::IndexesList<>, Debug::QtPrivate::List<>, void, void (Debug::QGrpcHttp2ChannelPri
      vate::*)()>::call(void (Debug::QGrpcHttp2ChannelPrivate::*)(), Debug::QGrpcHttp2ChannelPrivate*, void**)::{lambda()#1}>(void**, Debug::QtPrivate::FunctorCall<Debug::QtPrivate::IndexesList<>, Debug::QtPrivate::List
      <>, void, void (Debug::QGrpcHttp2ChannelPrivate::*)()>::call(void (Debug::QGrpcHttp2ChannelPrivate::*)(), Debug::QGrpcHttp2ChannelPrivate*, void**)::{lambda()#1}&&) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qo
      bjectdefs_impl.h:72
          #5 0x78ac4b2ccaf1 in Debug::QtPrivate::FunctorCall<Debug::QtPrivate::IndexesList<>, Debug::QtPrivate::List<>, void, void (Debug::QGrpcHttp2ChannelPrivate::*)()>::call(void (Debug::QGrpcHttp2ChannelPrivate::*)(
      ), Debug::QGrpcHttp2ChannelPrivate*, void**) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qobjectdefs_impl.h:152
          #6 0x78ac4b2c3e16 in void Debug::QtPrivate::FunctionPointer<void (Debug::QGrpcHttp2ChannelPrivate::*)()>::call<Debug::QtPrivate::List<>, void>(void (Debug::QGrpcHttp2ChannelPrivate::*)(), Debug::QGrpcHttp2Chan
      nelPrivate*, void**) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qobjectdefs_impl.h:200
          #7 0x78ac4b2b9194 in Debug::QtPrivate::QCallableObject<void (Debug::QGrpcHttp2ChannelPrivate::*)(), Debug::QtPrivate::List<>, void>::impl(int, Debug::QtPrivate::QSlotObjectBase*, Debug::QObject*, void**, bool*
      ) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qobjectdefs_impl.h:571
          #8 0x78ac48c0645a in Debug::QtPrivate::QSlotObjectBase::call(Debug::QObject*, void**) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qobjectdefs_impl.h:487
          #9 0x78ac48cabc50 in void Debug::doActivate<false>(Debug::QObject*, int, void**) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qobject.cpp:4113
          #10 0x78ac48c9fbf1 in Debug::QMetaObject::activate(Debug::QObject*, Debug::QMetaObject const*, int, void**) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qobject.cpp:4173
          #11 0x78ac4ad458ca in Debug::QAbstractSocket::connected() /home/qtwayn/Qt/qt6/build/debug/qtbase/src/network/Network_autogen/include/moc_qabstractsocket.cpp:387
          #12 0x78ac4ad414fb in Debug::QAbstractSocketPrivate::fetchConnectionParameters() /home/qtwayn/Qt/qt6/qtbase/src/network/socket/qabstractsocket.cpp:1281
          #13 0x78ac4ad40afb in Debug::QAbstractSocketPrivate::_q_testConnection() /home/qtwayn/Qt/qt6/qtbase/src/network/socket/qabstractsocket.cpp:1094
          #14 0x78ac4ad3fab6 in Debug::QAbstractSocketPrivate::connectionNotification() /home/qtwayn/Qt/qt6/qtbase/src/network/socket/qabstractsocket.cpp:738
          #15 0x78ac4ad4a30e in Debug::QAbstractSocketEngine::connectionNotification() /home/qtwayn/Qt/qt6/qtbase/src/network/socket/qabstractsocketengine.cpp:144
          #16 0x78ac4ad4ecd6 in Debug::QNativeSocketEngine::connectionNotification() /home/qtwayn/Qt/qt6/qtbase/src/network/socket/qnativesocketengine.cpp:597
          #17 0x78ac4ad50ac5 in Debug::QWriteNotifier::event(Debug::QEvent*) /home/qtwayn/Qt/qt6/qtbase/src/network/socket/qnativesocketengine.cpp:1271
          #18 0x78ac48bfe61d in Debug::QCoreApplicationPrivate::notify_helper(Debug::QObject*, Debug::QEvent*) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qcoreapplication.cpp:1328
          #19 0x78ac48bfe183 in doNotify /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qcoreapplication.cpp:1255
          #20 0x78ac48bfe0b7 in Debug::QCoreApplication::notify(Debug::QObject*, Debug::QEvent*) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qcoreapplication.cpp:1238
          #21 0x78ac48bfdf83 in Debug::QCoreApplication::notifyInternal2(Debug::QObject*, Debug::QEvent*) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qcoreapplication.cpp:1154
          #22 0x78ac48bfed4c in Debug::QCoreApplication::sendEvent(Debug::QObject*, Debug::QEvent*) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qcoreapplication.cpp:1598
          #23 0x78ac490c1a87 in socketNotifierSourceDispatch /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:76
          #24 0x78ac4890ea88  (/usr/lib/libglib-2.0.so.0+0x5ca88) (BuildId: 8880230af7e37f2edbd90b79170aead80dde617a)
          #25 0x78ac489709b6  (/usr/lib/libglib-2.0.so.0+0xbe9b6) (BuildId: 8880230af7e37f2edbd90b79170aead80dde617a)
          #26 0x78ac4890df94 in g_main_context_iteration (/usr/lib/libglib-2.0.so.0+0x5bf94) (BuildId: 8880230af7e37f2edbd90b79170aead80dde617a)
          #27 0x78ac490c2a2f in Debug::QEventDispatcherGlib::processEvents(Debug::QFlags<Debug::QEventLoop::ProcessEventsFlag>) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:395
          #28 0x78ac48bfe7d2 in Debug::QCoreApplication::processEvents(Debug::QFlags<Debug::QEventLoop::ProcessEventsFlag>, Debug::QDeadlineTimer) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qcoreapplication.cpp:1444
          #29 0x78ac48cceae5 in Debug::QTest::qWait(std::chrono::duration<long, std::ratio<1l, 1000l> >) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qtestsupport_core.cpp:127previously allocated by thread T0 here:
          #0 0x78ac4befd682 in operator new(unsigned long) /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_new_delete.cpp:95
          #1 0x78ac4b26eefe in Debug::QGrpcHttp2ChannelPrivate::processOperation(std::shared_ptr<Debug::QGrpcOperationContext> const&, bool) /home/qtwayn/Qt/qt6/qtgrpc/src/grpc/qgrpchttp2channel.cpp:753
          #2 0x78ac4b2735df in Debug::QGrpcHttp2Channel::call(std::shared_ptr<Debug::QGrpcOperationContext>) /home/qtwayn/Qt/qt6/qtgrpc/src/grpc/qgrpchttp2channel.cpp:875
          #3 0x78ac4b244b31 in Debug::QAbstractGrpcChannel::call(Debug::QLatin1String, Debug::QLatin1String, Debug::QByteArrayView, Debug::QGrpcCallOptions const&) /home/qtwayn/Qt/qt6/qtgrpc/src/grpc/qabstractgrpcchanne
      l.cpp:141
          #4 0x78ac4b2d8ae3 in Debug::QGrpcClientBase::call(Debug::QLatin1String, Debug::QProtobufMessage const&, Debug::QGrpcCallOptions const&) /home/qtwayn/Qt/qt6/qtgrpc/src/grpc/qgrpcclientbase.cpp:210
          #5 0x78ac4b98e17b in qtgrpc::tests::TestService::Client::testMethod(qtgrpc::tests::SimpleStringMessage const&, Debug::QGrpcCallOptions const&) /home/qtwayn/Qt/qt6/qtgrpc/build/debug/tests/auto/grpc/client/shar
      ed/client_service/qt_grpc_generated/testservice_client.grpc.qpb.cpp:17
          #6 0x566e5f55b129 in QtGrpcClientUnaryCallTest::immediateCancel() /home/qtwayn/Qt/qt6/qtgrpc/tests/auto/grpc/client/unarycall/tst_grpc_client_unarycall.cpp:80
          #7 0x566e5f56c1d7 in QtGrpcClientUnaryCallTest::qt_static_metacall(Debug::QObject*, Debug::QMetaObject::Call, int, void**) /home/qtwayn/Qt/qt6/qtgrpc/build/debug/tests/auto/grpc/client/unarycall/tst_grpc_clien
      t_unarycall_autogen/include/tst_grpc_client_unarycall.moc:126
          #8 0x78ac48c23b86 in Debug::QMetaMethodInvoker::invokeImpl(Debug::QMetaMethod, void*, Debug::Qt::ConnectionType, long long, void const* const*, char const* const*, Debug::QtPrivate::QMetaTypeInterface const* c
      onst*) /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qmetaobject.cpp:2755
          #9 0x78ac48c22d64 in Debug::QMetaMethod::invokeImpl(Debug::QMetaMethod, void*, Debug::Qt::ConnectionType, long long, void const* const*, char const* const*, Debug::QtPrivate::QMetaTypeInterface const* const*) 
      /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qmetaobject.cpp:2594
          #10 0x78ac4c58897d in std::enable_if<!std::disjunction<>::value, bool>::type Debug::QMetaMethod::invoke<void>(Debug::QObject*, Debug::Qt::ConnectionType, Debug::QTemplatedMetaMethodReturnArgument<void>) const 
      /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qmetaobject.h:149
          #11 0x78ac4c58637f in std::enable_if<!std::disjunction<>::value, bool>::type Debug::QMetaMethod::invoke<>(Debug::QObject*, Debug::Qt::ConnectionType) const /home/qtwayn/Qt/qt6/qtbase/src/corelib/kernel/qmetaob
      ject.h:161
          #12 0x78ac4c576ee2 in invokeTestMethodIfValid /home/qtwayn/Qt/qt6/qtbase/src/testlib/qtestcase.cpp:448
          #13 0x78ac4c57997b in Debug::QTest::TestMethods::invokeTestOnData(int) const /home/qtwayn/Qt/qt6/qtbase/src/testlib/qtestcase.cpp:1086
          #14 0x78ac4c57a835 in Debug::QTest::TestMethods::invokeTest(int, Debug::QLatin1String, std::optional<Debug::QTest::WatchDog>&) const /home/qtwayn/Qt/qt6/qtbase/src/testlib/qtestcase.cpp:1388
          #15 0x78ac4c57bc55 in Debug::QTest::TestMethods::invokeTests(Debug::QObject*) const /home/qtwayn/Qt/qt6/qtbase/src/testlib/qtestcase.cpp:1725
          #16 0x78ac4c57c7fd in Debug::QTest::qRun() /home/qtwayn/Qt/qt6/qtbase/src/testlib/qtestcase.cpp:1949
          #17 0x78ac4c57bf5c in Debug::QTest::qExec(Debug::QObject*, int, char**) /home/qtwayn/Qt/qt6/qtbase/src/testlib/qtestcase.cpp:1827
          #18 0x566e5f56ba89 in main /home/qtwayn/Qt/qt6/qtgrpc/tests/auto/grpc/client/unarycall/tst_grpc_client_unarycall.cpp:231
          #19 0x78ac47c39c87  (/usr/lib/libc.so.6+0x25c87) (BuildId: 32a656aa5562eece8c59a585f5eacd6cf5e2307b)
          #20 0x78ac47c39d4b in __libc_start_main (/usr/lib/libc.so.6+0x25d4b) (BuildId: 32a656aa5562eece8c59a585f5eacd6cf5e2307b)
          #21 0x566e5f558f54 in _start (/home/qtwayn/Qt/qt6/qtgrpc/build/debug/tests/auto/grpc/client/unarycall/tst_grpc_client_unarycall+0x100f54) (BuildId: 98074c0ebfbdfdbff748822c4d0120ead912bb7f)SUMMARY: AddressSanitizer: heap-use-after-free (/home/qtwayn/Qt/qt6/build/debug/qtbase/lib/libQt6Grpc.so.6+0x29f222) (BuildId: c4fbe4a6f75f3a8dc7981acc233ad034558970a5) in void Debug::qDeleteAll<Debug::QList<Debug
      ::QGrpcHttp2ChannelPrivate::Http2Handler*>::const_iterator>(Debug::QList<Debug::QGrpcHttp2ChannelPrivate::Http2Handler*>::const_iterator, Debug::QList<Debug::QGrpcHttp2ChannelPrivate::Http2Handler*>::const_iterato
      r)
      Shadow bytes around the buggy address:
        0x50e000026900: fa fa fa fa fd fd fd fd fd fd fd fd fd fd fd fd
        0x50e000026980: fd fd fd fd fd fd fd fd fa fa fa fa fa fa fa fa
        0x50e000026a00: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
        0x50e000026a80: fd fd fd fd fa fa fa fa fa fa fa fa fd fd fd fd
        0x50e000026b00: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
      =>0x50e000026b80: fa fa fa fa fa fa fa fa[fd]fd fd fd fd fd fd fd
        0x50e000026c00: fd fd fd fd fd fd fd fd fd fd fd fd fa fa fa fa
        0x50e000026c80: fa fa fa fa fd fd fd fd fd fd fd fd fd fd fd fd
        0x50e000026d00: fd fd fd fd fd fd fd fd fa fa fa fa fa fa fa fa
        0x50e000026d80: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
        0x50e000026e00: fd fd fd fd fa fa fa fa fa fa fa fa fd fd fd fd
      Shadow byte legend (one shadow byte represents 8 application bytes):
        Addressable:           00
        Partially addressable: 01 02 03 04 05 06 07 
        Heap left redzone:       fa
        Freed heap region:       fd
        Stack left redzone:      f1
        Stack mid redzone:       f2
        Stack right redzone:     f3
        Stack after return:      f5
        Stack use after scope:   f8
        Global redzone:          f9
        Global init order:       f6
        Poisoned by user:        f7
        Container overflow:      fc
        Array cookie:            ac
        Intra object redzone:    bb
        ASan internal:           fe
        Left alloca redzone:     ca
        Right alloca redzone:    cb
      ==38142==ABORTING[Process exited 1] 

      Attachments

        Issue Links

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

          Activity

            People

              dennisoberst Dennis Oberst
              dennisoberst Dennis Oberst
              Vladimir Minenko Vladimir Minenko
              Alex Blasche Alex Blasche
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:

                Gerrit Reviews

                  There are no open Gerrit changes