tibirna / qgit

Official git repository for QGit.
Other
171 stars 66 forks source link

qgit-2.9 deadlocks with 100% cpu usage when selecting a commit with many files changed #109

Closed triffid closed 3 years ago

triffid commented 3 years ago

.. such as merge commits.

qgit-2.9, Qt 5.15.1

gdb backtrace:

(gdb) bt
#0  0x00007fad81f693bd in ?? () from /usr/lib64/libQt5Gui.so.5
#1  0x00007fad81f72377 in ?? () from /usr/lib64/libQt5Gui.so.5
#2  0x00007fad81f73cd3 in ?? () from /usr/lib64/libQt5Gui.so.5
#3  0x00007fad81f7ae2c in ?? () from /usr/lib64/libQt5Gui.so.5
#4  0x00007fad81f7b3fc in ?? () from /usr/lib64/libQt5Gui.so.5
#5  0x00007fad81f7bc98 in QTextDocumentLayout::doLayout(int, int, int) () from /usr/lib64/libQt5Gui.so.5
#6  0x00007fad81f7bd68 in ?? () from /usr/lib64/libQt5Gui.so.5
#7  0x00007fad81f7c531 in ?? () from /usr/lib64/libQt5Gui.so.5
#8  0x00007fad81a62c65 in QObject::event(QEvent*) () from /usr/lib64/libQt5Core.so.5
#9  0x00007fad82488d7f in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#10 0x00007fad82491a30 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#11 0x00007fad81a37307 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib64/libQt5Core.so.5
#12 0x00007fad81a8bcf8 in QTimerInfoList::activateTimers() () from /usr/lib64/libQt5Core.so.5
#13 0x00007fad81a8c5bc in ?? () from /usr/lib64/libQt5Core.so.5
#14 0x00007fad809eb887 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#15 0x00007fad809ebb10 in ?? () from /usr/lib64/libglib-2.0.so.0
#16 0x00007fad809ebb9f in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#17 0x00007fad81a8ca0d in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Core.so.5
#18 0x00007fad81a36133 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Core.so.5
#19 0x00007fad81a3e090 in QCoreApplication::exec() () from /usr/lib64/libQt5Core.so.5
#20 0x00005566e72a607e in main ()
tibirna commented 3 years ago

Thanks for the report.

The backtrace is not usable because the libraries were missing debug symbols.

The report doesn't include details for reproducibility. Qgit is fairly used, so a "simple" situation of large number of files in a (merge) commit causing a crash would have a good chance of occurring frequently. I guess the crash is caused by something specific in the commit.

By the fact that there is no frame (apart from the first, main() ) in the reported stacktrace coming from qgit, I would also guess this crash can be caused by miscompilation or use of incorrect libraries.

Please consider determining reproducible steps.