<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Flaky, very flaky</title>
	<atom:link href="http://mikie.iki.fi/wordpress/?feed=rss2&#038;p=33" rel="self" type="application/rss+xml" />
	<link>http://mikie.iki.fi/wordpress/?p=33</link>
	<description>Symbian, CS research and angst</description>
	<lastBuildDate>Mon, 15 Feb 2010 00:23:54 -0800</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Rainer Burgstaller</title>
		<link>http://mikie.iki.fi/wordpress/?p=33&#038;cpage=1#comment-6650</link>
		<dc:creator>Rainer Burgstaller</dc:creator>
		<pubDate>Wed, 28 Feb 2007 09:31:36 +0000</pubDate>
		<guid isPermaLink="false">http://mikie.iki.fi/wordpress/?p=33#comment-6650</guid>
		<description>I can fully back the initial blog post having made similar experiences.
@automatic testing: I got a few comments to that having tried that myself a couple of times. 
a) It is extremely laborous to do automatic testing in C++ especially on symbian as most of the frameworks dont support active objects properly.
b) maintaining the tests then is even worse as it makes refactoring very difficult and laborous. 
c) automatic unit testing works best for stateless systems. Complex applications although (especially graphically rich ones) do use state which makes unit testing just so much harder. It takes LOTS of boilerplate code in order to instanciate and setup test objects, not to mention all the different combinations of cases. 


My personal opinion is that I would love to do automatic testing but I havent figured out an efficient way to do this in Symbian C++. I am a huge fan of unit testing in java but C++ just seems inappropriate. If someone has a good hint on how to do automatic unit testing please let me know.

Regards
- Rainer</description>
		<content:encoded><![CDATA[<p>I can fully back the initial blog post having made similar experiences.<br />
@automatic testing: I got a few comments to that having tried that myself a couple of times.<br />
a) It is extremely laborous to do automatic testing in C++ especially on symbian as most of the frameworks dont support active objects properly.<br />
b) maintaining the tests then is even worse as it makes refactoring very difficult and laborous.<br />
c) automatic unit testing works best for stateless systems. Complex applications although (especially graphically rich ones) do use state which makes unit testing just so much harder. It takes LOTS of boilerplate code in order to instanciate and setup test objects, not to mention all the different combinations of cases. </p>
<p>My personal opinion is that I would love to do automatic testing but I havent figured out an efficient way to do this in Symbian C++. I am a huge fan of unit testing in java but C++ just seems inappropriate. If someone has a good hint on how to do automatic unit testing please let me know.</p>
<p>Regards<br />
- Rainer</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hamish Willee</title>
		<link>http://mikie.iki.fi/wordpress/?p=33&#038;cpage=1#comment-6510</link>
		<dc:creator>Hamish Willee</dc:creator>
		<pubDate>Thu, 22 Feb 2007 05:24:05 +0000</pubDate>
		<guid isPermaLink="false">http://mikie.iki.fi/wordpress/?p=33#comment-6510</guid>
		<description>Hi Mika

I already sent you this, but for anyone else reading - if you get this error:
    Error: 0x20 Unspecified general OS-related error
Then there is a very good chance its related to Platform security.

To confirm this, create the application, SIS and sign it, then install the application outside of codewarrior. In my case (above) the problem was that my DevCert had expired. However any of the platsec errors might cause this - for example setting the time of the phone to before the DevCert was created.

Also note that I&#039;ve found it is possible to debug into the server-side - simply by putting your breakpoint on the server rendezvous. However you can&#039;t debug both sides of a client-server on-device simultaneously because you can only view one process at a time. For debugging you might try running your server in the same process to get around this - and if your architecure allows it.

Regards
H

