Bug 427395 - A custom application using Qt and Phonon (but not KDE) sometimes crashes in Phonon code upon exit
Summary: A custom application using Qt and Phonon (but not KDE) sometimes crashes in P...
Status: RESOLVED UNMAINTAINED
Alias: None
Product: phonon-backend-gstreamer
Classification: Unmaintained
Component: general (show other bugs)
Version: unspecified
Platform: RedHat Enterprise Linux Linux
: NOR crash
Target Milestone: 4.8
Assignee: Daniel Vrátil
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-10-06 18:27 UTC by lthode
Modified: 2020-11-01 12:31 UTC (History)
4 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments
Backtrace of the crash (all threads, very mildly redacted to protect the innocent) (17.27 KB, text/plain)
2020-10-06 18:27 UTC, lthode
Details

Note You need to log in before you can comment on or make changes to this bug.
Description lthode 2020-10-06 18:27:03 UTC
Created attachment 132153 [details]
Backtrace of the crash (all threads, very mildly redacted to protect the innocent)

SUMMARY
A custom business application I am working on sometimes crashes (segfaults) on exit with a backtrace that points at an issue within Phonon.  While the application does not crash in a reproducible fashion, the backtraces appear quite similar to those reported in bug #321531 and friends where Digikam was crashing when it attemped to play back AVI media.  The application in question runs on CentOS 7.7.1908 (x86-64) using Phonon 4.6.0, Phonon-GStreamer 4.6.3, and Qt 4.8.7.

An all-threads backtrace, taken from a coredump, is attached.  If you want further symbol information than what's provided, I can install more symbols and reinvestigate the coredump; if you want any other information, just ask here in a comment.
Comment 1 lthode 2020-10-06 18:35:56 UTC
My investigation of the issue pointed me at a bad metaObject within the devnull NoDebugStream (derived from QIODevice).  Following that trail to gstreamer/debug_p.h led me to notice that the Q_OBJECT macro in NoDebugStream's definition is commented out (in master, even!), which looks wrong since QIODevice is a QObject in the normal case (the only way it isn't is if QT_NO_QOBJECT is defined when qiodevice.h is #included).  Is there a good reason for NoDebugStream to be defined the way it is, or am I onto something here?  (NB: https://marcmutz.wordpress.com/effective-qt/subclassing/ seems to agree with what I am seeing that Q_OBJECT should have been there all along...)
Comment 2 lthode 2020-10-06 18:41:43 UTC
A bit of a clarification on the investigation -- the bogus metaObject I mentioned stems from the QObject::d pointer within devnull being nullptr (zero-initialized, most likely).
Comment 3 Christoph Feck 2020-11-01 12:31:32 UTC
Qt4 is long unmaintained.