Summary: | sci-calculators/speedcrunch-0.12.0-r1: crash with dev-qt/qtgui-5.15.12 | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | doj |
Component: | Current packages | Assignee: | Gentoo Science Related Packages <sci> |
Status: | UNCONFIRMED --- | ||
Severity: | normal | CC: | doj, sam |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | AMD64 | ||
OS: | Linux | ||
See Also: | https://bugreports.qt.io/browse/QTBUG-122064 | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Attachments: | emerge info |
Description
doj
2024-02-01 23:13:08 UTC
Created attachment 883968 [details]
emerge info
Can you try with debugging symbols for dev-qt/* (no need for qtwebengine) and speedcrunch if not already got them? Maybe try with -O2 at the same time and I imagine it'll go away. fillRect is suspicious and it's been the source of problems before. Think it came up in anotehr bug recently but not sure which. here's a screenshot of my gdb session. I don't see anything wrong with the "d" or "d->extended" objects, but it seems that the virtual function call to fillRect() is crashing. I don't know how to debug this, but I assume that this version of QT 5.15.12 simply doesn't set up these C++ objects correctly. It's probably not a gentoo bug, but rather a QT bug. But if you see more crash reports in Gentoo with this version of QT, you should remove this QT version from the list of stable versions. I've looked at the qt.io bug tracker, but currently no open issue for a crash when calling fillRect(). Maybe I should create a bug report for QT developers. ┌─/usr/src/debug/dev-qt/qtgui-5.15.12/qtbase-everywhere-src-5.15.12/src/gui/painting/qpainter.cpp──────────────────────────────────────────────────────────────────┐ │ 6983 \fn void QPainter::fillRect(const QRect &rectangle, const QBrush &brush) │ │ 6984 \overload │ │ 6985 │ │ 6986 Fills the given \a rectangle with the specified \a brush. │ │ 6987 */ │ │ 6988 │ │ 6989 void QPainter::fillRect(const QRect &r, const QBrush &brush) │ │ 6990 { │ │ 6991 Q_D(QPainter); │ │ 6992 │ │ 6993 if (!d->engine) │ │ 6994 return; │ │ 6995 │ │ 6996 if (d->extended && !needsEmulation(brush)) { │ │ > 6997 d->extended->fillRect(r, brush); │ │ 6998 return; │ │ 6999 } │ │ 7000 │ │ 7001 QPen oldPen = pen(); │ │ 7002 QBrush oldBrush = this->brush(); │ │ 7003 setPen(Qt::NoPen); │ │ 7004 if (brush.style() == Qt::SolidPattern) { │ │ 7005 d->colorBrush.setStyle(Qt::SolidPattern); │ │ 7006 d->colorBrush.setColor(brush.color()); │ │ 7007 setBrush(d->colorBrush); │ │ 7008 } else { │ │ 7009 setBrush(brush); │ │ 7010 } │ │ 7011 │ │ 7012 drawRect(r); │ └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ multi-thre Thread 0x7ffff74911 In: QPainter::fillRect L6997 PC: 0x7ffff722ac20 (gdb) p d $1 = (QPainterPrivate * const) 0x555555c0c4e0 (gdb) p d->extended $2 = (QPaintEngineEx *) 0x555555b6a110 (gdb) p d->extended->fillRect cannot resolve overloaded method `fillRect': no arguments supplied (gdb) p d->extended->fillRect(r,brush) Cannot resolve method QPaintEngineEx::fillRect to any overloaded instance The type: 'QPaintEngineEx *' isn't fully known to GDB. Please cast it directly to the desired typed in the function call. (gdb) p *(d->extended) $3 = {<QPaintEngine> = {_vptr.QPaintEngine = 0x7ffff747a330 <vtable for QRasterPaintEngine+16>, state = 0x555555c1de38, gccaps = {i = 4294967295}, active = 1, selfDestruct = 0, extended = 1, d_ptr = {d = 0x555555a51910}}, <No data fields>} Qt don't maintain the 5.15.x for FOSS releases anymore. We'd need to first reproduce this with Qt 6 and/or report it to KDE's Qt5PatchCollection. Although if it were reproducible without any of the backports, maybe Qt would be interested. Anyway, let's see what asturm says. |