MythTV / mythtv

The official MythTV repository
https://www.mythtv.org
GNU General Public License v2.0
701 stars 346 forks source link

Qt6: Current master segfaults on qt-xcb(x11) and qt-wayland qpa on Qt6.4+ #754

Open warpme opened 1 year ago

warpme commented 1 year ago

What steps will reproduce the bug?

Build myth-master on system with Qt6 newer than 6.3 and run mythtv with drawing to x11 or wayland. Drawing to eglfs qpa works ok. As issue:

  1. starts to happen only when Qt6 is newer than 6.3
  2. Verification of relevant qt6 dependencies looks ok (libs vers. verified with documentation; no any warnings from Qt configure)
  3. all version newer than 6.3 (6.4.0 from 7 moths ago) are failing - I don't believe it is 7+ months long-standing Qt6 bug. I suspect issue might be rather related to i.e. https://doc.qt.io/qt-6/opengl-changes-qt6.html starting to manifetst incompatibility between mythtv OpenGL code and Qt6 current OpenGL support?

How often does it reproduce? Is there a required condition?

always

What is the expected behaviour?

correct operation on Qt6.4 and Qt6.5

What do you see instead?

Qt 6.5.0 with drawing to X11 gives me segfault like this: https://gist.github.com/warpme/95abdde87d468ce8cf4bb2416159e6d4

