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

symbian bearer plugin crashes on exit

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: P1: Critical P1: Critical
    • 4.7.2
    • 4.7.2
    • None
    • S60 5.0 (Nokia 5800 4.0.001RND)
    •  66cfe2a776b7542fe1d8bae9c0d7bb5be79406fd

      When the bearer engine is used, the application crashes inside QCoreApplication destructor.
      This can be reproduced 100% with the tst_qnetworkaccessmanager autotest (the test records a pass in the log and then crashes)

      Root cause is that objects inside the bearer plugin are destroyed in the wrong order.
      First a connection is closed, and then an asynchronous request on that connection is cancelled resulting in KERN-EXEC 0 (bad handle) panic.
      This appears to be because the plugin is using QObject parent-child relationship to handle cleanup.
      The parent object owns the session, but the child owns the asynchronous request.

      Probably this can be solved by explicitly cancelling all children in the parent's destructor before closing the session.

      Stack trace:
      00416dcc 790cf73d =..y 000d symbianengine.o(.text) AccessPointsAvailabilityScanner::DoCancel()
      00416ddc 790cf65d ]..y 000f symbianengine.o(.text) AccessPointsAvailabilityScanner::~AccessPointsAvailabilityScanner()
      00416de4 790cf675 u..y 000f symbianengine.o(.text) AccessPointsAvailabilityScanner::~AccessPointsAvailabilityScanner__deallocating()
      00416df4 790cc8a7 ...y 0045 symbianengine.o(.text) SymbianEngine::~SymbianEngine()
      00416e04 790cc8f9 ...y 000f symbianengine.o(.text) SymbianEngine::~SymbianEngine__deallocating()
      00416e14 79596fc9 .oYy 001f qnetworkconfigmanager_p.o(t.Z10qDeleteAllIN5QListIP13QBearerEngineE14const_iteratorEEvT_S5) qDeleteAll<QList<QBearerEngine*>::const_iterator>(T1, T1)
      00416e24 795647b7 .GVy 003f qnetworkconfigmanager_p.o(.text) QNetworkConfigurationManagerPrivate::~QNetworkConfigurationManagerPrivate()
      00416e44 79564815 .HVy 000f qnetworkconfigmanager_p.o(.text) QNetworkConfigurationManagerPrivate::~QNetworkConfigurationManagerPrivate__deallocating()
      00416e5c 79416dfd .mAy 00a3 qcoreapplication.o(.text) qt_call_post_routines()
      00416e7c 79417b41 A{Ay 000d qcoreapplication.o(.text) QCoreApplication::~QCoreApplication()
      00416e90 7952beac ..Ry 0008 qobject.o(.constdata__ZTV7QObject) vtable for QObject
      00416e98 7952ac38 8.Ry 0008 moc_qcoreapplication.o(.constdata__ZTV16QCoreApplication) vtable for QCoreApplication
      00416f4c 793deb00 ..=y 009c heap_hybrid.o(.text) UserHeap::CreateThreadHeap(SStdEpocThreadCreateInfo&, RHeap*&, int, int)
      00416f74 793e4008 .@>y qt_heapsetup_symbian.o(.text) qt_symbian_SetupThreadHeap(int, SStdEpocThreadCreateInfo&)

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

            jasmcdon Jason McDonald (Closed Nokia Identity. Please assign to "macadder" instead) (Inactive)
            shkearns Shane Kearns
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:

                There are no open Gerrit changes