Author Topic: Qt6 Development  (Read 365186 times)

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2282
  • Karma: +176/-0
    • View Profile
Qt6 Development
« on: November 10, 2022, 09:28:30 pm »
Hey guys,

A couple of points to make first:
1) I wouldn't even be attempting this without the work of bww in creating the Qt5 port to OS/2
2) This may be beyond my capabilities depending on the scope of changes between Qt5 and Qt6

But.... I've created https://github.com/psmedley/qt6-os2

One of the most significant changes between Qt5 and Qt6 is that the build system has COMPLETELY changed to now use cmake. Fortunately, we have a port of cmake - which needed to be updated to >= 3.16 - which I've done at https://github.com/psmedley/cmake-os2 (noting that this repo still needs some cleansing of generated build files).

I have hacked (cough, ported) things enough to the point I get a reasonable looking config.summary - noting that this is only Qtbase - not any of the other modules.

Last night I added in all the os2 specific files from the bww Qt5 repo, and also generated a diff between the virgin qt 5.15.2 code and the bww repo, which I'll attempt to apply today to my Qt6 repo.

Next steps will be to work through the ~11 cmakelists.txt files which determine which source files to build, and add code in to build the *os2* source files.

I'll try and keep this thread updated, but also suggest monitoring commits on github.

Finally, NOTHING may come of this - and also refer back to my points at the start of this post!

Cheers,

Paul
« Last Edit: January 24, 2023, 11:16:57 pm by Martin Iturbide »

Tom

  • Full Member
  • ***
  • Posts: 212
  • Karma: +6/-0
    • View Profile
Re: Qt6
« Reply #1 on: November 10, 2022, 11:15:49 pm »
Paul.

Are you aware of the financial differences between the licensing models for Qt5 and Qt6? Be careful!

David McKenna

  • Hero Member
  • *****
  • Posts: 813
  • Karma: +25/-0
    • View Profile
Re: Qt6
« Reply #2 on: November 10, 2022, 11:19:50 pm »
 Hi Paul,

 Wow - The journey of a thousand miles starts with one step! Would be absolutely awesome if you can make QT6 work. I'll be following and testing when/if you have some binaries...

Regards,

Martin Iturbide

  • OS2World NewsMaster
  • Global Moderator
  • Hero Member
  • *****
  • Posts: 5022
  • Karma: +44/-1
  • Your Friend Wil Declares...
    • View Profile
    • Martin's Personal Blog
Re: Qt6
« Reply #3 on: November 10, 2022, 11:29:03 pm »
Hi Paul

First of all, I wish you the best of lucks and I will support you with whatever is on my hands. Remember (Everybody should remember) that this is big task, and for sure the firsts build attempts will not be perfect and will contain flaws. It is a thing that will have to improve with time, it does not has to be perfect on the first shot, so there is no preassure.

About the licencing.
https://doc.qt.io/qt-6/licensing.html

Qt 6.4 (according to that web page) is still under the LGPL V3 license and some components under the GNU GPL. There is an option to buy Qt for commercial use if the plan is to create a close source Qt 6 port for commercial use. (which it is not the plan here). That is what I was able to find for the moment.

For what I see Qt is selling some development tools and the rights to close source the framework. On our case I guess we will be using the "Community version of Qt".
Check the obligations here: https://www.qt.io/download-open-source#obligations
It is basically to comply to the GPL and LGPL license.

Regards
Martin Iturbide
OS2World NewsMaster
... just share the dream.

Tom

  • Full Member
  • ***
  • Posts: 212
  • Karma: +6/-0
    • View Profile
Re: Qt6
« Reply #4 on: November 11, 2022, 03:13:11 am »
Paul.

Are you aware of the financial differences between the licensing models for Qt5 and Qt6? Be careful!

My question was based on previous information (around 2020) that Qt would change it's licensing model to 'commercial' for Qt6. If I heard it well, Dmitriy also mentioned this in his interview for Warpstock 2022.

Dave Yeo

  • Hero Member
  • *****
  • Posts: 5083
  • Karma: +117/-1
    • View Profile
Re: Qt6
« Reply #5 on: November 11, 2022, 04:28:49 am »
Seems one of the problems was LTS versions of QT5 (excepting the web engine) were only available commercially, KDE kept its own repository of patches for that and also some modules such as the charting one are only available under a commercial license.
Wouldn't be surprised that they floated the idea of only commercial licensing and got so much push back that they caved. It happened before.

