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-emulatorSomeone 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,
[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). -
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 -
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