PS Mika, thank you for your help on this. Stirling.</description>
		<content:encoded><![CDATA[<p>Hi Mika</p>
<p>I already sent you this, but for anyone else reading &#8211; if you get this error:<br />
    Error: 0&#215;20 Unspecified general OS-related error<br />
Then there is a very good chance its related to Platform security.</p>
<p>To confirm this, create the application, SIS and sign it, then install the application outside of codewarrior. In my case (above) the problem was that my DevCert had expired. However any of the platsec errors might cause this &#8211; for example setting the time of the phone to before the DevCert was created.</p>
<p>Also note that I&#8217;ve found it is possible to debug into the server-side &#8211; simply by putting your breakpoint on the server rendezvous. However you can&#8217;t debug both sides of a client-server on-device simultaneously because you can only view one process at a time. For debugging you might try running your server in the same process to get around this &#8211; and if your architecure allows it.</p>
<p>Regards<br />
H</p>
<p>PS Mika, thank you for your help on this. Stirling.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hamish Willee</title>
		<link>http://mikie.iki.fi/wordpress/?p=33&#038;cpage=1#comment-6325</link>
		<dc:creator>Hamish Willee</dc:creator>
		<pubDate>Fri, 16 Feb 2007 05:32:52 +0000</pubDate>
		<guid isPermaLink="false">http://mikie.iki.fi/wordpress/?p=33#comment-6325</guid>
		<description>Hi Mika

Re your answer http://mikie.iki.fi/wordpress/?p=33#comment-6299 this was very helpful. 

Was able to verify that if I pre-created the SIS file it would install/debug. Couldn&#039;t get existing PKG to generate SIS so used the wizard to create a new one - it all then just worked out of the box to debug on N73.

Unfortunately the same project gives &quot;Unable to create process&quot; on E61. Which just goes to show that your &quot;Flaky, very Flaky&quot; heading is sadly true.

Thanks very much for the help.

Regards
H</description>
		<content:encoded><![CDATA[<p>Hi Mika</p>
<p>Re your answer <a href="http://mikie.iki.fi/wordpress/?p=33#comment-6299" rel="nofollow">http://mikie.iki.fi/wordpress/?p=33#comment-6299</a> this was very helpful. </p>
<p>Was able to verify that if I pre-created the SIS file it would install/debug. Couldn&#8217;t get existing PKG to generate SIS so used the wizard to create a new one &#8211; it all then just worked out of the box to debug on N73.</p>
<p>Unfortunately the same project gives &#8220;Unable to create process&#8221; on E61. Which just goes to show that your &#8220;Flaky, very Flaky&#8221; heading is sadly true.</p>
<p>Thanks very much for the help.</p>
<p>Regards<br />
H</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mika</title>
		<link>http://mikie.iki.fi/wordpress/?p=33&#038;cpage=1#comment-6309</link>
		<dc:creator>Mika</dc:creator>
		<pubDate>Thu, 15 Feb 2007 17:17:52 +0000</pubDate>
		<guid isPermaLink="false">http://mikie.iki.fi/wordpress/?p=33#comment-6309</guid>
		<description>If you are seriously considering to distribute your app widely, you do need access to almost all handsets to test with. Times different firmwares (you must at least have the first couple of firmwares, and the different region-variants (EMEA, APAC, Arabic-Hebrew) if you want to support them).

In the beginning, Jaiku was mainly developed on N80, E70 and N73. We had nasty surprises with the N93 (transparency working differently and left-softkeys layout), E61 (early firmware gives a KERN-EXEC 3 when deriving from CAknTitlePane, and problems with repeated GPRS connection attempts),  APAC variants (different font baseline) and now with the N95 (crashes in CPbk classes, CFormattedCellListbox incompatibility).

Drop me a line if you have a version you want tested on an N80.</description>
		<content:encoded><![CDATA[<p>If you are seriously considering to distribute your app widely, you do need access to almost all handsets to test with. Times different firmwares (you must at least have the first couple of firmwares, and the different region-variants (EMEA, APAC, Arabic-Hebrew) if you want to support them).</p>
<p>In the beginning, Jaiku was mainly developed on N80, E70 and N73. We had nasty surprises with the N93 (transparency working differently and left-softkeys layout), E61 (early firmware gives a KERN-EXEC 3 when deriving from CAknTitlePane, and problems with repeated GPRS connection attempts),  APAC variants (different font baseline) and now with the N95 (crashes in CPbk classes, CFormattedCellListbox incompatibility).</p>
<p>Drop me a line if you have a version you want tested on an N80.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Symbiatch</title>
		<link>http://mikie.iki.fi/wordpress/?p=33&#038;cpage=1#comment-6306</link>
		<dc:creator>Symbiatch</dc:creator>
		<pubDate>Thu, 15 Feb 2007 14:09:20 +0000</pubDate>
		<guid isPermaLink="false">http://mikie.iki.fi/wordpress/?p=33#comment-6306</guid>
		<description>I must try RFileLoggers if I get a hold of some of those devices again, E61 should arrive some day, maybe that&#039;ll not work too :)

I don&#039;t have UIDs in the names but the names won&#039;t clash. I don&#039;t think there was mif in the package, reg file I could try to change.

But it&#039;s so difficult when it&#039;s working on the device I own personally, must try to get other phones to test more. And now I&#039;m working on a newer version with a different architecture, but it would be nice to get that version out to testers even if it&#039;s going to be replaced with a newer one some day.</description>
		<content:encoded><![CDATA[<p>I must try RFileLoggers if I get a hold of some of those devices again, E61 should arrive some day, maybe that&#8217;ll not work too :)</p>
<p>I don&#8217;t have UIDs in the names but the names won&#8217;t clash. I don&#8217;t think there was mif in the package, reg file I could try to change.</p>
<p>But it&#8217;s so difficult when it&#8217;s working on the device I own personally, must try to get other phones to test more. And now I&#8217;m working on a newer version with a different architecture, but it would be nice to get that version out to testers even if it&#8217;s going to be replaced with a newer one some day.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mika</title>
		<link>http://mikie.iki.fi/wordpress/?p=33&#038;cpage=1#comment-6301</link>
		<dc:creator>Mika</dc:creator>
		<pubDate>Thu, 15 Feb 2007 12:25:29 +0000</pubDate>
		<guid isPermaLink="false">http://mikie.iki.fi/wordpress/?p=33#comment-6301</guid>
		<description>Symbiantch: do add some RFileLogger output to your application initialization: E32Main, NewApplication, CreateDocumentL, AppUi&#039;s ConstructL, to see if any of them are hit.

Do your EXE and DLL names include the application UID? (so that they don&#039;t clash with anything).

Since it&#039;s an app, what about replacing the mif and _reg.rsc files with known working ones (with the UIDs fixed, of course).</description>
		<content:encoded><![CDATA[<p>Symbiantch: do add some RFileLogger output to your application initialization: E32Main, NewApplication, CreateDocumentL, AppUi&#8217;s ConstructL, to see if any of them are hit.</p>
<p>Do your EXE and DLL names include the application UID? (so that they don&#8217;t clash with anything).</p>
<p>Since it&#8217;s an app, what about replacing the mif and _reg.rsc files with known working ones (with the UIDs fixed, of course).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mika</title>
		<link>http://mikie.iki.fi/wordpress/?p=33&#038;cpage=1#comment-6299</link>
		<dc:creator>Mika</dc:creator>
		<pubDate>Thu, 15 Feb 2007 12:15:17 +0000</pubDate>
		<guid isPermaLink="false">http://mikie.iki.fi/wordpress/?p=33#comment-6299</guid>
		<description>Hamish: do make sure you have all the settings correct for SIS installation:

* add the pkg file to your CW project
* In the Symbian Installation panel, set:
** output filename to your package name with extension SIS
** output location to the dir your package is in
** Check Sign SIS file
** set Signed File Name to X.SIS
** certificate and key to your devcert and key
* In Remote Debugging, set
** Remote download path to DRIVE:\sys\bin
* In the Symbian TRK Debugging, set
** Check Use SIS installation process
** Set host path for SIS file to the correct path and name for X.SIS
** Set Installation drive as DRIVE
** Timeout high enough to transfer and install the file, e.g. 30 (s)
** Target path as e.g. &#039;C:\install.SIS&#039; - somewhere you can write, with extension SIS
** Uncheck &#039;Download files in the remote download panel&#039;
** You can uncheck &#039;Install for each debug session&#039;
* Check that the Installation settings on your E61 allow &#039;All&#039; installs, rather than &#039;Signed only&#039;

(you can leave the pkg out of the project. In that case manually create the signed SIS file, and set the correct path in host path for SIS file.)

In the IDE preferences, Check &#039;Log communication Data to Log Window&#039; in the Symbian MetroTrk, so that you can see what the debugger tries to do.

The important bits are:
* You must use the SIS installation method on secured platforms, as you can&#039;t directly place files in \sys\bin. In that case the files in &#039;Remote Download&#039; panel are not actually copied.
* The debugger will try to launch your process from the file: &#039;Remote Debugging&#124;Remote download path&#039; . &#039;Symbian Linker&#124;Output file&#039;.
* The SIS file is first send to the device, then installed. The installer won&#039;t do any prompts and won&#039;t honor FILERUN directives, and won&#039;t do a normal Remove of the previous version, it just replaces files (e.g., FILENULL files are not removed, FILERUN, RUNREMOVE are not run)

For your second question: I have not found a reasonable way to debug several processes. You might want to do a debug build where the servers are launched as threads from your main process instead (like you normally do on WINS).</description>
		<content:encoded><![CDATA[<p>Hamish: do make sure you have all the settings correct for SIS installation:</p>
<p>* add the pkg file to your CW project<br />
* In the Symbian Installation panel, set:<br />
** output filename to your package name with extension SIS<br />
** output location to the dir your package is in<br />
** Check Sign SIS file<br />
** set Signed File Name to X.SIS<br />
** certificate and key to your devcert and key<br />
* In Remote Debugging, set<br />
** Remote download path to DRIVE:\sys\bin<br />
* In the Symbian TRK Debugging, set<br />
** Check Use SIS installation process<br />
** Set host path for SIS file to the correct path and name for X.SIS<br />
** Set Installation drive as DRIVE<br />
** Timeout high enough to transfer and install the file, e.g. 30 (s)<br />
** Target path as e.g. &#8216;C:\install.SIS&#8217; &#8211; somewhere you can write, with extension SIS<br />
** Uncheck &#8216;Download files in the remote download panel&#8217;<br />
** You can uncheck &#8216;Install for each debug session&#8217;<br />
* Check that the Installation settings on your E61 allow &#8216;All&#8217; installs, rather than &#8216;Signed only&#8217;</p>
<p>(you can leave the pkg out of the project. In that case manually create the signed SIS file, and set the correct path in host path for SIS file.)</p>
<p>In the IDE preferences, Check &#8216;Log communication Data to Log Window&#8217; in the Symbian MetroTrk, so that you can see what the debugger tries to do.</p>
<p>The important bits are:<br />
* You must use the SIS installation method on secured platforms, as you can&#8217;t directly place files in \sys\bin. In that case the files in &#8216;Remote Download&#8217; panel are not actually copied.<br />
* The debugger will try to launch your process from the file: &#8216;Remote Debugging|Remote download path&#8217; . &#8216;Symbian Linker|Output file&#8217;.<br />
* The SIS file is first send to the device, then installed. The installer won&#8217;t do any prompts and won&#8217;t honor FILERUN directives, and won&#8217;t do a normal Remove of the previous version, it just replaces files (e.g., FILENULL files are not removed, FILERUN, RUNREMOVE are not run)</p>
<p>For your second question: I have not found a reasonable way to debug several processes. You might want to do a debug build where the servers are launched as threads from your main process instead (like you normally do on WINS).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hamish Willee</title>
		<link>http://mikie.iki.fi/wordpress/?p=33&#038;cpage=1#comment-6286</link>
		<dc:creator>Hamish Willee</dc:creator>
		<pubDate>Wed, 14 Feb 2007 06:33:08 +0000</pubDate>
		<guid isPermaLink="false">http://mikie.iki.fi/wordpress/?p=33#comment-6286</guid>
		<description>You&#039;re lucky, I can&#039;t even get the S60 v3 MR Helloworldbasic to debug on Nokia E61. I have a connection, but when I try debug I get plugin error &quot;Failed to load the specified program to the target&quot;. How helpful is that? I guess that maybe the SIS file isn&#039;t being created - but since I can&#039;t work out where it should be created, not easy to confirm or deny.

In any case, do you happen to know whether the TRK will allow simultaneous debugging across different processes? Specifically, if it will allow me to debug across a client server boundary? If so, what special configuration is required. If not, is the only option to debug each half of the server separately?</description>
		<content:encoded><![CDATA[<p>You&#8217;re lucky, I can&#8217;t even get the S60 v3 MR Helloworldbasic to debug on Nokia E61. I have a connection, but when I try debug I get plugin error &#8220;Failed to load the specified program to the target&#8221;. How helpful is that? I guess that maybe the SIS file isn&#8217;t being created &#8211; but since I can&#8217;t work out where it should be created, not easy to confirm or deny.</p>
<p>In any case, do you happen to know whether the TRK will allow simultaneous debugging across different processes? Specifically, if it will allow me to debug across a client server boundary? If so, what special configuration is required. If not, is the only option to debug each half of the server separately?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Symbiatch</title>
		<link>http://mikie.iki.fi/wordpress/?p=33&#038;cpage=1#comment-6270</link>
		<dc:creator>Symbiatch</dc:creator>
		<pubDate>Tue, 13 Feb 2007 13:44:49 +0000</pubDate>
		<guid isPermaLink="false">http://mikie.iki.fi/wordpress/?p=33#comment-6270</guid>
		<description>Yes, I meant &quot;install, run, reboot.&quot; I tried different stack sizes (8k, 32k etc) but that didn&#039;t help. I don&#039;t know if there are differences in the libraries that are available in these phones but surely Symbian can&#039;t be that bad that it reboots if a library is not available or is different...

I don&#039;t know for sure that none of my code runs but if I can&#039;t Exit() or Leave() from the AppUi&#039;s ConstructL() (probably not a nice thing to do anyway) before it reboots, I&#039;m betting it doesn&#039;t run any of my code. If I had those devices now, I could try to use a debugger, didn&#039;t have one available at the time and only had the devices for an hour. Also tried to create a file etc, nothing happened.

The compilation was done with S60 3rd ed SDK and also MR, same thing with both. Default options (i.e. no optimization) and the SIS was about 200k, so not that big (no other files in the SIS, just the app).

It&#039;s so nice when you&#039;re supposed to have a test version of your app for the users to test and then this happens. Fortunately they understood that it&#039;s not my fault.</description>
		<content:encoded><![CDATA[<p>Yes, I meant &#8220;install, run, reboot.&#8221; I tried different stack sizes (8k, 32k etc) but that didn&#8217;t help. I don&#8217;t know if there are differences in the libraries that are available in these phones but surely Symbian can&#8217;t be that bad that it reboots if a library is not available or is different&#8230;</p>
<p>I don&#8217;t know for sure that none of my code runs but if I can&#8217;t Exit() or Leave() from the AppUi&#8217;s ConstructL() (probably not a nice thing to do anyway) before it reboots, I&#8217;m betting it doesn&#8217;t run any of my code. If I had those devices now, I could try to use a debugger, didn&#8217;t have one available at the time and only had the devices for an hour. Also tried to create a file etc, nothing happened.</p>
<p>The compilation was done with S60 3rd ed SDK and also MR, same thing with both. Default options (i.e. no optimization) and the SIS was about 200k, so not that big (no other files in the SIS, just the app).</p>
<p>It&#8217;s so nice when you&#8217;re supposed to have a test version of your app for the users to test and then this happens. Fortunately they understood that it&#8217;s not my fault.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mika</title>
		<link>http://mikie.iki.fi/wordpress/?p=33&#038;cpage=1#comment-5955</link>
		<dc:creator>Mika</dc:creator>
		<pubDate>Thu, 01 Feb 2007 15:31:33 +0000</pubDate>
		<guid isPermaLink="false">http://mikie.iki.fi/wordpress/?p=33#comment-5955</guid>
		<description>Hmm. You are right: it doesn&#039;t sound like running out of (heap) memory. What about stack size (increase it some to be sure - I don&#039;t quite know how it is handled, but it seems that the object code contains some info on how much stack it needs and if the stack size is less, it won&#039;t even start)? And &#039;install on N80, phone reboots&#039; I assume you mean &#039;install, _run_, phone reboot&#039;? What is the heap size in your MMP?

What are you compiling with and with what optimization options? How large is the application?

How do you know that none of your code runs? Do you have some RFileLogger prints in your E32Main (In my experience the debugger can not be trusted, and of course RFileLogger doesn&#039;t work on the N93)?

I haven&#039;t seen anything quite like what you describe - the only reboots I get are from actual running code - passing broken parameters to ETEL is a favorite way :-).</description>
		<content:encoded><![CDATA[<p>Hmm. You are right: it doesn&#8217;t sound like running out of (heap) memory. What about stack size (increase it some to be sure &#8211; I don&#8217;t quite know how it is handled, but it seems that the object code contains some info on how much stack it needs and if the stack size is less, it won&#8217;t even start)? And &#8216;install on N80, phone reboots&#8217; I assume you mean &#8216;install, _run_, phone reboot&#8217;? What is the heap size in your MMP?</p>
<p>What are you compiling with and with what optimization options? How large is the application?</p>
<p>How do you know that none of your code runs? Do you have some RFileLogger prints in your E32Main (In my experience the debugger can not be trusted, and of course RFileLogger doesn&#8217;t work on the N93)?</p>
<p>I haven&#8217;t seen anything quite like what you describe &#8211; the only reboots I get are from actual running code &#8211; passing broken parameters to ETEL is a favorite way :-).</p>
]]></content:encoded>
	</item>
</channel>
</rss>