Mentore

  • Full Member
  • ***
  • Posts: 223
  • Karma: +11/-0
    • View Profile
Re: Qt6
« Reply #6 on: November 11, 2022, 08:41:21 am »
Seems one of the problems was LTS versions of QT5 (excepting the web engine) were only available commercially, KDE kept its own repository of patches for that and also some modules such as the charting one are only available under a commercial license.
Wouldn't be surprised that they floated the idea of only commercial licensing and got so much push back that they caved. It happened before.

I recently installed Qt6 on the Windows machine I work with and yes, there is an open source solution which I think Paul will find useful.
Paul, I cannot praise you enough for your incredible work on porting software for OS/2. And even if this should not bring anywhere, it will however have some impact on OS/2 software development.

Mentore

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2282
  • Karma: +176/-0
    • View Profile
Re: Qt6
« Reply #7 on: November 11, 2022, 10:02:50 am »
Working through failed patches whilst trying to build in parallel :)

This is where we got to today:
[  7%] Building CXX object src/tools/bootstrap/CMakeFiles/Bootstrap.dir/__/__/corelib/text/qstring.cpp.o
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/text/qstring.cpp:6322:7: error: #error "This case shouldn't happen"

Noting we also have (from the log of applying the patch):
patching file src/corelib/text/qstring.cpp
Hunk #1 FAILED at 6566.
1 out of 1 hunk FAILED -- saving rejects to file src/corelib/text/qstring.cpp.rej

This one should be easy enough to get past.

First goal is to get qmake.exe built :)

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2282
  • Karma: +176/-0
    • View Profile
Re: Qt6
« Reply #8 on: November 12, 2022, 12:17:11 am »
This morning's progress:
 Directory of  U:\DEV\qtbase-everywhere-src-6.2.4\build\bin\*.exe

12/11/22   9:37       3,059,854      0   ___A_  cmake_automoc_parser.exe
12/11/22   9:36       3,417,995      0   ___A_  moc.exe
12/11/22   9:37       2,646,057      0   ___A_  rcc.exe
12/11/22   9:37       2,388,997      0   ___A_  tracegen.exe
      11,512,903 bytes (10MB) in 4 files and 0 dirs

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2282
  • Karma: +176/-0
    • View Profile
Re: Qt6
« Reply #9 on: November 12, 2022, 08:36:16 am »
Hey guys,

Update - I got to the stage where an attempt to link qtcore6.dll was made :) It had a bunch of missing symbols due to the *os2.cpp files not being added to the build process.

I've updated git with all the code changes so far.

