Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Help,coredump analyze



  • thanks for attention,here i has a problem with my desktop application . when i use "windbg" to analyze the MiniDump File , I got the informations as follows :
    0:000> kb
    *** Stack trace for last set context - .thread/.cxr resets it
    ChildEBP RetAddr Args to Child
    WARNING: Stack unwind information not available. Following frames may be wrong.
    00189228 003aee7d 00189234 00430020 006e0061 Qt5Core!QString::QString+0x18
    00189270 00354da1 994731d4 00000000 0000002a MyApp!MyAppCommand::addMMList+0xcd
    001892ac 00354487 0b9154f8 00000000 0000002a MyApp!MyAppCommand::qt_static_metacall+0x731
    001892d0 56e64f68 00000000 0000002f 0018931c MyApp!MyAppCommand::qt_metacall+0x37
    00000000 00000000 00000000 00000000 00000000 Qt5Core!QMetaObject::metacall+0x28
    0:000> r
    Last set context:
    eax=00000001 ebx=0b9154f8 ecx=00189234 edx=00430020 esi=160cf6c8 edi=0782e5d0
    eip=56d1b9c8 esp=0018921c ebp=00189228 iopl=0 nv up ei pl nz na pe cy
    cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010207
    Qt5Core!QString::QString+0x18:
    56d1b9c8 f00fc102 lock xadd dword ptr [edx],eax ds:0023:00430020=45c743ff

    it seems that something is wrong when i use QString class.
    NOTE : The problem is NOT repeatable.

    source code are as follows:

    void MyAppCommand::addMMList()
    {
    	//m_selecltedList is a QMap<QString,AddrInfo*>
        foreach(AddrInfo* paddrInfo,m_selecltedList)
        {
            if(paddrInfo == NULL)
            {
               LOG(INFO)<<"paddrInfo is NULL in MyAppCommand::addMMList";
               return;
            }
            MMediaCommand* mMediaCommand = MMediaCommand::creatMMediaCommClass();
    //Q_INVOKABLE void addToMMediaList(QString name,QString uid, QString utype,int repeaterId,QString repeaterName,int slot);
            mMediaCommand->addToMMediaList(paddrInfo->name(),paddrInfo->uid(), paddrInfo->utype(),
                                           paddrInfo->repeaterId(),paddrInfo->repeaterName(),paddrInfo->slot());
    //QString MMediaCommand::showChatPageNew(QString uid,QString name,QString utype,int repeaterId,QString repeaterName,int tmpSlot)
            mMediaCommand->showChatPageNew(paddrInfo->uid(),paddrInfo->name(),paddrInfo->utype(),
                                           paddrInfo->repeaterId(),paddrInfo->repeaterName(),paddrInfo->slot());
        }
    }
    

    Thanks.


  • Qt Champions 2017

    It could be as simple as your QString may be null. Just check all the QString values. If you comment addToMMediaList or showChatPageNew does it work without a crash ?



  • @dheerendra
    I have tried to set all the QString-args to NULL(Args check is done in addToMMediaList and showChatPageNew ) , and it does not dump . By the way , the problem is not repeatable .
    Is there any useful informations in the windbg output ?


  • Qt Champions 2017

    Yes it is very random & my usual suspect is QString variables only. You should opt some work-around for these QString variables.


Log in to reply