[Development] Debugging qwindow-compositor with example/opengl/hellogl_es2

Elvis Lee kwangwoong.lee at lge.com
Thu Jul 19 11:23:35 CEST 2012


I tested qwindow-compositor with some examples and found that hellogl_es2
was not working.

It’s because that the app was blocked in
QWaylandDisplay::blockingReadEvents, waiting frameCallback.

But the frameCallback is already read and it’s on wayland connection.

Briefly, QWaylandWindow::waitForFrameSync() was re-entered.

 

I am not sure, but I think there are two problems. Or one of them.

1.     QWaylandWindow::waitForFrameSync() or
QWaylandDisplay::blockingReadEvents() are not considered for re-enterence.
Since it does not just read, but also handle events, re-enterence might be
occurred and it makes the order of events change.

2.     Waiting frameCallback, the app received onscreenVisiblitiy event for
extendedSurfaceReady from qwindow-compositor. 

 

 

I hope this will be fixed. Or let me know how to fix it, then I will try.

If you have any interest about this, reference attached the gdb logs.

 

Thanks.

Elvis.

 

 

 

#0  wl_os_recvmsg_cloexec (sockfd=10, msg=0x7fffffffbff0, flags=0) at
wayland-os.c:123

#1  0x00007ffff2d03150 in wl_connection_data (connection=0x618e70,
mask=<optimized out>) at connection.c:311

#2  0x00007ffff2d02973 in wl_display_iterate (display=0x6133e0,
mask=<optimized out>) at wayland-client.c:515

#3  0x00007ffff3591f53 in QWaylandDisplay::blockingReadEvents
(this=0x6237c0) at qwaylanddisplay.cpp:207

#4  0x00007ffff3593d3f in QWaylandWindow::waitForFrameSync (this=0x719f90)
at qwaylandwindow.cpp:250

#5  0x00007ffff358d0af in QWaylandShmBackingStore::beginPaint
(this=0x71a270)

    at qwaylandshmbackingstore.cpp:171

#6  0x00007ffff6d0b264 in QBackingStore::beginPaint (this=0x7198f0,
region=...)

    at painting/qbackingstore.cpp:138

#7  0x00007ffff72fe7f8 in QWidgetBackingStore::beginPaint (this=0x71a2d0,
toClean=..., widget=0x7fffffffe2f0,

    backingStore=0x7198f0, returnInfo=0x7fffffffc470,
toCleanIsInTopLevelCoordinates=true)

    at kernel/qwidgetbackingstore.cpp:313

#8  0x00007ffff7302782 in QWidgetBackingStore::sync (this=0x71a2d0) at
kernel/qwidgetbackingstore.cpp:1052

#9  0x00007ffff732b8ed in QWidgetPrivate::syncBackingStore (this=0x65fd50)
at kernel/qwidget.cpp:1663

#10 0x00007ffff7367616 in QWidgetWindow::handleResizeEvent (this=0x72d0d0,
event=0x7fffffffcdf0)

    at kernel/qwidgetwindow.cpp:401

#11 0x00007ffff7366784 in QWidgetWindow::event (this=0x72d0d0,
event=0x7fffffffcdf0)

    at kernel/qwidgetwindow.cpp:159

#12 0x00007ffff72f4800 in QApplicationPrivate::notify_helper
(this=0x613d30, receiver=0x72d0d0,

    e=0x7fffffffcdf0) at kernel/qapplication.cpp:3594

#13 0x00007ffff72f1ffc in QApplication::notify (this=0x7fffffffe320,
receiver=0x72d0d0, e=0x7fffffffcdf0)

    at kernel/qapplication.cpp:3051

#14 0x00007ffff657f098 in QCoreApplication::notifyInternal
(this=0x7fffffffe320, receiver=0x72d0d0,

    event=0x7fffffffcdf0) at kernel/qcoreapplication.cpp:725

#15 0x00007ffff6b87d51 in QCoreApplication::sendSpontaneousEvent
(receiver=0x72d0d0, event=0x7fffffffcdf0)

    at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:214

#16 0x00007ffff6b861c7 in QGuiApplicationPrivate::processExposeEvent
(e=0x7fffffffcee0)

    at kernel/qguiapplication.cpp:1968

#17 0x00007ffff6b827c6 in QGuiApplicationPrivate::processWindowSystemEvent
(e=0x7fffffffcee0)

    at kernel/qguiapplication.cpp:1158

#18 0x00007ffff6b75125 in
QWindowSystemInterface::handleSynchronousExposeEvent (tlw=0x72d0d0,
region=...)

    at kernel/qwindowsysteminterface.cpp:474

#19 0x00007ffff359819c in QWaylandExtendedSurface::onscreen_visibility
(data=0x72d8c0,

    wl_extended_surface=0x72d890, visible=1) at
qwaylandextendedsurface.cpp:153

---Type <return> to continue, or q <return> to quit---

#20 0x00007ffff1cbea14 in ffi_call_unix64 () from /usr/lib/x86_64-linux-
gnu/libffi.so.6