The same binaries (qt6, mythtv) are working ok with drawing to eglfs. (https://gist.github.com/warpme/cdc7e9a23bca4cb10c0433d880cc288d).

Additional information

I tested following Qt versions: (each time only qt was rebuild)

warpme commented 1 year ago

Small update with this issue:

I filled (potential) QTbug report about this issue (https://bugreports.qt.io/browse/QTBUG-113728)

Qt devs replayed:

Guessing after a quick look at the code base that you are relying on top-level QWidgets being backed by a QWindow with RasterGLSurface https://doc.qt.io/qt-6/qsurface.html#SurfaceType-enum by default. That type is not used from 6.4 on, rather the window for top-level widgets default to RasterSurface, OpenGLSurface, VulkanSurface, Direct3DSurface, etc. depending on the presence of QOpenGLWidget and QQuickWidget instances within the child hierarchy. Since those are probably not used in your case, the top-level widget is always backed by a RasterSurface QWindow from 6.4 on.

So this looks like not QTbug - but rather MythTV incompatibility with Qt6.4+

I'm opened to any ideas/code changes/tests needed to be done to move forward to fix this issue....

garybuhrmaster commented 1 year ago

As I recall, at least one related crash is caused by calling initializeOpenGLFunctions before setting a valid OpenGL context (and MythTV does not currently set a valid context). There needs to be a ....->makeCurrent(...surface...) before calling initializeOpenGLFunctions (and perhaps other setup, too).

I presume someone fluent in Qt6 and OpenGL would be able to quickly determine what needs to be done.

kmdewaal commented 1 year ago

Problem can be reproduced.

kmdewaal commented 1 year ago

I did have a look at it but I do not think that I can fix this on the short term.

jhoyt4 commented 7 months ago

I believe I'm experiencing a similar issue on macOS with QT 6.4 through 6.6

Mythfrontend output and top of the crash report follow:

% /Volumes/MythFrontend-arm64-14.1.1-v34-Pre-598-g0a25e6693e/mythfrontend.app/Contents/MacOS/mythfrontend.sh 
2023-12-14 15:24:18.518681 I  Setup Interrupt: 2 handler
2023-12-14 15:24:18.518687 I  Setup Terminated: 15 handler
2023-12-14 15:24:18.518688 I  Setup Segmentation fault: 11 handler
2023-12-14 15:24:18.518690 I  Setup Abort trap: 6 handler
2023-12-14 15:24:18.518691 I  Setup Floating point exception: 8 handler
2023-12-14 15:24:18.518692 I  Setup Illegal instruction: 4 handler
2023-12-14 15:24:18.518693 I  Setup Bus error: 10 handler
2023-12-14 15:24:18.518695 I  Setup Hangup: 1 handler
2023-12-14 15:24:18.518696 I  Setup User defined signal 1: 30 handler
2023-12-14 15:24:18.518697 I  Setup User defined signal 2: 31 handler
2023-12-14 15:24:18.518915 C  mythfrontend version: master [v34-Pre-598-g0a25e6693e] www.mythtv.org
2023-12-14 15:24:18.518916 C  Qt version: compile: 6.6.0, runtime: 6.6.0
2023-12-14 15:24:18.518926 I  macOS 14.1 (arm64)
2023-12-14 15:24:18.518926 N  Enabled verbose msgs:  general
2023-12-14 15:24:18.518928 N  Setting Log Level to LOG_INFO
2023-12-14 15:24:18.530064 I  Added logging to the console
2023-12-14 15:24:18.530083 N  Using runtime prefix = /Volumes/MythFrontend-arm64-14.1.1-v34-Pre-598-g0a25e6693e/mythfrontend.app/Contents/Resources
2023-12-14 15:24:18.530084 N  Using configuration directory = /Users/jhoyt/.mythtv
2023-12-14 15:24:18.530200 I  Assumed character encoding: en_US.UTF-8
2023-12-14 15:24:18.531205 I  Loading en_us translation for module mythfrontend
2023-12-14 15:24:18.532391 I  Empty LocalHostName. This is typical.
2023-12-14 15:24:18.532396 I  Using a profile name of: 'miniM1.home.jgh4.com' (Usually the same as this host's name.)
2023-12-14 15:24:18.532471 I  Start up testing connections. DB 192.168.0.9, BE , attempt 0, status dbAwake, Delay: 2000
2023-12-14 15:24:20.174798 N  Setting QT default locale to en_US
2023-12-14 15:24:20.174801 I  Current locale en_US
2023-12-14 15:24:20.175001 N  Reading locale defaults from /Volumes/MythFrontend-arm64-14.1.1-v34-Pre-598-g0a25e6693e/mythfrontend.app/Contents/Resources/share/mythtv//locales/en_us.xml
2023-12-14 15:24:20.229679 E  PowerOSX: Failed to setup power source callback
2023-12-14 15:24:20.229733 I  Power: Supported actions: Suspend,Restart,Shutdown
2023-12-14 15:24:20.436597 I  Listening on TCP 0.0.0.0:6551
2023-12-14 15:24:20.438389 I  Listening on TCP [::]:6551
2023-12-14 15:24:20.615867 I  Loading en_us translation for module mythfrontend
2023-12-14 15:24:20.624867 I  Display: Screen '(Make: Unknown Model: Unknown)' not found, defaulting to primary screen (Hanns.G HH241)
2023-12-14 15:24:20.624890 I  Display: Using screen 'Hanns.G HH241' (Make: Unknown Model: Unknown)
2023-12-14 15:24:20.624938 I  Display: Qt screen pixel ratio: 1.00
2023-12-14 15:24:20.624946 I  Display: Geometry: 1920x1080+0+0 Size(Qt): 518.809mmx288.758mm
2023-12-14 15:24:20.624998 I  VRR: No variable refresh rate support detected
2023-12-14 15:24:20.625009 N  Display: Desktop video mode: 1920x1080 60.000Hz
2023-12-14 15:24:20.646605 I  InputHandler: Starting
2023-12-14 15:24:20.646702 E  AppleRemote::_findAppleRemoteDevice(AppleIRController) failed
2023-12-14 15:24:20.646723 E  AppleRemote::_findAppleRemoteDevice(AppleTVIRReceiver) failed
2023-12-14 15:24:20.646724 E  AppleRemote::startListening() failed
2023-12-14 15:24:20.646989 I  UDPListener: Enabling
2023-12-14 15:24:20.666413 I  Binding to UDP 0.0.0.0:6948
2023-12-14 15:24:20.666456 I  Binding to UDP [::]:6948
dbus[53120]: Dynamic session lookup supported but failed: launchd did not provide a socket path, verify that org.freedesktop.dbus-session.plist is loaded!
2023-12-14 15:24:20.734063 I  Using Frameless Window
2023-12-14 15:24:20.734066 I  Using Full Screen Window
2023-12-14 15:24:20.734081 I  Display: Have main widget
2023-12-14 15:24:20.734082 I  Display: Have main window
2023-12-14 15:24:20.734088 I  Display: Screen '(Make: Unknown Model: Unknown)' not found, defaulting to primary screen (Hanns.G HH241)
2023-12-14 15:24:20.886596 I  Qt: QOpenGLContext::makeCurrent() called with non-opengl surface 0x600001a54f10
2023-12-14 15:24:20.886598 E  OpenGL: makeCurrent failed
Handling Segmentation fault: 11
/Volumes/MythFrontend-arm64-14.1.1-v34-Pre-598-g0a25e6693e/mythfrontend.app/Contents/MacOS/mythfrontend.sh: line 15: 53120 Segmentation fault: 11  ./mythfrontend $@
-------------------------------------
Translated Report (Full Report Below)
-------------------------------------

Process:               mythfrontend [53120]
Path:                  /Volumes/VOLUME/mythfrontend.app/Contents/MacOS/mythfrontend
Identifier:            mythfrontend
Version:               ???
Code Type:             ARM-64 (Native)
Parent Process:        Exited process [52828]
Responsible:           Terminal [43146]
User ID:               501

Date/Time:             2023-12-14 15:24:21.9127 -0500
OS Version:            macOS 14.1.1 (23B81)
Report Version:        12
Anonymous UUID:        0BFA2638-A4CC-8E49-1FBF-D9DD6CD2D1AF

Sleep/Wake UUID:       4F159E84-088D-4513-9B04-F5A08552CBF6

Time Awake Since Boot: 2000000 seconds
Time Since Wake:       80 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000008
Exception Codes:       0x0000000000000001, 0x0000000000000008

VM Region Info: 0x8 is not in any region.  Bytes before following region: 4328570872
      REGION TYPE                    START - END         [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
      UNUSED SPACE AT START
--->  
      __TEXT                      10200c000-10231c000    [ 3136K] r-x/r-x SM=COW  .../mythfrontend

Thread 0 Crashed::  Dispatch queue: com.apple.main-thread
0   QtGui                                  0x1081b9780 QOpenGLContext::shareGroup() const + 0
1   QtGui                                  0x1081c3ba8 0x107f44000 + 2620328
2   QtGui                                  0x1081c36ec QOpenGLFunctions::initializeOpenGLFunctions() + 24
3   libmythui-34.34.dylib                  0x10386e918 MythRenderOpenGL::Init() + 68

Thread 1:
0   libsystem_pthread.dylib                0x181877e28 start_wqthread + 0

Thread 2:
0   libsystem_pthread.dylib                0x181877e28 start_wqthread + 0

Thread 3:
0   libsystem_pthread.dylib                0x181877e28 start_wqthread + 0

Thread 4:: com.apple.CFSocket.private
0   libsystem_kernel.dylib                 0x181847a14 __select + 8
1   CoreFoundation                         0x1819830d4 __CFSocketManager + 636
2   libsystem_pthread.dylib                0x18187d034 _pthread_start + 136
3   libsystem_pthread.dylib                0x181877e3c thread_start + 8

Thread 5:: LogForward
0   libsystem_kernel.dylib                 0x1818400ac __psynch_cvwait + 8
1   libsystem_pthread.dylib                0x18187d5fc _pthread_cond_wait + 1228
2   QtCore                                 0x1086294cc 0x108488000 + 1709260
3   QtCore                                 0x1086291fc 0x108488000 + 1708540
4   QtCore                                 0x108629140 QWaitCondition::wait(QMutex*, QDeadlineTimer) + 108
5   QtCore                                 0x1086290a4 QWaitCondition::wait(QMutex*, unsigned long) + 64
6   libmythbase-34.34.dylib                0x104c2194c LogForwardThread::run() + 428
7   libsystem_pthread.dylib                0x18187d034 _pthread_start + 136
8   libsystem_pthread.dylib                0x181877e3c thread_start + 8

Thread 6:: Logger
0   libsystem_kernel.dylib                 0x1818400ac __psynch_cvwait + 8
1   libsystem_pthread.dylib                0x18187d5fc _pthread_cond_wait + 1228
2   QtCore                                 0x1086294cc 0x108488000 + 1709260
3   QtCore                                 0x1086291fc 0x108488000 + 1708540
4   QtCore                                 0x108629140 QWaitCondition::wait(QMutex*, QDeadlineTimer) + 108
5   QtCore                                 0x1086290a4 QWaitCondition::wait(QMutex*, unsigned long) + 64
6   libmythbase-34.34.dylib                0x104c18a9c LoggerThread::run() + 708
7   libsystem_pthread.dylib                0x18187d034 _pthread_start + 136
8   libsystem_pthread.dylib                0x181877e3c thread_start + 8

Thread 7:: com.apple.NSEventThread
0   libsystem_kernel.dylib                 0x18183c8b4 mach_msg2_trap + 8
1   libsystem_kernel.dylib                 0x18184ed30 mach_msg2_internal + 80
2   libsystem_kernel.dylib                 0x1818454f0 mach_msg_overwrite + 476
3   libsystem_kernel.dylib                 0x18183cc38 mach_msg + 24
4   CoreFoundation                         0x181959ea4 __CFRunLoopServiceMachPort + 160
5   CoreFoundation                         0x18195876c __CFRunLoopRun + 1208
6   CoreFoundation                         0x181957c5c CFRunLoopRunSpecific + 608
7   AppKit                                 0x18525c404 _NSEventThread + 144
8   libsystem_pthread.dylib                0x18187d034 _pthread_start + 136
9   libsystem_pthread.dylib                0x181877e3c thread_start + 8

Thread 8:
0   libsystem_pthread.dylib                0x181877e28 start_wqthread + 0

Thread 9:: SSDP
0   libsystem_kernel.dylib                 0x18183fea8 __semwait_signal + 8
1   libsystem_c.dylib                      0x1817232f8 nanosleep + 220
2   libc++.1.dylib                         0x1817b681c std::__1::this_thread::sleep_for(std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l>> const&) + 84
3   libmythbase-34.34.dylib                0x104c7280c PortChecker::checkPort(QString&, int, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000l>>, bool) + 2584
4   libsystem_pthread.dylib                0x18187d034 _pthread_start + 136
5   libsystem_pthread.dylib                0x181877e3c thread_start + 8

Thread 10:: TaskQueue
0   libsystem_kernel.dylib                 0x18183fea8 __semwait_signal + 8
1   libsystem_c.dylib                      0x1817232f8 nanosleep + 220
2   libc++.1.dylib                         0x1817b681c std::__1::this_thread::sleep_for(std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l>> const&) + 84
3   libmythupnp-34.34.dylib                0x102f48ab8 UPnpNotifyTask::SendNotifyMsg(MSocketDevice*, QString const&, QString const&) + 2140
4   libsystem_pthread.dylib                0x18187d034 _pthread_start + 136
5   libsystem_pthread.dylib                0x181877e3c thread_start + 8

Thread 11:: UDP
0   libsystem_kernel.dylib                 0x18184522c poll + 8
1   QtCore                                 0x10861cc70 qt_safe_poll(pollfd*, unsigned int, timespec const*) + 436
2   QtCore                                 0x10861dbb4 QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 584
3   QtCore                                 0x108501f5c QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 448
4   QtCore                                 0x1085a9678 QThread::exec() + 156
5   libmythbase-34.34.dylib                0x104b508d4 MThread::run() + 48
6   libsystem_pthread.dylib                0x18187d034 _pthread_start + 136
7   libsystem_pthread.dylib                0x181877e3c thread_start + 8

Thread 12:: QDBusConnectionManager
0   libsystem_kernel.dylib                 0x18184522c poll + 8
1   QtCore                                 0x10861cc70 qt_safe_poll(pollfd*, unsigned int, timespec const*) + 436
2   QtCore                                 0x10861dbb4 QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 584
3   QtCore                                 0x108501f5c QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 448
4   QtCore                                 0x1085a9678 QThread::exec() + 156
5   QtDBus                                 0x106d67498 0x106d58000 + 62616
6   QtCore                                 0x108621a80 0x108488000 + 1677952
7   libsystem_pthread.dylib                0x18187d034 _pthread_start + 136
8   libsystem_pthread.dylib                0x181877e3c thread_start + 8

Thread 0 crashed with ARM Thread State (64-bit):
    x0: 0x0000000000000000   x1: 0x0000000000000000   x2: 0x0000000107f44000   x3: 0x000060000246e4a8
    x4: 0x0000000000000004   x5: 0x0000000000001200   x6: 0x000000010810b9f8   x7: 0x00000000000006c0
    x8: 0x00000001d68d3b30   x9: 0x0000000000000002  x10: 0x0000000000000000  x11: 0x0000000000000002
   x12: 0x0000000000000000  x13: 0x0000000000000000  x14: 0x0000000047801139  x15: 0x0000000000000139
   x16: 0x0000000181877b4c  x17: 0x00000001e0a19030  x18: 0x0000000000000000  x19: 0x000000012c71cb90
   x20: 0x0000000000000000  x21: 0x0000000108370510  x22: 0x0000600002b88cc0  x23: 0x000000016ddf2ac8
   x24: 0x0000600003ebd060  x25: 0x0000000104e106c8  x26: 0x0000000104e15ac8  x27: 0x00000001030cd9f0
   x28: 0x0000000000000000   fp: 0x000000016ddf29c0   lr: 0x00000001081c3ba8
    sp: 0x000000016ddf2990   pc: 0x00000001081b9780 cpsr: 0x60001000
   far: 0x0000000000000000  esr: 0x56000080  Address size fault

Binary Images:
       0x11cd10000 -        0x11cd7bfff com.apple.AppleMetalOpenGLRenderer (1.0) <227d0ea7-67f7-36da-949b-01c1f245b799> /System/Library/Extensions/AppleMetalOpenGLRenderer.bundle/Contents/MacOS/AppleMetalOpenGLRenderer
       0x11b0c0000 -        0x11b0cffff libqcertonlybackend.dylib (*) <0c37c55b-73cc-3165-a307-f215096f669a> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/PlugIns/tls/libqcertonlybackend.dylib
       0x11b448000 -        0x11b477fff libqopensslbackend.dylib (*) <124d278f-aa20-3779-a49c-598cf87df18f> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/PlugIns/tls/libqopensslbackend.dylib
       0x1195b8000 -        0x1195dbfff libqsecuretransportbackend.dylib (*) <05be07c5-9611-3c4c-83d2-1985b934ee0c> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/PlugIns/tls/libqsecuretransportbackend.dylib
       0x1193d0000 -        0x1193dbfff libobjc-trampolines.dylib (*) <c9ce7923-2f2d-31eb-a6e4-0f3b7a78f895> /usr/lib/libobjc-trampolines.dylib
       0x119534000 -        0x119543fff libqsqlmysql.dylib (*) <a6fd3a14-2557-39c0-b0ac-9396f364b303> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/PlugIns/sqldrivers/libqsqlmysql.dylib
       0x11b664000 -        0x11b9a3fff libmysqlclient.22.dylib (*) <14ed0ef8-c905-3ec8-b2ea-ee74e4e24783> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libmysqlclient.22.dylib
       0x11b000000 -        0x11b07ffff libssl.3.dylib (*) <90d6c193-d824-3057-8168-33e1a3e05187> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libssl.3.dylib
       0x119558000 -        0x119567fff libz.1.dylib (*) <e610549b-c525-3095-b218-f349ec39a349> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libz.1.dylib
       0x119390000 -        0x1193b3fff libqmacstyle.dylib (*) <64c06816-03f7-3e70-be48-8f2ab1509c7d> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/PlugIns/styles/libqmacstyle.dylib
       0x102518000 -        0x1025a3fff libqcocoa.dylib (*) <e1117263-b1a0-3009-998f-643712e82538> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/PlugIns/platforms/libqcocoa.dylib
       0x1074ac000 -        0x1074cbfff com.apple.security.csparser (3.0) <af53e762-bef4-3d88-9797-ff28f3f85e76> /System/Library/Frameworks/Security.framework/Versions/A/PlugIns/csparser.bundle/Contents/MacOS/csparser
       0x1028ac000 -        0x102943fff libmythswscale.6.dylib (*) <913a64a0-95f0-3436-a062-7e9fcd7583d6> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libmythswscale.6.dylib
       0x102ba8000 -        0x102da3fff libmythavformat.59.dylib (*) <b5f0c823-6441-3217-9dac-d7e3f694e048> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libmythavformat.59.dylib
       0x102824000 -        0x102837fff libmythswresample.4.dylib (*) <cfdd0998-7d36-3922-9140-7339261795c1> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libmythswresample.4.dylib
       0x1029fc000 -        0x102a77fff libmythavutil.57.dylib (*) <3f09897e-e84a-36ca-b25a-aa48507cc454> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libmythavutil.57.dylib
       0x10397c000 -        0x10446bfff libmythavcodec.59.dylib (*) <7a4ae3cb-2b88-3118-b852-0ec937574223> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libmythavcodec.59.dylib
       0x102844000 -        0x10284ffff libmythpostproc.56.dylib (*) <fd221b55-cdda-3d3b-a489-758c2b40c96d> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libmythpostproc.56.dylib
       0x103198000 -        0x1034a3fff libmythavfilter.8.dylib (*) <3fe99b47-6a48-3a0c-b951-03a30453689e> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libmythavfilter.8.dylib
       0x105584000 -        0x105e5ffff libmythtv-34.34.dylib (*) <5ac21da8-9994-3152-a74c-cc1b169cc6d5> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libmythtv-34.34.dylib
       0x102f08000 -        0x102fdbfff libmythupnp-34.34.dylib (*) <dc8f8219-c6a5-3ac9-a345-ba98f3c18391> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libmythupnp-34.34.dylib
       0x104b40000 -        0x104e07fff libmythbase-34.34.dylib (*) <4b7226a9-1f62-35f8-b838-4128f78b380f> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libmythbase-34.34.dylib
       0x103744000 -        0x1038d3fff libmythui-34.34.dylib (*) <d8e80414-95e4-3261-beb3-a6c845bc271d> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libmythui-34.34.dylib
       0x10301c000 -        0x1030c3fff libmyth-34.34.dylib (*) <671842b3-6802-30ca-8386-8d9950c4d564> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libmyth-34.34.dylib
       0x104e98000 -        0x104fc3fff libmythmetadata-34.34.dylib (*) <f9c96677-ce00-3996-8d79-385cb1243566> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libmythmetadata-34.34.dylib
       0x102df4000 -        0x102e3ffff libmythservicecontracts-34.34.dylib (*) <c3af2947-1234-38e8-93b0-560762b12140> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libmythservicecontracts-34.34.dylib
       0x102e74000 -        0x102eaffff libmythprotoserver-34.34.dylib (*) <3a302671-2b80-3c57-b0d0-10918d5311a3> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libmythprotoserver-34.34.dylib
       0x103104000 -        0x10315bfff libmythfreemheg-34.34.dylib (*) <7cc0ce10-8ff9-3338-ba9b-74fcb2802bad> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libmythfreemheg-34.34.dylib
       0x103604000 -        0x103677fff libtag.1.dylib (*) <16db7c62-0673-311e-b6cc-5a6c13311104> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libtag.1.dylib
       0x106014000 -        0x1061e7fff libmythexiv2-0.28.34.dylib (*) <40317daf-6c32-3d82-8220-56aa8acf44f3> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libmythexiv2-0.28.34.dylib
       0x1062e4000 -        0x1065c7fff libcrypto.3.dylib (*) <32dfd93b-1394-3803-b2e8-80371c0f0b96> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libcrypto.3.dylib
       0x10295c000 -        0x10297ffff libass.9.dylib (*) <804484f2-e37e-380d-a26e-52d45a319b38> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libass.9.dylib
       0x105008000 -        0x1050a3fff libdav1d.7.dylib (*) <471c0141-d1a5-3b21-9957-6bced38f2316> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libdav1d.7.dylib
       0x1066b4000 -        0x106a17fff libaom.3.dylib (*) <2ec97542-d90a-3450-9fe0-659a807033a2> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libaom.3.dylib
       0x1050e8000 -        0x10510ffff libvmaf.1.dylib (*) <ac34865d-55cf-3bad-a21a-c2b1c5abe9e3> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libvmaf.1.dylib
       0x10531c000 -        0x105447fff libjxl.0.8.dylib (*) <2ceccdcd-a84e-3249-9137-95a998c095db> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libjxl.0.8.dylib
       0x102884000 -        0x102893fff libhdhomerun.dylib (*) <f2bafc1a-7554-31a9-ba3b-514a47922311> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libhdhomerun.dylib
       0x106a8c000 -        0x106baffff libx264.164.dylib (*) <cdbfaf38-a184-31fe-abd6-7ff7ddf2f0ef> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libx264.164.dylib
       0x103540000 -        0x103573fff libmp3lame.0.dylib (*) <3a72093f-1e3b-385a-841e-faf56748ee12> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libmp3lame.0.dylib
       0x1035b4000 -        0x1035e7fff libfontconfig.1.dylib (*) <284c2952-31dc-36a1-b387-a289e698c2d4> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libfontconfig.1.dylib
       0x105268000 -        0x1052e3fff libfreetype.6.dylib (*) <9f468009-9a2d-3ff0-90d8-1bc0fe3b3bae> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libfreetype.6.dylib
       0x102994000 -        0x1029a7fff libzip.5.dylib (*) <1c0c8b9a-537b-3097-935a-73cfdf859eae> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libzip.5.dylib
       0x1051d8000 -        0x105217fff libbluray.2.dylib (*) <95b756a6-466e-3a84-b5fb-9964bb0f75bd> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libbluray.2.dylib
       0x102860000 -        0x10286bfff libSoundTouch.1.dylib (*) <11acdb51-05e1-3a17-b786-972ba468276c> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libSoundTouch.1.dylib
       0x106e44000 -        0x106faffff libsamplerate.0.dylib (*) <735678b6-2058-3c85-95bc-2dfa165ca332> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libsamplerate.0.dylib
       0x1054ec000 -        0x105543fff org.qt-project.QtOpenGL (6.6) <929bb79a-4d9a-339d-80f8-097f934df591> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/QtOpenGL.framework/Versions/A/QtOpenGL
       0x1074e8000 -        0x1078b3fff org.qt-project.QtWidgets (6.6) <31cc4af9-a5fb-37e8-aa64-4eb31bfffd52> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/QtWidgets.framework/Versions/A/QtWidgets
       0x107f44000 -        0x108347fff org.qt-project.QtGui (6.6) <2960d657-84ba-3582-867b-4f5097effabb> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/QtGui.framework/Versions/A/QtGui
       0x106fc4000 -        0x1070affff org.qt-project.QtNetwork (6.6) <e2553f8d-9c2b-32d2-ad67-6e35c4c0c641> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/QtNetwork.framework/Versions/A/QtNetwork
       0x102ec8000 -        0x102edffff org.qt-project.QtXml (6.6) <196ddb63-5b89-38be-aa34-7487bc462196> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/QtXml.framework/Versions/A/QtXml
       0x105460000 -        0x105487fff org.qt-project.QtSql (6.6) <02412f20-f5e6-36e6-9bf8-e55d256242c9> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/QtSql.framework/Versions/A/QtSql
       0x106d58000 -        0x106dc3fff org.qt-project.QtDBus (6.6) <f5723eeb-00fd-3958-892e-a9a7e61f7cdc> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/QtDBus.framework/Versions/A/QtDBus
       0x108488000 -        0x10882ffff org.qt-project.QtCore (6.6) <d922b920-7632-3cb3-b377-002b45ff5907> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/QtCore.framework/Versions/A/QtCore
       0x1071fc000 -        0x1072cffff libX11.6.dylib (*) <e34d1012-2916-30a6-80cb-a797f99a8cb5> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libX11.6.dylib
       0x1036c8000 -        0x1036dbfff libxcb.1.dylib (*) <1c86d4cd-7c39-38da-a5ee-559bfadb2f5c> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libxcb.1.dylib
       0x1029b8000 -        0x1029bbfff libXau.6.dylib (*) <bf6689dc-5292-350c-94b7-d1d71956c572> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libXau.6.dylib
       0x102814000 -        0x102817fff libXdmcp.6.dylib (*) <a066fce2-d9df-3441-9eb3-6675f314422e> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libXdmcp.6.dylib
       0x107a0c000 -        0x107b7bfff libgnutls.30.dylib (*) <77695e72-05d6-3e13-99c3-43a30860ae5b> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libgnutls.30.dylib
       0x107bc8000 -        0x107d17fff libvpx.8.dylib (*) <bb4c9fb4-ba14-309b-bab3-2a0b7a108a5c> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libvpx.8.dylib
       0x1036f8000 -        0x103717fff liblzma.5.dylib (*) <d5449959-8b9e-3de7-ae04-f9f30d6ba829> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/liblzma.5.dylib
       0x108b68000 -        0x108d6ffff libx265.199.dylib (*) <e6d3a150-9129-3ba6-be46-eaeebc624121> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libx265.199.dylib
       0x1029e4000 -        0x1029ebfff libhwy.1.dylib (*) <efcc8295-edb2-3b0b-9b67-ab4160aea3b7> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libhwy.1.dylib
       0x103724000 -        0x10372ffff libbrotlidec.1.dylib (*) <cc77e640-3de5-3d9c-9565-c60ed8119746> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libbrotlidec.1.dylib
       0x105228000 -        0x105247fff libbrotlicommon.1.dylib (*) <cbb61532-d27c-331e-996e-843ed45f10e9> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libbrotlicommon.1.dylib
       0x1072f0000 -        0x10737bfff libbrotlienc.1.dylib (*) <159e74da-1746-3bd8-92e3-42426d7faf27> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libbrotlienc.1.dylib
       0x106dec000 -        0x106e27fff liblcms2.2.dylib (*) <c7dd544b-7b20-3b48-9cf2-e460b25517bd> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/liblcms2.2.dylib
       0x106cc4000 -        0x106ce7fff libpng16.16.dylib (*) <7396dd62-d1eb-3564-b3f5-2f50f51f84f5> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libpng16.16.dylib
       0x1054a8000 -        0x1054bffff libintl.8.dylib (*) <00fe864a-7259-3f14-8dc2-ad6e85504fef> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libintl.8.dylib
       0x107d30000 -        0x107e27fff libp11-kit.0.dylib (*) <47b51415-5fe7-30b7-8cfb-a94db701c48b> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libp11-kit.0.dylib
       0x107108000 -        0x107137fff libidn2.0.dylib (*) <5d182aed-a9c3-3395-9e49-90f0e148654a> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libidn2.0.dylib
       0x108dd8000 -        0x108f6ffff libunistring.5.dylib (*) <33a7ff2f-1650-39b8-b13a-6c8ec574a6dc> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libunistring.5.dylib
       0x1052f8000 -        0x105303fff libtasn1.6.dylib (*) <8b813670-a25c-3d8a-9272-957bdbe5bc39> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libtasn1.6.dylib
       0x107148000 -        0x10717ffff libnettle.8.dylib (*) <26f48c98-968d-3597-b84d-6a97e57af30c> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libnettle.8.dylib
       0x107198000 -        0x1071cffff libhogweed.6.dylib (*) <71bc8b79-f1d5-383b-b7f3-8ba0ad1a95f3> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libhogweed.6.dylib
       0x1073fc000 -        0x107453fff libgmp.10.dylib (*) <f6a7b957-4314-3ea5-ac52-39a649bd3a58> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libgmp.10.dylib
       0x106cf8000 -        0x106d13fff libfribidi.0.dylib (*) <44e9e265-1a6e-33c9-8180-0bae3f7e6f5c> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libfribidi.0.dylib
       0x108908000 -        0x1089c3fff libharfbuzz.0.dylib (*) <5c2fa5f7-2c3c-3157-8edf-73b749ac5233> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libharfbuzz.0.dylib
       0x106d24000 -        0x106d43fff libunibreak.5.dylib (*) <a7b6512f-3138-322c-a9d6-3e358654517f> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libunibreak.5.dylib
       0x108f8c000 -        0x10907bfff libglib-2.0.0.dylib (*) <c3c3f473-6698-3b0d-8607-0f468b6c4b63> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libglib-2.0.0.dylib
       0x10738c000 -        0x10739ffff libgraphite2.3.dylib (*) <dadd250f-e2ba-36f3-b960-ea391395d1e7> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libgraphite2.3.dylib
       0x1089e0000 -        0x108a53fff libpcre2-8.0.dylib (*) <a02c2f70-1f04-38dc-ab6d-41d8b391cb88> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libpcre2-8.0.dylib
       0x1073ac000 -        0x1073c3fff liblzo2.2.dylib (*) <d7f6d4ef-d1f3-38db-9cff-92fd4b3ad173> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/liblzo2.2.dylib
       0x1073d0000 -        0x1073dffff libhdhomerun_arm64.dylib (*) <f2bafc1a-7554-31a9-ba3b-514a47922311> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libhdhomerun_arm64.dylib
       0x108a64000 -        0x108aebfff libzstd.1.dylib (*) <2bdff40f-1b63-3633-a720-9b2c512f6256> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libzstd.1.dylib
       0x10394c000 -        0x103957fff libmd4c.0.dylib (*) <364e1807-c71c-378c-b4a7-1bc7eda8a11e> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libmd4c.0.dylib
       0x1029cc000 -        0x1029cffff libgthread-2.0.0.dylib (*) <8259d5ae-290d-3e70-ab80-8cc5c0ea504f> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libgthread-2.0.0.dylib
       0x107e54000 -        0x107e83fff libdbus-1.3.dylib (*) <39e8ef3d-0a4a-3f7f-a729-c37ebc8e538c> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libdbus-1.3.dylib
       0x10930c000 -        0x109497fff libicui18n.73.dylib (*) <4cf242d7-3baf-3426-9e42-d6ec6f105989> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libicui18n.73.dylib
       0x10956c000 -        0x10969bfff libicuuc.73.dylib (*) <fa375bc4-1f53-30a6-a543-2936b3ffe895> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libicuuc.73.dylib
       0x10b5d0000 -        0x10d45ffff libicudata.73.dylib (*) <d67db6a8-bbba-3786-9027-da6298d24d60> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libicudata.73.dylib
       0x1054d0000 -        0x1054dbfff libdouble-conversion.3.dylib (*) <1bc9d57e-cefd-3a29-9378-50c756f892b3> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libdouble-conversion.3.dylib
       0x1071e0000 -        0x1071e7fff libb2.1.dylib (*) <82f85bf6-93d0-3be3-9cc8-23cbf361e60f> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libb2.1.dylib
       0x107ea0000 -        0x107f0bfff libpcre2-16.0.dylib (*) <27f77b43-8908-3e08-928d-c981ca5e9a1c> /Volumes/VOLUME/mythfrontend.app/Contents/Frameworks/libpcre2-16.0.dylib
       0x10200c000 -        0x10231bfff mythfrontend (*) <40002f1e-0e24-36b0-b506-4839bfb1e57a> /Volumes/VOLUME/mythfrontend.app/Contents/MacOS/mythfrontend
               0x0 - 0xffffffffffffffff ??? (*) <00000000-0000-0000-0000-000000000000> ???
       0x181876000 -        0x181882ff3 libsystem_pthread.dylib (*) <daf95373-5de6-39a1-a6ce-d87f3f0629cc> /usr/lib/system/libsystem_pthread.dylib
       0x18183b000 -        0x181875fef libsystem_kernel.dylib (*) <b7751381-1442-30b5-91b9-ad7be461bebe> /usr/lib/system/libsystem_kernel.dylib
       0x1818dc000 -        0x181db3fff com.apple.CoreFoundation (6.9) <9f046e36-7286-3a6e-a280-699d6e47cfaf> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
       0x1850f9000 -        0x18640dfff com.apple.AppKit (6.9) <b475e541-691d-39c6-8ca4-e414b0d3dd88> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
       0x181716000 -        0x181794ffb libsystem_c.dylib (*) <decb8685-f34a-3979-afcb-71fb55747e41> /usr/lib/system/libsystem_c.dylib
       0x181795000 -        0x181822ff7 libc++.1.dylib (*) <3702eede-997d-38e6-a6a1-c08eb22c375b> /usr/lib/libc++.1.dylib
kmdewaal commented 6 months ago

Yes, the failure on MacOS is identical to that on Linux. I am having another look at it.

kmdewaal commented 6 months ago

I did not get very far on this but is what I did. Attached is a test patch that can be applied to the current master. 20240115-qt6-wip.patch.gz

The result is something that does not crash anymore but now it gives an endless loop of these messages: CoreContext mythcommandlineparser.cpp:2923:operator() Qt: QPainter::begin: Paint device returned engine == 0, type: 1

The basic idea was, as suggested in this thread by the quote from the Qt dev, to change the top level window from a raster surface to an OpenGL surface by inheriting from a QOpenGLWidget instead of a QWidget.

Some comments on the code changes in the patch:

To get it compiled with qt6 do add the following option to the ./configure command: --qmake=/lib64/qt6/bin/qmake The configure script now complains about the locale being C, and these complains can be removed as follows:

 # Prevent locale nonsense from breaking basic text processing.
-LC_ALL=C
+LC_ALL=C.UTF8
 export LC_ALL

To be able to use the QOpenGLWidget, add the following to the libmythui.pro:

 using_opengl: QT += opengl
+using_opengl: contains(QT_MAJOR_VERSION, 6): {
+    QT += openglwidgets
+}

And then in mythpainterwindow.cpp/.h the QOpenGLWidget is used instead of the QWidget.

There are also a lot of messages added so that the flow through the code can be followed. The amazing thing is that mythavtest does seem to work however with this patch.

Suggestions on how to continue with this are welcome!

jhoyt4 commented 4 months ago

@kmdewaal - my apologies for just getting around to this. I was waiting on some upstream qt6 fixes to see if anything changed.

Like you state, on macOS I'm no longer crashing with myhfrontend. My endless loop statement is similar, but points to Qt: QPainter:

2024-03-01 09:55:32.514091 I  Qt: QPainter::begin: Paint device returned engine == 0, type: 1
2024-03-01 09:55:32.528974 I  KdW trace RenderIsShared
2024-03-01 09:55:32.529041 I  KdW trace paintEngine
2024-03-01 09:55:32.529046 I  KdW trace paintEngine
2024-03-01 09:55:32.531193 I  KdW trace paintEngine

While watching mythfrontend load, I did see a picture of my theme for a very brief moment then the screen went black and stayed there with the looping output.

bjoernv commented 2 months ago

I get this bug on Qt6 6.7.0 (openSUSE Tumbleweed). If I try to debug mythfrontend with gdb, the whole X11 screen freezes.

Without gdb, mythfrontend crashes after some seconds:

2024-04-27 23:56:00.884475 I  Display: Have main window
2024-04-27 23:56:00.884499 I  Display: Found screen number 0 (DVI-D-0)
2024-04-27 23:56:00.901949 I  Qt: QOpenGLContext::makeCurrent() called with non-opengl surface 0x565235e75cc0
2024-04-27 23:56:00.901957 E  OpenGL: makeCurrent failed
Handling Segmentation fault
Segmentation fault (core dumped)
mitchcapper commented 1 week ago

So I have hit this for awhile and tried to just install 6.3 and compile mythtv there as I run it in a container anyway, but mythtv's min versions is: QT6_MIN_VERSION_STR="6.4" so that doesn't seem like a valid option. Clearly this doesn't hit everyone but im not sure what the reach of this is.