[Development] QtQuickComponents ComboBox with QEglFSWindow

Matt Broadstone mbroadst at gmail.com
Wed Apr 16 20:15:04 CEST 2014


On Wed, Apr 16, 2014 at 1:21 PM, Matt Broadstone <mbroadst at gmail.com> wrote:

> On Mon, Apr 14, 2014 at 12:25 PM, Matt Broadstone <mbroadst at gmail.com>wrote:
>
>> On Mon, Apr 14, 2014 at 7:07 AM, Rutledge Shawn <Shawn.Rutledge at digia.com
>> > wrote:
>>
>>>
>>> On 11 Apr 2014, at 10:15 PM, Matt Broadstone wrote:
>>>
>>> > Hi,
>>> > We're experiencing an odd crash while running our Qt Quick application
>>> in a VirtualBox session using eglfs on the framebuffer. The application
>>> works perfectly passing the '-platform eglfs' options, however, when we try
>>> to use a ComboBox we get a segfault/qFatal, with the resulting backtrace
>>> (only first twelve frames included for "brevity"):
>>> >
>>> > #0  0x00007eff7c041389 in raise () from /usr/lib/libc.so.6
>>> > #1  0x00007eff7c042788 in abort () from /usr/lib/libc.so.6
>>> > #2  0x00007eff7c956895 in qt_message_fatal (context=..., message=...)
>>> at global/qlogging.cpp:979
>>> > #3  QMessageLogger::fatal (this=this at entry=0x7fff32b96030,
>>> msg=msg at entry=0x7eff7768e380 "EGLFS: OpenGL windows cannot be mixed
>>> with others.") at global/qlogging.cpp:384
>>> > #4  0x00007eff7766cfb7 in QEglFSWindow::create (this=this at entry=0x1db8030)
>>> at qeglfswindow.cpp:115
>>> > #5  0x00007eff7766b60e in QEglFSIntegration::createPlatformWindow
>>> (this=<optimized out>, window=0x1db66f0) at qeglfsintegration.cpp:122
>>> > #6  0x00007eff7d03180b in QWindow::create (this=this at entry=0x1db66f0)
>>> at kernel/qwindow.cpp:480
>>> > #7  0x00007eff7d032150 in QWindow::setVisible (this=0x1db66f0,
>>> visible=<optimized out>) at kernel/qwindow.cpp:426
>>> > #8  0x00007eff6c888d6a in QQuickPopupWindow::show (this=this at entry=0x1db66f0)
>>> at qquickpopupwindow.cpp:95
>>> > #9  0x00007eff6c888579 in QQuickMenuPopupWindow::show (this=0x1db66f0)
>>> at qquickmenupopupwindow.cpp:57
>>> > #10 0x00007eff6c884efb in QQuickMenu::__popup (this=0x1bff2e0,
>>> x=<optimized out>, y=<optimized out>, atItemIndex=0) at qquickmenu.cpp:403
>>> > #11 0x00007eff6c897f53 in QQuickMenu::qt_static_metacall (_o=_o at entry=0x1bff2e0,
>>> _c=_c at entry=QMetaObject::InvokeMetaMethod, _id=_id at entry=22, _a=_a at entry=0x7fff32b96550)
>>> at .moc/moc_qquickmenu_p.cpp:227
>>> > #12 0x00007eff6c898427 in QQuickMenu::qt_metacall (this=0x1bff2e0,
>>> _c=QMetaObject::InvokeMetaMethod, _id=22, _a=0x7fff32b96550) at
>>> .moc/moc_qquickmenu_p.cpp:330
>>> >
>>> > There is some mention on the i.MX6 wiki page about multiple windows (
>>> http://qt-project.org/wiki/i.MX-6), but that appears to be related to
>>> mixing Quick views and widgets, which we are not doing. There also seems to
>>> be an existing ComboBox bug (
>>> https://bugreports.qt-project.org/browse/QTBUG-35989), but this looks
>>> like it's quite different.
>>> >
>>> > Any insight would be appreciated, I just wanted to do some further
>>> investigation here before creating the bug report.
>>>
>>> What version do you have?  Looks like the combo box is trying to create
>>> another window for the dropdown list, and we're not allowed to have more
>>> than one window on eglfs.  I don't think it should be doing that anymore on
>>> platforms where it's not supported.
>>>
>>>
>>>
>> Forgot to reply-all on that last one, apologies:
>>
>> Qt 5.2.1 (built from source off the git v5.2.1 tag), using this configure
>> line:
>>
>> ./configure -confirm-license -opensource -debug -system-sqlite
>> -openssl-linked \
>>             -nomake examples -nomake tests -plugin-sql-psql
>> -plugin-sql-sqlite \
>>             -eglfs -no-rpath -optimized-qmake -dbus-linked
>> -reduce-relocations \
>>             -opengl es2 -directfb
>>
>>
>> Running on Arch Linux version 2013.03.01 in VirtualBox 4.3.10 r93012,
>> with the form:
>>    ./ourquickapp -platform eglfs
>>
>> (same thing happens with 5.3 built from source, but this failed related
>> to a different issue related to unaddressable byes for ioctl, and only
>> works when run in valgrind)
>>
>> Please let me know if there's any other information I can provide.
>>  Matt
>>
>>
> Shawn,
> Can you tell me what I should be looking for to guarantee it's following
> the correct code path? The combobox is indeed trying to create a new
> window, as comboboxen are wont to do, and the crash is happening in this
> code block:
>
> qeglfswindow.cpp:80+
>
>     QEglFSScreen *screen = this->screen();
>
>     if (screen->primarySurface() != EGL_NO_SURFACE) {
>
>         if (isRaster() && screen->compositingWindow())
>
>             return;
>
>
> #if !defined(Q_OS_ANDROID) || defined(Q_OS_ANDROID_NO_SDK)
>
>         // We can have either a single OpenGL window or multiple raster windows.
>
>         // Other combinations cannot work.
>
>         qFatal("EGLFS: OpenGL windows cannot be mixed with others.");
>
> #endif
>
>
>         return;
>
>  }
>
>
> Based on your previous email you said: "I don't think it should be doing
> that anymore on platforms where it's not supported," does that mean we
> should be looking for a fix in the QML component code or the QPA code?
> Looking for some insight here so we can help expedite the bug fix, or just
> fix it ourselves.
>
> Thanks,
> Matt
>
>
Shawn,
I've gone ahead and created a bug report, it probably makes more sense to
continue the conversation there:
https://bugreports.qt-project.org/browse/QTBUG-38405

Matt



On Wed, Apr 16, 2014 at 1:21 PM, Matt Broadstone <mbroadst at gmail.com> wrote:

> On Mon, Apr 14, 2014 at 12:25 PM, Matt Broadstone <mbroadst at gmail.com>wrote:
>
>> On Mon, Apr 14, 2014 at 7:07 AM, Rutledge Shawn <Shawn.Rutledge at digia.com
>> > wrote:
>>
>>>
>>> On 11 Apr 2014, at 10:15 PM, Matt Broadstone wrote:
>>>
>>> > Hi,
>>> > We're experiencing an odd crash while running our Qt Quick application
>>> in a VirtualBox session using eglfs on the framebuffer. The application
>>> works perfectly passing the '-platform eglfs' options, however, when we try
>>> to use a ComboBox we get a segfault/qFatal, with the resulting backtrace
>>> (only first twelve frames included for "brevity"):
>>> >
>>> > #0  0x00007eff7c041389 in raise () from /usr/lib/libc.so.6
>>> > #1  0x00007eff7c042788 in abort () from /usr/lib/libc.so.6
>>> > #2  0x00007eff7c956895 in qt_message_fatal (context=..., message=...)
>>> at global/qlogging.cpp:979
>>> > #3  QMessageLogger::fatal (this=this at entry=0x7fff32b96030,
>>> msg=msg at entry=0x7eff7768e380 "EGLFS: OpenGL windows cannot be mixed
>>> with others.") at global/qlogging.cpp:384
>>> > #4  0x00007eff7766cfb7 in QEglFSWindow::create (this=this at entry=0x1db8030)
>>> at qeglfswindow.cpp:115
>>> > #5  0x00007eff7766b60e in QEglFSIntegration::createPlatformWindow
>>> (this=<optimized out>, window=0x1db66f0) at qeglfsintegration.cpp:122
>>> > #6  0x00007eff7d03180b in QWindow::create (this=this at entry=0x1db66f0)
>>> at kernel/qwindow.cpp:480
>>> > #7  0x00007eff7d032150 in QWindow::setVisible (this=0x1db66f0,
>>> visible=<optimized out>) at kernel/qwindow.cpp:426
>>> > #8  0x00007eff6c888d6a in QQuickPopupWindow::show (this=this at entry=0x1db66f0)
>>> at qquickpopupwindow.cpp:95
>>> > #9  0x00007eff6c888579 in QQuickMenuPopupWindow::show (this=0x1db66f0)
>>> at qquickmenupopupwindow.cpp:57
>>> > #10 0x00007eff6c884efb in QQuickMenu::__popup (this=0x1bff2e0,
>>> x=<optimized out>, y=<optimized out>, atItemIndex=0) at qquickmenu.cpp:403
>>> > #11 0x00007eff6c897f53 in QQuickMenu::qt_static_metacall (_o=_o at entry=0x1bff2e0,
>>> _c=_c at entry=QMetaObject::InvokeMetaMethod, _id=_id at entry=22, _a=_a at entry=0x7fff32b96550)
>>> at .moc/moc_qquickmenu_p.cpp:227
>>> > #12 0x00007eff6c898427 in QQuickMenu::qt_metacall (this=0x1bff2e0,
>>> _c=QMetaObject::InvokeMetaMethod, _id=22, _a=0x7fff32b96550) at
>>> .moc/moc_qquickmenu_p.cpp:330
>>> >
>>> > There is some mention on the i.MX6 wiki page about multiple windows (
>>> http://qt-project.org/wiki/i.MX-6), but that appears to be related to
>>> mixing Quick views and widgets, which we are not doing. There also seems to
>>> be an existing ComboBox bug (
>>> https://bugreports.qt-project.org/browse/QTBUG-35989), but this looks
>>> like it's quite different.
>>> >
>>> > Any insight would be appreciated, I just wanted to do some further
>>> investigation here before creating the bug report.
>>>
>>> What version do you have?  Looks like the combo box is trying to create
>>> another window for the dropdown list, and we're not allowed to have more
>>> than one window on eglfs.  I don't think it should be doing that anymore on
>>> platforms where it's not supported.
>>>
>>>
>>>
>> Forgot to reply-all on that last one, apologies:
>>
>> Qt 5.2.1 (built from source off the git v5.2.1 tag), using this configure
>> line:
>>
>> ./configure -confirm-license -opensource -debug -system-sqlite
>> -openssl-linked \
>>             -nomake examples -nomake tests -plugin-sql-psql
>> -plugin-sql-sqlite \
>>             -eglfs -no-rpath -optimized-qmake -dbus-linked
>> -reduce-relocations \
>>             -opengl es2 -directfb
>>
>>
>> Running on Arch Linux version 2013.03.01 in VirtualBox 4.3.10 r93012,
>> with the form:
>>    ./ourquickapp -platform eglfs
>>
>> (same thing happens with 5.3 built from source, but this failed related
>> to a different issue related to unaddressable byes for ioctl, and only
>> works when run in valgrind)
>>
>> Please let me know if there's any other information I can provide.
>>  Matt
>>
>>
> Shawn,
> Can you tell me what I should be looking for to guarantee it's following
> the correct code path? The combobox is indeed trying to create a new
> window, as comboboxen are wont to do, and the crash is happening in this
> code block:
>
> qeglfswindow.cpp:80+
>
>     QEglFSScreen *screen = this->screen();
>
>     if (screen->primarySurface() != EGL_NO_SURFACE) {
>
>         if (isRaster() && screen->compositingWindow())
>
>             return;
>
>
> #if !defined(Q_OS_ANDROID) || defined(Q_OS_ANDROID_NO_SDK)
>
>         // We can have either a single OpenGL window or multiple raster windows.
>
>         // Other combinations cannot work.
>
>         qFatal("EGLFS: OpenGL windows cannot be mixed with others.");
>
> #endif
>
>
>         return;
>
>  }
>
>
> Based on your previous email you said: "I don't think it should be doing
> that anymore on platforms where it's not supported," does that mean we
> should be looking for a fix in the QML component code or the QPA code?
> Looking for some insight here so we can help expedite the bug fix, or just
> fix it ourselves.
>
> Thanks,
> Matt
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20140416/52de3d32/attachment.html>


More information about the Development mailing list