#21 0x00007ffff1cbe435 in ffi_call () from /usr/lib/x86_64-linux-gnu/libffi.
so.6

#22 0x00007ffff2d0425f in wl_closure_invoke (closure=<optimized out>,
target=0x72d890, func=<optimized out>,

    data=0x72d8c0) at connection.c:773

#23 0x00007ffff2d029af in handle_event (size=12, opcode=<optimized out>,
id=<optimized out>, display=0x6133e0)

    at wayland-client.c:495

#24 wl_display_iterate (display=0x6133e0, mask=<optimized out>) at wayland-
client.c:528

#25 0x00007ffff3591f53 in QWaylandDisplay::blockingReadEvents
(this=0x6237c0) at qwaylanddisplay.cpp:207

#26 0x00007ffff3593d3f in QWaylandWindow::waitForFrameSync (this=0x719f90)
at qwaylandwindow.cpp:250

#27 0x00007ffff358d0af in QWaylandShmBackingStore::beginPaint
(this=0x71a270)

    at qwaylandshmbackingstore.cpp:171

#28 0x00007ffff6d0b264 in QBackingStore::beginPaint (this=0x7198f0,
region=...)

    at painting/qbackingstore.cpp:138

#29 0x00007ffff72fe7f8 in QWidgetBackingStore::beginPaint (this=0x71a2d0,
toClean=..., widget=0x7fffffffe2f0,

    backingStore=0x7198f0, returnInfo=0x7fffffffd400,
toCleanIsInTopLevelCoordinates=true)

    at kernel/qwidgetbackingstore.cpp:313

#30 0x00007ffff7302782 in QWidgetBackingStore::sync (this=0x71a2d0) at
kernel/qwidgetbackingstore.cpp:1052

#31 0x00007ffff732b8ed in QWidgetPrivate::syncBackingStore (this=0x65f500)
at kernel/qwidget.cpp:1663

#32 0x00007ffff733c713 in QWidget::event (this=0x7fffffffe2f0,
event=0x72dcb0) at kernel/qwidget.cpp:8144

#33 0x00007ffff74c2a9a in QMainWindow::event (this=0x7fffffffe2f0,
event=0x72dcb0)

    at widgets/qmainwindow.cpp:1465

#34 0x00007ffff72f4800 in QApplicationPrivate::notify_helper
(this=0x613d30, receiver=0x7fffffffe2f0,

    e=0x72dcb0) at kernel/qapplication.cpp:3594

#35 0x00007ffff72f4664 in QApplication::notify (this=0x7fffffffe320,
receiver=0x7fffffffe2f0, e=0x72dcb0)

    at kernel/qapplication.cpp:3559

#36 0x00007ffff657f098 in QCoreApplication::notifyInternal
(this=0x7fffffffe320, receiver=0x7fffffffe2f0,

    event=0x72dcb0) at kernel/qcoreapplication.cpp:725

#37 0x00007ffff6582e67 in QCoreApplication::sendEvent
(receiver=0x7fffffffe2f0, event=0x72dcb0)

    at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:211

#38 0x00007ffff6580156 in QCoreApplicationPrivate::sendPostedEvents
(receiver=0x0, event_type=0,

    data=0x613eb0) at kernel/qcoreapplication.cpp:1325

#39 0x00007ffff657fd1d in QCoreApplication::sendPostedEvents (receiver=0x0,
event_type=0)

    at kernel/qcoreapplication.cpp:1185

#40 0x00007ffff6b75159 in QWindowSystemInterface::sendWindowSystemEvents
(eventDispatcher=0x622390, flags=...)

---Type <return> to continue, or q <return> to quit---

    at kernel/qwindowsysteminterface.cpp:482

#41 0x00007ffff362433e in QUnixEventDispatcherQPA::processEvents
(this=0x622390, flags=...)

    at eventdispatchers/qunixeventdispatcher.cpp:70

#42 0x00007ffff657c25b in QEventLoop::processEvents (this=0x7fffffffe270,
flags=...)

    at kernel/qeventloop.cpp:135

#43 0x00007ffff657c529 in QEventLoop::exec (this=0x7fffffffe270, flags=...)
at kernel/qeventloop.cpp:211

#44 0x00007ffff657f721 in QCoreApplication::exec () at
kernel/qcoreapplication.cpp:977

#45 0x00007ffff6b8245b in QGuiApplication::exec () at
kernel/qguiapplication.cpp:1037

#46 0x00007ffff72f1c2e in QApplication::exec () at
kernel/qapplication.cpp:2942

#47 0x0000000000405faf in main (argc=1, argv=0x7fffffffe428) at main.cpp:51

(gdb)

--

Elvis Lee (이광웅)

Software Engineer @ LG Electronics Inc.

CTO Division / SW Platform Lab. / Advanced OS Tech Team.

Yang-jae dong 221, Seoul, Korea.

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20120719/0f015a6b/attachment.html>


More information about the Development mailing list