Please nominate your Qt Champions for 2021!

Debugging a crash in libQtDeclarative (Qt 4.8.1)

  • Dear all,

    I'm in a desperate situation currently, trying to debug a crash of my application which is seemingly caused within the qt declarative module.
    The crash always happens at the same point, when relatively many C++-Models (ListModels, QList's and single property) trigger an update. Unfortunately I can not reliably trigger the crash, as it seems to happen after some initial interaction, often followed by some time (10-30mins) of inactivity.

    It would be fantastic if someone who had a similar problem could give my some hints on debugging the problem.

    At the moment, all I got is the following backtrace which seems useless:

    #0 0x00007f8f3ca38f1e in ?? () from [...]/
    #1 0x00007f8f3ca3a48c in ?? () from [...]/
    #2 0x00007f8f3ca3b48c in ?? () from [...]/
    #3 0x00007f8f3ca3bdbb in ?? () from [...]/
    #4 0x00007f8f3c05bc7e in ?? () from [...]/
    #5 0x00007f8f3bf528e0 in ?? () from [...]/
    #6 0x00007f8f3bf2cb17 in ?? () from [...]/
    #7 0x00007f8f3433e330 in ?? ()
    #8 0x0000000000000002 in ?? () at gtest-1.6.0/include/gtest/gtest.h:172
    #9 0x00007f8f2e5f2d40 in ?? ()
    #10 0x00007f8f0000000b in ?? ()
    #11 0x00007f8f00000002 in ?? ()
    #12 0x000000000644c430 in ?? ()
    #13 0x000000000000000f in ?? () at gtest-1.6.0/include/gtest/internal/gtest-port.h:1350
    #14 0x0000000000000005 in ?? () at gtest-1.6.0/include/gtest/internal/gtest-port.h:1288
    #15 0x0000000000000000 in ?? ()

    Thanks in advance

  • I just wanted to inform you guys about the solution to my problem.

    In summary, the problem seemed to be a C++ / QML-engine interfacing and memory management issue:

    I was lucky enough to identify a small set of candidate revisions of the software which potentially caused the described behavior. In these changes, there was noticeable that in the QML/Javascript code there was a lot of manual fiddling with list models. For example, specific list-model entries (provided by the C++ core) were accessed via ListModel.get(), and they were in turn stored as static property values. I assumed that this is dangerous because as soon as the C++ core deletes the list model entries, it is not guaranteed that the references stored within the QML engine are properly cleared.

    Therefore, I modified this part of the implementation, and suddenly the application was running perfectly stable again.

Log in to reply