Qt 4.7.1 problems on Symbian^3 emulator



  • Hi,

    I am looking for help to run Qt 4.7.1 with Symbian^3^. I have working Qt 4.7.1 installation with S60 5th (S^1^), but I am still facing troubles with Symbian^3. I am not sure if this matters, but I am using the Carbide.C++ and Windows 7 (64bit) Professional.

    Here is description of what I have done. After installing everything I have problems with project building, there was an error displayed in console:

    @***Invoking abld command
    perl.exe -S ABLD.PL \Symbian\Projects\symworkspace\TestHelloWorldS3\ makefile winscw Makefile_0xE2990DD8
    make -r -f "\Symbian\S3_v2\Nokia_Symbian3_SDK_v0.9_2\EPOC32\BUILD\Symbian\Projects\symworkspace\TestHelloWorldS3\WINSCW.make" MAKEFILEMAKEFILE_0XE2990DD8 VERBOSE=-s
    make -j 4 -s -C \Symbian\Projects\symworkspace\TestHelloWorldS3 -f "MAKEFILE_0XE2990DD8.MK" TO_ROOT=........ EPOCBLD=........\Symbian\S3_v2\Nokia_Symbian3_SDK_v0.9_2\EPOC32\BUILD\Symbian\Projects\symworkspace\TestHelloWorldS3\MAKEFILE_0XE2990DD8\WINSCW TO_BLDINF=........\Symbian\Projects\symworkspace\TestHelloWorldS3 PLATFORM=WINSCW MAKMAKE
    process_begin: CreateProcess((null), /epoc32/tools/uic TestHelloWorldS3.ui -o ui_TestHelloWorldS3.h, ...) failed.
    make (e=2): The system cannot find the file specified.

    make[2]: *** [ui_TestHelloWorldS3.h] Error 2@

    So I deleted /epoc32/tools/ paths from Makefile manually to build the application as shown below:
    @/epoc32/tools/moc -> moc
    /epoc32/tools/uic -> uic@

    After installing on emulator application crashes with KERN-EXEC 3, after trying to debug it I have found that there is kind of problem with QStatusBar creation in generated header file, so I commented it out to make the application running:

    @// statusbar = new QStatusBar(Hello_qt);
    // statusbar->setObjectName(QString::fromUtf8("statusbar"));
    // Hello_qt->setStatusBar(statusbar);@

    But it crashes later anyway in framwork code...

    There is the stack trace (not sure if useful) - the error is same, no matter is I comment out the QStatusBar initialization or not:

    @TestHelloWorldS3 Emulator Debug (WINSCW) [Nokia_Symbian3_SDK_v0.9_2] [Symbian OS Emulation]
    epoc.exe [Process ID: 3992] (Suspended)
    ...
    Thread [Thread id: 7088] (Suspended: Signal 'Halt' received. Description: User halted thread.)
    40 0x22BB66( ekern.exe )() 0x0022bb66
    ...
    25 0x600034F8( euser.dll )() 0x600034f8
    24 CArrayFixCOpenFontFile::TAttrib::operator C:\dev\symb\SDKs\32\epoc32\include\e32base.inl:183 0x647b6b3c
    23 COpenFontFile::FaceAttrib() C:\dev\symb\SDKs\32\epoc32\include\openfont.h:2302 0x647b6b0f
    22 COpenFont::FaceAttrib() C:\dev\symb\SDKs\32\epoc32\include\openfont.h:1549 0x647b6adb
    21 QSymbianFontDatabaseExtrasImplementation::extras() D:\Symbian\Qt_4.7.1_symbian\src\gui\text\qfontdatabase_s60.cpp:248 0x647b6465
    20 addFontToScreenDevice() D:\Symbian\Qt_4.7.1_symbian\src\gui\text\qfontdatabase_s60.cpp:362 0x647b7592
    19 initializeDb() D:\Symbian\Qt_4.7.1_symbian\src\gui\text\qfontdatabase_s60.cpp:401 0x647b7dff
    18 QFontDatabase::findFont() D:\Symbian\Qt_4.7.1_symbian\src\gui\text\qfontdatabase_s60.cpp:463 0x647b7fc8
    17 QFontDatabase::load() D:\Symbian\Qt_4.7.1_symbian\src\gui\text\qfontdatabase_s60.cpp:562 0x647b88e0
    16 QFontPrivate::engineForScript() D:\Symbian\Qt_4.7.1_symbian\src\gui\text\qfont.cpp:270 0x6479d93b
    15 QFontMetrics::height() D:\Symbian\Qt_4.7.1_symbian\src\gui\text\qfontmetrics.cpp:329 0x647af73b
    14 QStatusBar::reformat() D:\Symbian\Qt_4.7.1_symbian\src\gui\widgets\qstatusbar.cpp:544 0x649474c0
    13 QStatusBar::setSizeGripEnabled() D:\Symbian\Qt_4.7.1_symbian\src\gui\widgets\qstatusbar.cpp:506 0x64947139
    12 QStatusBar::QStatusBar() D:\Symbian\Qt_4.7.1_symbian\src\gui\widgets\qstatusbar.cpp:289 0x6494656a
    11 Ui_TestHelloWorldS3::setupUi() D:\Symbian\Projects\symworkspace\TestHelloWorldS3\ui_TestHelloWorldS3.h:49 0x1a1e13ea
    10 TestHelloWorldS3::TestHelloWorldS3() D:\Symbian\Projects\symworkspace\TestHelloWorldS3\TestHelloWorldS3.cpp:16 0x1a1e112d
    9 main() D:\Symbian\Projects\symworkspace\TestHelloWorldS3\main.cpp:19 0x1a1e1057
    8 QtMainWrapper() D:\Symbian\Qt_4.7.1_symbian\src\s60main\qts60main_mcrt0.cpp:86 0x1a1e3151
    7 E32Main() D:\Symbian\Qt_4.7.1_symbian\src\s60main\qts60main.cpp:56 0x1a1e2cbc
    6 _E32Startup() M:\sf\os\kernelhwsrv\kernel\eka\euser\epoc\win32\uc_exe.cpp:87 0x1a1e260c
    5 0x22ACD3( ekern.exe )() 0x0022acd3
    4 0x229667( ekern.exe )() 0x00229667
    3 0x76E63677( KERNEL32.dll )() 0x76e63677
    2 0x77389D42( ntdll.dll )() 0x77389d42
    1 0x77389D15( ntdll.dll )() 0x77389d15
    Thread [Thread id: 7120] (Running) @

    Any help with this?

    Kind Regards,
    STeN



  • Hmm, you commented out the statusbar, yet the stack trace still has calls from the statusbar? You've cleaned?

    It seems to crash when trying to open the font file for the statusbar caption.

    Carbide is so scary. I've moved to QtCreator and haven't dealt with this stuff in a long time :O.



  • Hi,

    sorry for confusing post - I mean that the error with the font was same even I commented out the QStatusBar initialization. It was caused by another line of code called later, which sets the QPushButton text:

    @
    pushButton->setText(QApplication::translate("TestHelloWorldS3", "myButton", 0, QApplication::UnicodeUTF8));@

    If I commented also this out application can be started, otherwise the error symptoms are same:

    @TestHelloWorldS3 Emulator Debug (WINSCW) [Nokia_Symbian3_SDK_v0.9_2] [Symbian OS Emulation]
    epoc.exe [Process ID: 1732] (Suspended)
    ...
    Thread [Thread id: 5700] (Running)
    Thread [Thread id: 6304] (Suspended: Signal 'Halt' received. Description: User halted thread.)
    ...
    50 0x2A9A15( ekern.exe )() 0x002a9a15
    49 0x600034F8( euser.dll )() 0x600034f8
    48 CArrayFixCOpenFontFile::TAttrib::operator C:\dev\symb\SDKs\32\epoc32\include\e32base.inl:183 0x614b6b3c
    47 COpenFontFile::FaceAttrib() C:\dev\symb\SDKs\32\epoc32\include\openfont.h:2302 0x614b6b0f
    46 COpenFont::FaceAttrib() C:\dev\symb\SDKs\32\epoc32\include\openfont.h:1549 0x614b6adb
    45 QSymbianFontDatabaseExtrasImplementation::extras() D:\Symbian\Qt_4.7.1_symbian\src\gui\text\qfontdatabase_s60.cpp:248 0x614b6465
    44 addFontToScreenDevice() D:\Symbian\Qt_4.7.1_symbian\src\gui\text\qfontdatabase_s60.cpp:362 0x614b7592
    43 initializeDb() D:\Symbian\Qt_4.7.1_symbian\src\gui\text\qfontdatabase_s60.cpp:401 0x614b7dff
    42 QFontDatabase::findFont() D:\Symbian\Qt_4.7.1_symbian\src\gui\text\qfontdatabase_s60.cpp:463 0x614b7fc8
    41 QFontDatabase::load() D:\Symbian\Qt_4.7.1_symbian\src\gui\text\qfontdatabase_s60.cpp:562 0x614b88e0
    40 QFontPrivate::engineForScript() D:\Symbian\Qt_4.7.1_symbian\src\gui\text\qfont.cpp:270 0x6149d93b
    39 QFontMetricsF::leading() D:\Symbian\Qt_4.7.1_symbian\src\gui\text\qfontmetrics.cpp:1215 0x614b171b
    38 qt_format_text() D:\Symbian\Qt_4.7.1_symbian\src\gui\painting\qpainter.cpp:8028 0x61379280
    37 QPainter::drawText() D:\Symbian\Qt_4.7.1_symbian\src\gui\painting\qpainter.cpp:6053 0x613747b5
    36 QStyle::drawItemText() D:\Symbian\Qt_4.7.1_symbian\src\gui\styles\qstyle.cpp:541 0x6141ab6c
    35 QCommonStyle::drawControl() D:\Symbian\Qt_4.7.1_symbian\src\gui\styles\qcommonstyle.cpp:1303 0x6142833e
    34 QS60Style::drawControl() D:\Symbian\Qt_4.7.1_symbian\src\gui\styles\qs60style.cpp:2084 0x61491c7e
    33 QS60Style::drawControl() D:\Symbian\Qt_4.7.1_symbian\src\gui\styles\qs60style.cpp:1330 0x6148e7b1
    32 QStylePainter::drawControl() D:\Symbian\Qt_4.7.1_symbian\src\gui\painting\qstylepainter.h:90 0x61078e40
    31 QPushButton::paintEvent() D:\Symbian\Qt_4.7.1_symbian\src\gui\widgets\qpushbutton.cpp:454 0x61635fef
    30 QWidget::event() D:\Symbian\Qt_4.7.1_symbian\src\gui\kernel\qwidget.cpp:8347 0x612f499c
    29 QAbstractButton::event() D:\Symbian\Qt_4.7.1_symbian\src\gui\widgets\qabstractbutton.cpp:1080 0x6158d46f
    28 QPushButton::event() D:\Symbian\Qt_4.7.1_symbian\src\gui\widgets\qpushbutton.cpp:683 0x61636a8a
    27 QApplicationPrivate::notify_helper() D:\Symbian\Qt_4.7.1_symbian\src\gui\kernel\qapplication.cpp:4445 0x612a48cc
    26 QApplication::notify() D:\Symbian\Qt_4.7.1_symbian\src\gui\kernel\qapplication.cpp:4410 0x612a3bbf
    25 QCoreApplication::notifyInternal() D:\Symbian\Qt_4.7.1_symbian\src\corelib\kernel\qcoreapplication.cpp:732 0x4d29708b
    24 QCoreApplication::sendSpontaneousEvent() D:\Symbian\Qt_4.7.1_symbian\src\corelib\kernel\qcoreapplication.h:218 0x4d209f06
    23 QWidgetPrivate::drawWidget() D:\Symbian\Qt_4.7.1_symbian\src\gui\kernel\qwidget.cpp:5433 0x612edc1f
    22 QWidgetPrivate::paintSiblingsRecursive() D:\Symbian\Qt_4.7.1_symbian\src\gui\kernel\qwidget.cpp:5641 0x612ee9ce
    21 QWidgetPrivate::drawWidget() D:\Symbian\Qt_4.7.1_symbian\src\gui\kernel\qwidget.cpp:5487 0x612edfb1
    20 QWidgetPrivate::paintSiblingsRecursive() D:\Symbian\Qt_4.7.1_symbian\src\gui\kernel\qwidget.cpp:5641 0x612ee9ce
    19 QWidgetPrivate::drawWidget() D:\Symbian\Qt_4.7.1_symbian\src\gui\kernel\qwidget.cpp:5487 0x612edfb1
    18 QWidgetBackingStore::sync() D:\Symbian\Qt_4.7.1_symbian\src\gui\painting\qbackingstore.cpp:1336 0x6141085f
    17 QWidgetPrivate::syncBackingStore() D:\Symbian\Qt_4.7.1_symbian\src\gui\kernel\qwidget.cpp:1819 0x612e5a81
    16 QSymbianControl::SizeChanged() D:\Symbian\Qt_4.7.1_symbian\src\gui\kernel\qapplication_s60.cpp:1183 0x613142a6
    15 0x40607866( cone.dll )() 0x40607866
    14 QWidgetPrivate::show_sys() D:\Symbian\Qt_4.7.1_symbian\src\gui\kernel\qwidget_s60.cpp:521 0x6131ce42
    13 QWidgetPrivate::show_helper() D:\Symbian\Qt_4.7.1_symbian\src\gui\kernel\qwidget.cpp:7400 0x612f2c4f
    12 QWidget::setVisible() D:\Symbian\Qt_4.7.1_symbian\src\gui\kernel\qwidget.cpp:7609 0x612f31dd
    11 QWidget::show() D:\Symbian\Qt_4.7.1_symbian\src\gui\kernel\qwidget.h:487 0x6103fc10
    10 QWidget::showMaximized() D:\Symbian\Qt_4.7.1_symbian\src\gui\kernel\qwidget.cpp:3035 0x612e8b43
    9 main() D:\Symbian\Projects\symworkspace\TestHelloWorldS3\main.cpp:22 0x0b881067
    8 QtMainWrapper() D:\Symbian\Qt_4.7.1_symbian\src\s60main\qts60main_mcrt0.cpp:86 0x0b8830b1
    7 E32Main() D:\Symbian\Qt_4.7.1_symbian\src\s60main\qts60main.cpp:56 0x0b882c1c
    6 _E32Startup() M:\sf\os\kernelhwsrv\kernel\eka\euser\epoc\win32\uc_exe.cpp:87 0x0b88256c
    5 0x2AACD3( ekern.exe )() 0x002aacd3
    4 0x2A9667( ekern.exe )() 0x002a9667
    3 0x76E63677( KERNEL32.dll )() 0x76e63677
    2 0x77389D42( ntdll.dll )() 0x77389d42
    1 0x77389D15( ntdll.dll )() 0x77389d15
    Thread [Thread id: 6120] (Running)
    @

    BR
    STen



  • [quote]QString::fromUtf8("statusbar")
    ...
    QApplication::UnicodeUTF8[/quote]
    Does it work without using unicode?

    Have you seen this:
    http://discussion.forum.nokia.com/forum/showthread.php?214116-QT-4.7.1-for-Symbian-3-demo-applications-crashing-on-emulator

    Someone with the same problem.

    http://bugreports.qt.nokia.com/browse/QTBUG-5284
    Bug. Last comment, someone with the same stack trace as you.



  • Hi,

    I think it crashes due to some bug in "fontstore":http://developer.symbian.org/xref/oss/xref/Symbian3/sf/os/textandloc/fontservices/fontstore/ compoment.

    My guess is that it crahes when the pointer returned by following method is accessed because it is not valid (see the comment):

    @/*
    Workaround: fntstore.h has an inlined function 'COpenFont* CBitmapFont::OpenFont()'
    that returns a private data member. The header will change between SDKs. But Qt has
    to build on any SDK version and run on other versions of Symbian OS.
    This function performs the needed pointer arithmetic to get the right COpenFont*
    /
    COpenFont
    OpenFontFromBitmapFont(const CBitmapFont* aBitmapFont)
    {
    const TInt offsetIOpenFont = 92; // '_FOFF(CBitmapFont, iOpenFont)' ..if iOpenFont weren't private
    const TUint valueIOpenFont = (TUint)PtrAdd(aBitmapFont, offsetIOpenFont);
    return (valueIOpenFont & 1) ?
    (COpenFont*)PtrAdd(aBitmapFont, valueIOpenFont & ~1) : // New behavior: iOpenFont is offset
    (COpenFont*)valueIOpenFont; // Old behavior: iOpenFont is pointer
    }@

    I have also checked the epocwind.out for some info:
    @ 209.370 FontProvider: Category=3, TextPane Height=29; mapped request=26; asked typeface=Series 60 Sans TitleSmBd; given typeface=Series 60 Sans TitleSmBd, actual range=29(a,d,exa,exd=19 7 5 -2)
    209.375 FontProvider: Category=3, TextPane Height=28; mapped request=26; asked typeface=Series 60 Sans TitleSmBd; given typeface=Series 60 Sans TitleSmBd, actual range=29(a,d,exa,exd=19 7 5 -2)
    209.940 Thread TestHelloWorldS3::TestHelloWorldS3 Panic KERN-EXEC 3@

    What worries me, that this was reported only by 2 people so far - me and the one on the forum.nokia.com.

    Hope someone could solve the issue...
    BR
    STeN



  • Hi,

    I have found one more interesting problem:

    When installing the Qt 4.7.1 over the S^3^ SDK, only binaries (e.g. .dlls) are rewritten, while Qt header files remains untouched. I have saved immediately after start up the QT_VERSION_STR string to qDebug() and the result is still 4.6.3...

    BR
    STeN



  • Which version of FN Symbian SDK you are using? I've tried both 0.8 and 0.9 and they fail miserably when compiling Qt itself so don't expect to have full support on these yet. Symbian PDK is to my knowledge the only working Symbian^3 SDK out there.

    From my experience:
    0.8 is binary incompatible with Firmware on N8, works if you have pre-built Qt.
    0.9 is missing hal.h so nothing actually compiles. This is actually very odd thing as we had 3 different machines all of them 0.9 installed and in one of the machines (Win7) hal.h is extracted but the other 2 (Win XP) are missing it. So we made tests to see what could be causing it but didn't find anything conclusive. I ran on my machine both custom and full install without getting hal.h.

    I also posted on the FN thread with my alter ego jakoskin ;)



  • [quote author="stenlik" date="1291554709"]Hi,
    When installing the Qt 4.7.1 over the S^3^ SDK, only binaries (e.g. .dlls) are rewritten, while Qt header files remains untouched. I have saved immediately after start up the QT_VERSION_STR string to qDebug() and the result is still 4.6.3...
    [/quote]

    One thing you could try is to delete (or move) the Qt headers from epoc32/include to force the use of headers under Qt/include .



  • Hi koshui,

    I have 0.9 S^3^ SDK, I did not tried the PDK... I will probably wait until a 0.9 SDK compatible version will be available on forum.nokia pages:))
    BR
    STeN



  • Hi,

    [quote author="koshui" date="1291574085"][quote author="stenlik" date="1291554709"]Hi,
    When installing the Qt 4.7.1 over the S^3^ SDK, only binaries (e.g. .dlls) are rewritten, while Qt header files remains untouched. I have saved immediately after start up the QT_VERSION_STR string to qDebug() and the result is still 4.6.3...
    [/quote]

    One thing you could try is to delete (or move) the Qt headers from epoc32/include to force the use of headers under Qt/include .
    [/quote]

    I will try to delete old header files (hope there are really only under /mw/qt* subdirectory), to force the Carbide.C++ to use the new from 4.7.1 SDK - but still I am afraid that the font problem will not gone...

    BR
    STeN



  • [quote author="stenlik" date="1291610412"]Hi,
    I will try to delete old header files (hope there are really only under /mw/qt* subdirectory), to force the Carbide.C++ to use the new from 4.7.1 SDK - but still I am afraid that the font problem will not gone...
    [/quote]

    That is the correct directory.
    Can you try copying fonts over from 5.0 SDK ? It wouldn't surprise me at all if the font files are corrupted (or missing).



  • Hi,

    I will try today to delete headers and overwrite fonts (BTW - have you idea, where I can find them) and put here some feedback. Hope there will not be other problems...

    BR
    STeN



  • According to http://developer.symbian.org/xref/oss/xref/Symbian3/sf/os/textandloc/fontservices/fontstore/src/FNTSTORE.CPP they are in \resource\fonts and in Font&Bitmap Servers SID.

    Copying fonts over will most likely have some nice side-effects :)



  • Hi,

    I have tried to change header files - this helps in a way, that QT_VERSION_STR is now 4.7.1, but application was still crashing. Then I tried to replace the fonts with those from Qt 4.7.1. SDK, but it has no positive effects. The SDK is simply not ready to be used in Carbide.C++, at least this is my conclusion from this...

    If anyone will succeed running 4.7.1 with S^3 SDK on Carbide.C++ please give a note here...

    BR
    STEN



  • I replied to FN as well. Qt4.7.1 and Symbian^3 0.9 were never tested to work together and use incompatible build configuration.
    I understood that you knew this and wanted to try anyways.



  • Hi koshui,

    Now I understand that... Thanks for your support, even I was unsuccessful it gave me some knowledge... Please understand that it was little bit confusing for me, that the the Qt 4.7.1 and S^3^ both are available but they are not compatible... I should read the http://doc.qt.nokia.com/4.7/supported-platforms.html first., now I clearly understand that only S60 5th is tested and supported and older 3rd and never S^3^ not.

    Is there any roadmap/plan where the newest Symbian OS will be supported?

    Have a nice day and thanks
    STeN



  • Stenlik, just saw "this":http://labs.qt.nokia.com/2010/12/12/start-with-qt-4-7-for-symbian-today/ lab blog post about running Qt 4.7.1 on Symbian, so give it a shot and let us know



  • That's for QtCreator chetank...
    Doesn't really show anything we aren't already doing :P
    I did that stuff the day Qt4.7.1 came out.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.