Open PluMGMK opened 1 year ago
My intention is that we maintain backwards-compatibility and PyQt bindings should not need to be rewritten. What error are you seeing? (unfortunately the plugins API is one area where I unintentionally broke compatibility since upstream no longer supports them, but I'd like to get back to a place where the API is unchanged)
There were a couple of headers that no longer exist. I'll need to try building PyQt again to check which ones, and I can't remember how I did it when I raised this issue. Building PyQt seems to have gotten harder in recent years…
I can try to build it in the weekend
Had to make unexpected webkit builds so here we are, using webkit build from this repo today
$ cat python-pyqt5-webkit-5.15.10-1-x86_64-build.log | grep "fatal error"
/build/python-pyqt5-webkit/src/PyQt5-5.15.10/sip/QtWebKit/qwebpluginfactory.sip:26:10: fatal error: qwebpluginfactory.h: No such file or directory
/build/python-pyqt5-webkit/src/PyQt5-5.15.10/sip/QtWebKit/qwebpluginfactory.sip:26:10: fatal error: qwebpluginfactory.h: No such file or directory
/build/python-pyqt5-webkit/src/PyQt5-5.15.10/sip/QtWebKit/qwebpluginfactory.sip:26:10: fatal error: qwebpluginfactory.h: No such file or directory
/build/python-pyqt5-webkit/src/PyQt5-5.15.10/sip/QtWebKit/qwebpluginfactory.sip:26:10: fatal error: qwebpluginfactory.h: No such file or directory
/build/python-pyqt5-webkit/src/PyQt5-5.15.10/sip/QtWebKit/qwebpluginfactory.sip:26:10: fatal error: qwebpluginfactory.h: No such file or directory
/build/python-pyqt5-webkit/src/PyQt5-5.15.10/sip/QtWebKit/qwebpluginfactory.sip:26:10: fatal error: qwebpluginfactory.h: No such file or directory
/build/python-pyqt5-webkit/src/PyQt5-5.15.10/sip/QtWebKit/qwebpluginfactory.sip:26:10: fatal error: qwebpluginfactory.h: No such file or directory
/build/python-pyqt5-webkit/src/PyQt5-5.15.10/sip/QtWebKit/qwebpluginfactory.sip:26:10: fatal error: qwebpluginfactory.h: No such file or directory
Ah yes, now I remember, it's qwebpluginfactory
, which gels with what was said above about the plugin API!
@FabioLolix @PluMGMK I've readded the (now non-functional) plugin APIs in https://github.com/movableink/webkit/tree/plugin-stubs-readded, would you mind trying the PyQt5 build against that? I have it successfully building, but I'm not super familiar with PyQt so not sure how to install/test it.
would you mind trying the PyQt5 build against that?
I'm behind with other AUR pkgbuilds (31 are out of date) and some issue to report, after that I can
I also have it working with PyQt6 via https://github.com/movableink/webkit/tree/plugin-stubs-readded-qt6 although it requires a new PyQt6-QtWebKit package as well as changes to qutebrowser itself. (QtWebEngine doesn't exercise much of Qt6 so there are some breaking Qt6 changes that need to be addressed) I'm going to work on getting those sorted though I've never done much with python packaging.
PyQt6-QtWebKit is here: https://github.com/mnutt/PyQt6-QtWebKit
Thanks for this! Unfortunately I've had serious problems getting it to work. I'm sure the issues are at my end (possibly even between the keyboard and chair!) but here goes:
plugin-stubs-readded
, I had to disable USE_GSTREAMER
to get it to compile since otherwise it complained of missing headers. I'm pretty sure this would make HTML video unusable…QtTestBrowser
, for both Qt5 and Qt6. It's very weird, since it seems the copy constructor for QPainterPath
is somehow getting passed a null pointer at the beginning of WebCore::GraphicsContextQt::fillPath
. I don't know much about C++, but that seems like something that shouldn't even be possible, and it seems the problem must be on my end somehow.GDB log including (long!) backtrace:
Thread 1 "python3" received signal SIGSEGV, Segmentation fault.
0x00007fffcc081900 in QPainterPath::QPainterPath(QPainterPath const&) () from /opt/qt5/lib/libQt5Gui.so.5
(gdb) bt
#0 0x00007fffcc081900 in QPainterPath::QPainterPath(QPainterPath const&) () from /opt/qt5/lib/libQt5Gui.so.5
#1 0x00007fffc53e9d47 in WebCore::GraphicsContextQt::fillPath(WebCore::Path const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#2 0x00007fffc652eaba in WebCore::GraphicsContext::fillEllipseAsPath(WebCore::FloatRect const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#3 0x00007fffc67e69ed in WebCore::RenderListMarker::paint(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#4 0x00007fffc6726c62 in WebCore::RenderElement::paintAsInlineBlock(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#5 0x00007fffc624185c in WebCore::LayoutIntegration::InlineContentPainter::paintDisplayBox(WebCore::InlineDisplay::Box const&) ()
from /opt/qt5/lib/libQt5WebKit.so.5
#6 0x00007fffc6241ada in WebCore::LayoutIntegration::InlineContentPainter::paint() () from /opt/qt5/lib/libQt5WebKit.so.5
#7 0x00007fffc6243c3b in WebCore::LayoutIntegration::LineLayout::paint(WebCore::PaintInfo&, WebCore::LayoutPoint const&, WebCore::RenderInline const*) ()
from /opt/qt5/lib/libQt5WebKit.so.5
#8 0x00007fffc670b96d in WebCore::RenderBlock::paintObject(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#9 0x00007fffc66e7c60 in WebCore::RenderBlock::paint(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#10 0x00007fffc66ccdd3 in WebCore::RenderBlock::paintChildren(WebCore::PaintInfo&, WebCore::LayoutPoint const&, WebCore::PaintInfo&, bool) ()
from /opt/qt5/lib/libQt5WebKit.so.5
#11 0x00007fffc66c01a3 in WebCore::RenderBlock::paintContents(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#12 0x00007fffc670b96d in WebCore::RenderBlock::paintObject(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#13 0x00007fffc66e7c60 in WebCore::RenderBlock::paint(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#14 0x00007fffc66ccdd3 in WebCore::RenderBlock::paintChildren(WebCore::PaintInfo&, WebCore::LayoutPoint const&, WebCore::PaintInfo&, bool) ()
from /opt/qt5/lib/libQt5WebKit.so.5
#15 0x00007fffc66c01a3 in WebCore::RenderBlock::paintContents(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#16 0x00007fffc670b96d in WebCore::RenderBlock::paintObject(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#17 0x00007fffc66e7c60 in WebCore::RenderBlock::paint(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#18 0x00007fffc66ccdd3 in WebCore::RenderBlock::paintChildren(WebCore::PaintInfo&, WebCore::LayoutPoint const&, WebCore::PaintInfo&, bool) ()
from /opt/qt5/lib/libQt5WebKit.so.5
#19 0x00007fffc66c01a3 in WebCore::RenderBlock::paintContents(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#20 0x00007fffc670b96d in WebCore::RenderBlock::paintObject(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#21 0x00007fffc66e7c60 in WebCore::RenderBlock::paint(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#22 0x00007fffc66ccdd3 in WebCore::RenderBlock::paintChildren(WebCore::PaintInfo&, WebCore::LayoutPoint const&, WebCore::PaintInfo&, bool) ()
from /opt/qt5/lib/libQt5WebKit.so.5
#23 0x00007fffc66c01a3 in WebCore::RenderBlock::paintContents(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#24 0x00007fffc670b96d in WebCore::RenderBlock::paintObject(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#25 0x00007fffc66e7c60 in WebCore::RenderBlock::paint(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#26 0x00007fffc66ccdd3 in WebCore::RenderBlock::paintChildren(WebCore::PaintInfo&, WebCore::LayoutPoint const&, WebCore::PaintInfo&, bool) ()
from /opt/qt5/lib/libQt5WebKit.so.5
#27 0x00007fffc66c01a3 in WebCore::RenderBlock::paintContents(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#28 0x00007fffc670b96d in WebCore::RenderBlock::paintObject(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#29 0x00007fffc66e7c60 in WebCore::RenderBlock::paint(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#30 0x00007fffc66ccdd3 in WebCore::RenderBlock::paintChildren(WebCore::PaintInfo&, WebCore::LayoutPoint const&, WebCore::PaintInfo&, bool) ()
--Type <RET> for more, q to quit, c to continue without paging--
from /opt/qt5/lib/libQt5WebKit.so.5
#31 0x00007fffc66c01a3 in WebCore::RenderBlock::paintContents(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#32 0x00007fffc670b96d in WebCore::RenderBlock::paintObject(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#33 0x00007fffc66e7c60 in WebCore::RenderBlock::paint(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#34 0x00007fffc66ccdd3 in WebCore::RenderBlock::paintChildren(WebCore::PaintInfo&, WebCore::LayoutPoint const&, WebCore::PaintInfo&, bool) ()
from /opt/qt5/lib/libQt5WebKit.so.5
#35 0x00007fffc66c01a3 in WebCore::RenderBlock::paintContents(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#36 0x00007fffc670b96d in WebCore::RenderBlock::paintObject(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#37 0x00007fffc66e7c60 in WebCore::RenderBlock::paint(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#38 0x00007fffc66ccdd3 in WebCore::RenderBlock::paintChildren(WebCore::PaintInfo&, WebCore::LayoutPoint const&, WebCore::PaintInfo&, bool) ()
from /opt/qt5/lib/libQt5WebKit.so.5
#39 0x00007fffc66c01a3 in WebCore::RenderBlock::paintContents(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#40 0x00007fffc670b96d in WebCore::RenderBlock::paintObject(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#41 0x00007fffc66e7c60 in WebCore::RenderBlock::paint(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#42 0x00007fffc66ccdd3 in WebCore::RenderBlock::paintChildren(WebCore::PaintInfo&, WebCore::LayoutPoint const&, WebCore::PaintInfo&, bool) ()
from /opt/qt5/lib/libQt5WebKit.so.5
#43 0x00007fffc66c01a3 in WebCore::RenderBlock::paintContents(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#44 0x00007fffc670b96d in WebCore::RenderBlock::paintObject(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#45 0x00007fffc66e7c60 in WebCore::RenderBlock::paint(WebCore::PaintInfo&, WebCore::LayoutPoint const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#46 0x00007fffc6797357 in WebCore::RenderLayer::paintForegroundForFragmentsWithPhase(WebCore::PaintPhase, WTF::Vector<WebCore::LayerFragment, 1ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc> const&, WebCore::GraphicsContext&, WebCore::RenderLayer::LayerPaintingInfo const&, WTF::OptionSet<WebCore::PaintBehavior>, WebCore::RenderObject*) () from /opt/qt5/lib/libQt5WebKit.so.5
#47 0x00007fffc679d41b in WebCore::RenderLayer::paintForegroundForFragments(WTF::Vector<WebCore::LayerFragment, 1ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc> const&, WebCore::GraphicsContext&, WebCore::GraphicsContext&, WebCore::LayoutRect const&, bool, WebCore::RenderLayer::LayerPaintingInfo const&, WTF::OptionSet<WebCore::PaintBehavior>, WebCore::RenderObject*) () from /opt/qt5/lib/libQt5WebKit.so.5
#48 0x00007fffc67a198b in WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext&, WebCore::RenderLayer::LayerPaintingInfo const&, WTF::OptionSet<WebCore::RenderLayer::PaintLayerFlag>) () from /opt/qt5/lib/libQt5WebKit.so.5
#49 0x00007fffc67a3beb in WebCore::RenderLayer::paintList(WebCore::RenderLayer::LayerList, WebCore::GraphicsContext&, WebCore::RenderLayer::LayerPaintingInfo const&, WTF::OptionSet<WebCore::RenderLayer::PaintLayerFlag>) () from /opt/qt5/lib/libQt5WebKit.so.5
#50 0x00007fffc67a122d in WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext&, WebCore::RenderLayer::LayerPaintingInfo const&, WTF::OptionSet<WebCore::RenderLayer::PaintLayerFlag>) () from /opt/qt5/lib/libQt5WebKit.so.5
#51 0x00007fffc67a30a5 in WebCore::RenderLayer::paint(WebCore::GraphicsContext&, WebCore::LayoutRect const&, WebCore::LayoutSize const&, WTF::OptionSet<WebCore::PaintBehavior>, WebCore::RenderObject*, WTF::OptionSet<WebCore::RenderLayer::PaintLayerFlag>, WebCore::RenderLayer::SecurityOriginPaintPolicy, WebCore::RegionContext*) () from /opt/qt5/lib/libQt5WebKit.so.5
#52 0x00007fffc63a264e in WebCore::LocalFrameView::paintContents(WebCore::GraphicsContext&, WebCore::IntRect const&, WebCore::Widget::SecurityOriginPaintPolicy, WebCore::RegionContext*) () from /opt/qt5/lib/libQt5WebKit.so.5
#53 0x00007fffc53a808a in QWebFrameAdapter::renderRelativeCoords(QPainter*, int, QRegion const&) () from /opt/qt5/lib/libQt5WebKit.so.5
#54 0x00007fffc0032539 in QWebView::paintEvent(QPaintEvent*) () from /opt/qt5/lib/libQt5WebKitWidgets.so.5
--Type <RET> for more, q to quit, c to continue without paging--
#55 0x00007fffc072983f in meth_QWebView_paintEvent () from /usr/lib/python3.12/site-packages/PyQt5/QtWebKitWidgets.abi3.so
#56 0x00007ffff7a74962 in cfunction_call (func=0x7fffb8429850, args=0x7fff400711e0, kwargs=0x0) at ../Objects/methodobject.c:548
#57 0x00007ffff7a1e39c in _PyObject_MakeTpCall (tstate=0x7ffff7f646c8 <_PyRuntime+459656>, callable=callable@entry=0x7fffb8429850,
args=args@entry=0x7ffff7f802a8, nargs=1, keywords=0x0) at ../Objects/call.c:240
#58 0x00007ffff7a1e701 in _PyObject_VectorcallTstate (kwnames=<optimized out>, nargsf=<optimized out>, args=0x7ffff7f802a8, callable=0x7fffb8429850,
tstate=<optimized out>) at ../Include/internal/pycore_call.h:90
#59 0x00007ffff79bf7bf in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at Python/bytecodes.c:2706
#60 0x00007ffff7a2194e in _PyObject_VectorcallTstate (kwnames=0x0, nargsf=2, args=0x7fffffffb930, callable=0x7fff227c8d60,
tstate=0x7ffff7f646c8 <_PyRuntime+459656>) at ../Include/internal/pycore_call.h:92
#61 method_vectorcall (method=<optimized out>, args=0x7fffc1949948, nargsf=<optimized out>, kwnames=0x0) at ../Objects/classobject.c:91
#62 0x00007fffd18b13a3 in call_method (va=0x7fffffffb9a8, fmt=0x7fffc0740039 "D", method=0x7fffc1ba3ec0) at siplib.c:2269
#63 sip_api_call_procedure_method (gil_state=PyGILState_UNLOCKED, error_handler=0x7fffd06059d0 <sipVEH_QtCore_PyQt5(_sipSimpleWrapper*, PyGILState_STATE)>,
py_self=0x7fffb83ec560, method=0x7fffc1ba3ec0, fmt=0x7fffc0740039 "D") at siplib.c:2291
#64 0x00007fffc07229cd in sipVH_QtWebKitWidgets_51(PyGILState_STATE, void (*)(_sipSimpleWrapper*, PyGILState_STATE), _sipSimpleWrapper*, _object*, QPaintEvent*) () from /usr/lib/python3.12/site-packages/PyQt5/QtWebKitWidgets.abi3.so
#65 0x00007fffc07296cb in sipQWebView::paintEvent(QPaintEvent*) () from /usr/lib/python3.12/site-packages/PyQt5/QtWebKitWidgets.abi3.so
#66 0x00007fffcc4dbb20 in QWidget::event(QEvent*) () from /opt/qt5/lib/libQt5Widgets.so.5
#67 0x00007fffc0727e73 in sipQWebView::event(QEvent*) () from /usr/lib/python3.12/site-packages/PyQt5/QtWebKitWidgets.abi3.so
#68 0x00007fffcc49d15e in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /opt/qt5/lib/libQt5Widgets.so.5
#69 0x00007fffccd0bc1e in sipQApplication::notify(QObject*, QEvent*) () from /usr/lib/python3.12/site-packages/PyQt5/QtWidgets.abi3.so
#70 0x00007fffd026f7c8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /opt/qt5/lib/libQt5Core.so.5
#71 0x00007fffcc4d49b5 in QWidgetPrivate::sendPaintEvent(QRegion const&) () from /opt/qt5/lib/libQt5Widgets.so.5
#72 0x00007fffcc4d5283 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /opt/qt5/lib/libQt5Widgets.so.5
#73 0x00007fffcc4d652e in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /opt/qt5/lib/libQt5Widgets.so.5
#74 0x00007fffcc4d4efa in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /opt/qt5/lib/libQt5Widgets.so.5
#75 0x00007fffcc4d652e in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /opt/qt5/lib/libQt5Widgets.so.5
#76 0x00007fffcc4d4efa in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /opt/qt5/lib/libQt5Widgets.so.5
#77 0x00007fffcc4d652e in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /opt/qt5/lib/libQt5Widgets.so.5
#78 0x00007fffcc4d4efa in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /opt/qt5/lib/libQt5Widgets.so.5
#79 0x00007fffcc4d652e in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /opt/qt5/lib/libQt5Widgets.so.5
--Type <RET> for more, q to quit, c to continue without paging--
#80 0x00007fffcc4d6385 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /opt/qt5/lib/libQt5Widgets.so.5
#81 0x00007fffcc4d4efa in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /opt/qt5/lib/libQt5Widgets.so.5
#82 0x00007fffcc4d652e in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /opt/qt5/lib/libQt5Widgets.so.5
#83 0x00007fffcc4d6385 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /opt/qt5/lib/libQt5Widgets.so.5
#84 0x00007fffcc4d4efa in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /opt/qt5/lib/libQt5Widgets.so.5
#85 0x00007fffcc4ad9c5 in ?? () from /opt/qt5/lib/libQt5Widgets.so.5
#86 0x00007fffcc4ae13a in ?? () from /opt/qt5/lib/libQt5Widgets.so.5
#87 0x00007fffcc4f6dc2 in ?? () from /opt/qt5/lib/libQt5Widgets.so.5
#88 0x00007fffcc49d15e in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /opt/qt5/lib/libQt5Widgets.so.5
#89 0x00007fffccd0bc1e in sipQApplication::notify(QObject*, QEvent*) () from /usr/lib/python3.12/site-packages/PyQt5/QtWidgets.abi3.so
#90 0x00007fffd026f7c8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /opt/qt5/lib/libQt5Core.so.5
#91 0x00007fffcbd95cf7 in QGuiApplicationPrivate::processExposeEvent(QWindowSystemInterfacePrivate::ExposeEvent*) () from /opt/qt5/lib/libQt5Gui.so.5
#92 0x00007fffcbd6924c in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /opt/qt5/lib/libQt5Gui.so.5
#93 0x00007fffc1864710 in ?? () from /opt/qt5/lib/libQt5WaylandClient.so.5
#94 0x00007fffd0d08484 in g_main_dispatch () from /usr/lib64/libglib-2.0.so.0
#95 0x00007fffd0d0b628 in g_main_context_iterate_unlocked.isra () from /usr/lib64/libglib-2.0.so.0
#96 0x00007fffd0d0bddc in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#97 0x00007fffd02c5026 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /opt/qt5/lib/libQt5Core.so.5
#98 0x00007fffd026e3cb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /opt/qt5/lib/libQt5Core.so.5
#99 0x00007fffd0276180 in QCoreApplication::exec() () from /opt/qt5/lib/libQt5Core.so.5
#100 0x00007fffccd0aed2 in meth_QApplication_exec () from /usr/lib/python3.12/site-packages/PyQt5/QtWidgets.abi3.so
#101 0x00007ffff7a74962 in cfunction_call (func=0x7fffb8401a80, args=0x7ffff7f06d28 <_PyRuntime+76264>, kwargs=0x0) at ../Objects/methodobject.c:548
#102 0x00007ffff7a1e39c in _PyObject_MakeTpCall (tstate=0x7ffff7f646c8 <_PyRuntime+459656>, callable=callable@entry=0x7fffb8401a80,
args=args@entry=0x7ffff7f80218, nargs=0, keywords=0x0) at ../Objects/call.c:240
#103 0x00007ffff7a1e701 in _PyObject_VectorcallTstate (kwnames=<optimized out>, nargsf=<optimized out>, args=0x7ffff7f80218, callable=0x7fffb8401a80,
tstate=<optimized out>) at ../Include/internal/pycore_call.h:90
#104 0x00007ffff79bf7bf in _PyEval_EvalFrameDefault (tstate=tstate@entry=0x7ffff7f646c8 <_PyRuntime+459656>, frame=<optimized out>,
frame@entry=0x7ffff7f80020, throwflag=throwflag@entry=0) at Python/bytecodes.c:2706
#105 0x00007ffff7b304b7 in _PyEval_EvalFrame (throwflag=0, frame=0x7ffff7f80020, tstate=0x7ffff7f646c8 <_PyRuntime+459656>)
at ../Include/internal/pycore_ceval.h:89
#106 _PyEval_Vector (args=0x0, argcount=0, kwnames=0x0, locals=0x7fffd224dbc0, func=0x7fffd222e480, tstate=0x7ffff7f646c8 <_PyRuntime+459656>)
at ../Python/ceval.c:1683
#107 PyEval_EvalCode (co=co@entry=0x40b250, globals=globals@entry=0x7fffd224dbc0, locals=locals@entry=0x7fffd224dbc0) at ../Python/ceval.c:578
--Type <RET> for more, q to quit, c to continue without paging--
#108 0x00007ffff7b88696 in run_eval_code_obj (tstate=tstate@entry=0x7ffff7f646c8 <_PyRuntime+459656>, co=co@entry=0x40b250,
globals=globals@entry=0x7fffd224dbc0, locals=locals@entry=0x7fffd224dbc0) at ../Python/pythonrun.c:1691
#109 0x00007ffff7b887a9 in run_mod (mod=<optimized out>, filename=filename@entry=0x7fffd224dd30, globals=globals@entry=0x7fffd224dbc0,
locals=locals@entry=0x7fffd224dbc0, flags=flags@entry=0x7fffffffd748, arena=arena@entry=0x7fffd216fe10) at ../Python/pythonrun.c:1712
#110 0x00007ffff7b8b46c in pyrun_file (flags=0x7fffffffd748, closeit=1, locals=0x7fffd224dbc0, globals=0x7fffd224dbc0, start=257, filename=0x7fffd224dd30,
fp=0x406590) at ../Python/pythonrun.c:1612
#111 _PyRun_SimpleFileObject (fp=fp@entry=0x406590, filename=filename@entry=0x7fffd224dd30, closeit=closeit@entry=1, flags=flags@entry=0x7fffffffd748)
at ../Python/pythonrun.c:433
#112 0x00007ffff7b8ba4c in _PyRun_AnyFileObject (fp=0x406590, filename=filename@entry=0x7fffd224dd30, closeit=closeit@entry=1,
flags=flags@entry=0x7fffffffd748) at ../Python/pythonrun.c:78
#113 0x00007ffff7bb16f9 in pymain_run_file_obj (skip_source_first_line=0, filename=0x7fffd224dd30, program_name=0x7fffd203b4b0) at ../Modules/main.c:360
#114 pymain_run_file (config=0x7ffff7f072a8 <_PyRuntime+77672>) at ../Modules/main.c:379
#115 pymain_run_python (exitcode=exitcode@entry=0x7fffffffd84c) at ../Modules/main.c:629
#116 0x00007ffff7bb1b36 in Py_RunMain () at ../Modules/main.c:709
#117 0x00007ffff7bb1ca7 in pymain_main (args=0x7fffffffd870) at ../Modules/main.c:739
#118 Py_BytesMain (argc=<optimized out>, argv=<optimized out>) at ../Modules/main.c:763
#119 0x00007ffff75a7c4a in __libc_start_call_main (main=main@entry=0x401040 <main>, argc=argc@entry=2, argv=argv@entry=0x7fffffffd9e8)
at ../sysdeps/nptl/libc_start_call_main.h:58
#120 0x00007ffff75a7d05 in __libc_start_main_impl (main=0x401040 <main>, argc=2, argv=0x7fffffffd9e8, init=<optimized out>, fini=<optimized out>,
rtld_fini=<optimized out>, stack_end=0x7fffffffd9d8) at ../csu/libc-start.c:360
#121 0x0000000000401071 in _start () at ../sysdeps/x86_64/start.S:115
(gdb) x/i $rip
=> 0x7fffcc081900 <_ZN12QPainterPathC2ERKS_>: mov rax,QWORD PTR [rsi]
(gdb) i r rsi
rsi 0x0 0
(gdb) disas
Dump of assembler code for function _ZN12QPainterPathC2ERKS_:
=> 0x00007fffcc081900 <+0>: mov rax,QWORD PTR [rsi]
0x00007fffcc081903 <+3>: mov QWORD PTR [rdi],rax
0x00007fffcc081906 <+6>: test rax,rax
0x00007fffcc081909 <+9>: je 0x7fffcc08190f <_ZN12QPainterPathC2ERKS_+15>
0x00007fffcc08190b <+11>: lock add DWORD PTR [rax],0x1
0x00007fffcc08190f <+15>: ret
End of assembler dump.
Hello! First off, thanks to all involved for your efforts to keep QtWebKit alive!
I heard about this from https://github.com/qutebrowser/qutebrowser/issues/4039#issuecomment-1493410426 and decided to try it out, but PyQt can't seem to build against it. I started on a road of stripping out references to things like qwebpluginfactory (part of the "Legacy" API?) but didn't get very far, and I'm worried I'd just screw it up entirely if I kept going...
Basically, do the PyQt bindings need to be rewritten for the non-"Legacy" API? I'm not too familiar with it, so I'm not sure what's involved...