Build is now breaking with:
Code: [Select]
[ 23%] Building CXX object src/corelib/CMakeFiles/Core.dir/io/qprocess_os2.cpp.o
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:154:10: warning: 'virtual void QProcessManager::run()' can be marked override [-Wsuggest-override]
  154 |     void run();
      |          ^~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp: In static member function 'static USHORT QProcessManager::addProcess(QProcess*)':
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:276:32: error: cannot call member function 'QThreadPrivate* QThread::d_func()' without object
  276 |     QProcessPrivate *d = d_func();
      |                          ~~~~~~^~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp: In static member function 'static void QProcessManager::removeProcess(USHORT)':
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:346:32: error: cannot call member function 'QThreadPrivate* QThread::d_func()' without object
  346 |     QProcessPrivate *d = d_func();
      |                          ~~~~~~^~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:336:15: warning: unused variable 'process' [-Wunused-variable]
  336 |     QProcess *process = instance->processes[procKey];
      |               ^~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp: In member function 'virtual void QProcessManager::run()':
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:439:33: error: 'QProcessPrivate* QProcess::d_func()' is private within this context
  439 |                 if (proc->d_func()->waitMode) {
      |                     ~~~~~~~~~~~~^~
In file included from U:/dev/qtbase-everywhere-src-6.2.4/build/include/QtCore/qglobal.h:1,
                 from U:/dev/qtbase-everywhere-src-6.2.4/mkspecs/os2-g++/qplatformdefs.h:52,
                 from U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:44:
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/global/qglobal.h:1286:28: note: declared private here
 1286 |     inline Class##Private* d_func() noexcept \
      |                            ^~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess.h:275:5: note: in expansion of macro 'Q_DECLARE_PRIVATE'
  275 |     Q_DECLARE_PRIVATE(QProcess)
      |     ^~~~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:440:49: error: 'QProcessPrivate* QProcess::d_func()' is private within this context
  440 |                     DosPostEventSem(proc->d_func()->waitSem);
      |                                     ~~~~~~~~~~~~^~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/global/qglobal.h:1286:28: note: declared private here
 1286 |     inline Class##Private* d_func() noexcept \
      |                            ^~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess.h:275:5: note: in expansion of macro 'Q_DECLARE_PRIVATE'
  275 |     Q_DECLARE_PRIVATE(QProcess)
      |     ^~~~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:518:29: error: 'QProcessPrivate* QProcess::d_func()' is private within this context
  518 |                 proc->d_func()->pipes[type]->bytes = pipeStates[i].usAvail;
      |                 ~~~~~~~~~~~~^~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/global/qglobal.h:1286:28: note: declared private here
 1286 |     inline Class##Private* d_func() noexcept \
      |                            ^~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess.h:275:5: note: in expansion of macro 'Q_DECLARE_PRIVATE'
  275 |     Q_DECLARE_PRIVATE(QProcess)
      |     ^~~~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:530:29: error: 'QProcessPrivate* QProcess::d_func()' is private within this context
  530 |             if (proc->d_func()->waitMode) {
      |                 ~~~~~~~~~~~~^~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/global/qglobal.h:1286:28: note: declared private here
 1286 |     inline Class##Private* d_func() noexcept \
      |                            ^~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess.h:275:5: note: in expansion of macro 'Q_DECLARE_PRIVATE'
  275 |     Q_DECLARE_PRIVATE(QProcess)
      |     ^~~~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:531:45: error: 'QProcessPrivate* QProcess::d_func()' is private within this context
  531 |                 DosPostEventSem(proc->d_func()->waitSem);
      |                                 ~~~~~~~~~~~~^~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/global/qglobal.h:1286:28: note: declared private here
 1286 |     inline Class##Private* d_func() noexcept \
      |                            ^~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess.h:275:5: note: in expansion of macro 'Q_DECLARE_PRIVATE'
  275 |     Q_DECLARE_PRIVATE(QProcess)
      |     ^~~~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp: At global scope:
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:1292:6: error: no declaration matches 'bool QProcessPrivate::waitForStarted(int)'
 1292 | bool QProcessPrivate::waitForStarted(int /*msecs*/)
      |      ^~~~~~~~~~~~~~~
In file included from U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:81:
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_p.h:407:10: note: candidate is: 'bool QProcessPrivate::waitForStarted(const QDeadlineTimer&)'
  407 |     bool waitForStarted(const QDeadlineTimer &deadline);
      |          ^~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_p.h:231:7: note: 'class QProcessPrivate' defined here
  231 | class QProcessPrivate : public QIODevicePrivate
      |       ^~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:1405:6: error: no declaration matches 'bool QProcessPrivate::waitForReadyRead(int)'
 1405 | bool QProcessPrivate::waitForReadyRead(int msecs)
      |      ^~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_p.h:408:10: note: candidate is: 'bool QProcessPrivate::waitForReadyRead(const QDeadlineTimer&)'
  408 |     bool waitForReadyRead(const QDeadlineTimer &deadline);
      |          ^~~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_p.h:231:7: note: 'class QProcessPrivate' defined here
  231 | class QProcessPrivate : public QIODevicePrivate
      |       ^~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:1410:6: error: no declaration matches 'bool QProcessPrivate::waitForBytesWritten(int)'
 1410 | bool QProcessPrivate::waitForBytesWritten(int msecs)
      |      ^~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_p.h:409:10: note: candidate is: 'bool QProcessPrivate::waitForBytesWritten(const QDeadlineTimer&)'
  409 |     bool waitForBytesWritten(const QDeadlineTimer &deadline);
      |          ^~~~~~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_p.h:231:7: note: 'class QProcessPrivate' defined here
  231 | class QProcessPrivate : public QIODevicePrivate
      |       ^~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:1415:6: error: no declaration matches 'bool QProcessPrivate::waitForFinished(int)'
 1415 | bool QProcessPrivate::waitForFinished(int msecs)
      |      ^~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_p.h:410:10: note: candidate is: 'bool QProcessPrivate::waitForFinished(const QDeadlineTimer&)'
  410 |     bool waitForFinished(const QDeadlineTimer &deadline);
      |          ^~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_p.h:231:7: note: 'class QProcessPrivate' defined here
  231 | class QProcessPrivate : public QIODevicePrivate
      |       ^~~~~~~~~~~~~~~
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp: In member function 'int QProcessPrivate::_q_notified(int)':
U:/dev/qtbase-everywhere-src-6.2.4/src/corelib/io/qprocess_os2.cpp:1535:31: error: could not convert '((QProcessPrivate*)this)->QProcessPrivate::_q_processDied()' from 'void' to 'bool'
 1535 |             if (_q_processDied())
      |                 ~~~~~~~~~~~~~~^~
      |                               |
      |                               void
make[2]: *** [src/corelib/CMakeFiles/Core.dir/io/qprocess_os2.cpp.o] Error 1
make[1]: *** [src/corelib/CMakeFiles/Core.dir/all] Error 2
make: *** [all] Error 2

My c++ is not great - but I'll attempt to continue work on this tomorrow.

For anyone who wants to try building, I'm using:
Code: [Select]
dash ../configure -prefix /qt6 -no-opengl -release -system-sqlite -openssl-linked -no-pch 2>&1 | tee configure.log
This needs cmake 3.16 - I have built it locally, but Dave is having issues with the code in github... I'll package up a build...

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2282
  • Karma: +176/-0
    • View Profile
Re: Qt6
« Reply #10 on: November 12, 2022, 09:36:47 pm »
I've having broadband issues, so smedley.id.au is down - but cmake-3.16.9 should be available from https://drive.google.com/file/d/11hR1juvCTEHM0Oy-YlUq6NLYHv_hHTKf/view?usp=share_link

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2282
  • Karma: +176/-0
    • View Profile
Re: Qt6
« Reply #11 on: November 13, 2022, 12:17:18 am »
Progress...
Code: [Select]
Error! E2028: __ZN19QStorageInfoPrivate14mountedVolumesEv is an undefined reference
Error! E2028: __ZN19QStorageInfoPrivate4rootEv is an undefined reference
Error! E2028: __ZN19QStorageInfoPrivate6doStatEv is an undefined reference
Error! E2028: __ZN15QProcessPrivate11_q_canWriteEv is an undefined reference
Error! E2028: __ZN15QProcessPrivate7cleanupEv is an undefined reference
Error! E2028: __ZN19QIcuTimeZonePrivateC1ERK10QByteArray is an undefined reference
Error! E2028: __ZN19QIcuTimeZonePrivateC1Ev is an undefined reference
Error! E2028: __ZN8QProcess9writeDataEPKcx is an undefined reference
Error! E2028: _SLJIT_UPDATE_WX_FLAGS is an undefined reference
file U:/tmp\ldconv_qstorageinfo_cpp_o_eb986370289019e340.obj(ldconv_qstorageinfo_cpp_o_eb986370289019e340.obj): undefined symbol __ZN19QStorageInfoPrivate14mountedVolumesEv
file U:/tmp\ldconv_qstorageinfo_cpp_o_eb986370289019e340.obj(ldconv_qstorageinfo_cpp_o_eb986370289019e340.obj): undefined symbol __ZN19QStorageInfoPrivate4rootEv
file U:/tmp\ldconv_qstorageinfo_cpp_o_eb986370289019e340.obj(ldconv_qstorageinfo_cpp_o_eb986370289019e340.obj): undefined symbol __ZN19QStorageInfoPrivate6doStatEv
file U:/tmp\ldconv_qprocess_os2_cpp_o_eb98637028921bc7a0.obj(ldconv_qprocess_os2_cpp_o_eb98637028921bc7a0.obj): undefined symbol __ZN15QProcessPrivate11_q_canWriteEv
file U:/tmp\ldconv_qprocess_os2_cpp_o_eb98637028921bc7a0.obj(ldconv_qprocess_os2_cpp_o_eb98637028921bc7a0.obj): undefined symbol __ZN15QProcessPrivate7cleanupEv
file U:/tmp\ldconv_qtimezone_cpp_o_eb986370289319cbd0.obj(ldconv_qtimezone_cpp_o_eb986370289319cbd0.obj): undefined symbol __ZN19QIcuTimeZonePrivateC1ERK10QByteArray
file U:/tmp\ldconv_qtimezone_cpp_o_eb986370289319cbd0.obj(ldconv_qtimezone_cpp_o_eb986370289319cbd0.obj): undefined symbol __ZN19QIcuTimeZonePrivateC1Ev
file U:/tmp\ldconv_qprocess_cpp_o_eb98637028931b3330.obj(ldconv_qprocess_cpp_o_eb98637028931b3330.obj): undefined symbol __ZN15QProcessPrivate7cleanupEv
file U:/tmp\ldconv_qprocess_cpp_o_eb98637028931b3330.obj(ldconv_qprocess_cpp_o_eb98637028931b3330.obj): undefined symbol __ZN15QProcessPrivate11_q_canWriteEv
file U:/tmp\ldconv_qprocess_cpp_o_eb98637028931b3330.obj(ldconv_qprocess_cpp_o_eb98637028931b3330.obj): undefined symbol __ZN8QProcess9writeDataEPKcx
file U:\tmp\ldconv_Qt6BundledPcre2_a_eb9863702894143238.lib(pcre2_jit_compile.c.obj): undefined symbol _SLJIT_UPDATE_WX_FLAGS
make[3]: *** [lib/Qt6Core6.dll] Error 1
make[2]: *** [src/corelib/CMakeFiles/Core.dir/all] Error 2
make[1]: *** [src/corelib/CMakeFiles/Core.dir/rule] Error 2
make: *** [src/corelib/CMakeFiles/Core.dir/rule] Error 2

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2282
  • Karma: +176/-0
    • View Profile
Re: Qt6
« Reply #12 on: November 13, 2022, 04:27:42 am »
A few more fixes and I now have:
13/11/22  11:21         189,134      0   ___A_  Qt6Conc6.dll
13/11/22  11:21      14,433,100      0   ___A_  Qt6Core6.dll
13/11/22  11:24         533,956      0   ___A_  Qt6Sql6.dll

Now broken on QtNetwork :)

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2282
  • Karma: +176/-0
    • View Profile
Re: Qt6
« Reply #13 on: November 13, 2022, 07:39:05 am »
I now have:
13/11/22  16:33         189,140      0   ___A_  Qt6Conc6.dll
13/11/22  16:33      14,433,308      0   ___A_  Qt6Core6.dll
13/11/22  17:00       1,328,606      0   ___A_  Qt6DBus6.dll
13/11/22  16:36       3,006,722      0   ___A_  Qt6Netw6.dll
13/11/22  16:33         533,971      0   ___A_  Qt6Sql6.dll
13/11/22  16:38         788,144      0   ___A_  Qt6Xml6.dll

..and just started on the Qt6Gui6.dll...
13/11/22  17:32      12,604,680      0   ___A_  Qt6Gui6.dll

Then broke at some point after that in the widgets directory...
« Last Edit: November 13, 2022, 08:13:21 am by Paul Smedley »

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2282
  • Karma: +176/-0
    • View Profile
Re: Qt6
« Reply #14 on: November 13, 2022, 08:55:59 am »
...and something is broken... trying to run uic.exe (or any exe that links against Qt6Core6.dll gives a:
SYS1808:
The process has stopped.  The software diagnostic
code (exception code) is  0005.

& from popuplog.os2:
11-13-2022  18:07:13  SYS3175  PID 510c  TID 0001  Slot 0088
U:\DEV\QTBASE-EVERYWHERE-SRC-6.2.4\BUILD\BIN\UIC.EXE
c0000005
1d574aab
P1=00000010  P2=ffffffff  P3=XXXXXXXX  P4=XXXXXXXX 
EAX=00000002  EBX=00003640  ECX=00000001  EDX=510c0001
ESI=001af9c0  EDI=10d3a0a8 
DS=0053  DSACC=d0f3  DSLIM=7fffffff 
ES=0053  ESACC=d0f3  ESLIM=7fffffff 
FS=150b  FSACC=00f3  FSLIM=00000030
GS=0000  GSACC=****  GSLIM=********
CS:EIP=005b:1d574aab  CSACC=d0df  CSLIM=7fffffff
SS:ESP=0053:001af970  SSACC=d0f3  SSLIM=7fffffff
EBP=001af9e8  FLG=00012202

QT6CORE6.DLL 0001:00214aab