[Development] QtQuickComponents ComboBox with QEglFSWindow

Matt Broadstone mbroadst at gmail.com
Wed Apr 16 19:21:15 CEST 2014


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/9f32a72f/attachment.html>


More information about the Development mailing list