Read-only archive of the All About Symbian forum (2001–2013) · About this archive

LowMem KERN-EXEC 3

10 replies · 0 views · Started 28 February 2006

My LowMem test fails with Kern-Exec 3 under the lowest memory conditions. I
have tried adding my own User::Panic method into the startup code to try to
isolate the problem. however i have taken it right back to the earliest
point of exection that i can find ie i put the User::Panic in just before
the call to create the CAknApplication class (ie before the document class
or the appui class get created) and i still get KERN-EXEC 3 for the first
several runs through before it hits my User::Panic.

Does anyone have any thoughts what the problem might be or where i should be
looking?

Thanks


"petxolobo" <[email protected]> wrote in message
news:MAjNqeHPGHA.1040@extapps30...
> My LowMem test fails with Kern-Exec 3 under the lowest memory conditions.
> I have tried adding my own User::Panic method into the startup code to try
> to isolate the problem. however i have taken it right back to the earliest
> point of exection that i can find ie i put the User::Panic in just before
> the call to create the CAknApplication class (ie before the document class
> or the appui class get created) and i still get KERN-EXEC 3 for the first
> several runs through before it hits my User::Panic.
>
> Does anyone have any thoughts what the problem might be or where i should
> be looking?

The framework itself doesn't always leave when it finds a nulll pointer, it
uses the pointer and then crashes.

There is not much you can do about this, apart from following the rule that
LowMem should use the default amount of memory.

Delaying object construction until after the appui's BaseConstructL() call
will also make your life much easier. The easiest wat to do this is by
delaying your document's ConstructL

CAppUi::ConstructL()
{
BaseConstructL()
CDoc* doc = static_cast<CDoc*>(Document());
doc->ConstructL();

/// etc

This trick works because CEikDocument doesn't have a virtual ConstructL(),
so the framework cannot call it and all the document's virtual methods that
are called before BaseConstructL() (CreateAppUiL()) can work with a partly
constructed document.

--
Sander van der Wal
www.mBrainSoftware.com

Thanks for your response.

I seem to have found part of the problem but it is really wierd. When i
install LowMem i expect it to configure the settings according to whatever
phone i install it on. Specifically the value "Min free heap" is supposed
to be different on different devices and what�s more I should never modify
that value as that is what the test house will use. Ok so that�s all fine.

The problem is that i am in Spain and as such my phone is in Spanish. Now
the good news is that LowMem installs on my phone in Spanish and in so doing
it gives a very good impresion of being localised for Spanish. However when
i do this the configuration setting for "Min free heap" is always set to
1024 which is clearly the source of my excessive KERN-EXECing.

If anybody reading this has any sway with the authors of LowMem can they get
them to raise a bug report on this.

Moving on....

I still get KERN-EXEC 3 but now i have isolated the issue to the
BaseConstructL. I wanted to try the suggestion you made regarding the
document creation but i ran into some issues (and here i might be exposing
my lack of knowledge regarding the way series 60 apps are run up).

At the moment my document is created in the following method

CApaDocument* CMyProjectApp::CreateDocumentL()
{
return CMyProjectDocument::NewL( *this );
}

This method must be implemented or the app won�t compile also it gets called
prior to the CAppUi::ConstructL. So what i can�t see is how i stop the
document getting created prior to the BaseConstructL. I did try just
returning NULL from the above method and commenting the document creation
but this just caused the app to fall over straight away. so in conclusion i
was unable to try this.

Then i tried something else. My thinking was that if i was getting a
KERN-EXEC 3 from the BaseConstructL because it wasn�t handling the low
memory conditions well then what i could do was allocate and then free a
chunk of memory just prior to the BaseConstructL. that way what i should
see is the system leaving with KErrNoMemory because it couldn�t allocate the
memory up to the point where it could however, since it then imediatly
deallocate the memory i should now have enough to get me through the
BaseConstructL. I tried allocating the memory using HBufC. Ok, so it�s not
especially elegant but it should work right? Wrong. What i saw was that
the test failed with KERN-EXEC 3 in the call to the HBufC::NewLC.

If you have any further thoughts on this i would be grateful.

Cheers

PL

"Sander van der Wal" <[email protected]> escribi� en el mensaje
news:N%2378n8PPGHA.2236@extapps30...
>
> "petxolobo" <[email protected]> wrote in message
> news:MAjNqeHPGHA.1040@extapps30...[color=green]
>> My LowMem test fails with Kern-Exec 3 under the lowest memory conditions.
>> I have tried adding my own User::Panic method into the startup code to
>> try to isolate the problem. however i have taken it right back to the
>> earliest point of exection that i can find ie i put the User::Panic in
>> just before the call to create the CAknApplication class (ie before the
>> document class or the appui class get created) and i still get KERN-EXEC
>> 3 for the first several runs through before it hits my User::Panic.
>>
>> Does anyone have any thoughts what the problem might be or where i should
>> be looking?

>
> The framework itself doesn't always leave when it finds a nulll pointer,
> it uses the pointer and then crashes.
>
> There is not much you can do about this, apart from following the rule
> that LowMem should use the default amount of memory.
>
> Delaying object construction until after the appui's BaseConstructL() call
> will also make your life much easier. The easiest wat to do this is by
> delaying your document's ConstructL
>
> CAppUi::ConstructL()
> {
> BaseConstructL()
> CDoc* doc = static_cast<CDoc*>(Document());
> doc->ConstructL();
>
> /// etc
>
> This trick works because CEikDocument doesn't have a virtual ConstructL(),
> so the framework cannot call it and all the document's virtual methods
> that are called before BaseConstructL() (CreateAppUiL()) can work with a
> partly constructed document.
>
> --
> Sander van der Wal
> www.mBrainSoftware.com
>[/color]


"petxolobo" <[email protected]> wrote in message
news:%23GjgblVPGHA.3396@extapps30...
> Thanks for your response.
>
> I seem to have found part of the problem but it is really wierd. When i
> install LowMem i expect it to configure the settings according to whatever
> phone i install it on. Specifically the value "Min free heap" is supposed
> to be different on different devices and what�s more I should never modify
> that value as that is what the test house will use. Ok so that�s all
> fine.
>
> The problem is that i am in Spain and as such my phone is in Spanish. Now
> the good news is that LowMem installs on my phone in Spanish and in so
> doing it gives a very good impresion of being localised for Spanish.
> However when i do this the configuration setting for "Min free heap" is
> always set to 1024 which is clearly the source of my excessive
> KERN-EXECing.

This means that the phone isn't recognised. Contact Symbian Signed. They can
give you a more realistic value for your device, if you tell them what it
is.

> If anybody reading this has any sway with the authors of LowMem can they
> get them to raise a bug report on this.
>
> Moving on....
>
> I still get KERN-EXEC 3 but now i have isolated the issue to the
> BaseConstructL. I wanted to try the suggestion you made regarding the
> document creation but i ran into some issues (and here i might be exposing
> my lack of knowledge regarding the way series 60 apps are run up).
>
> At the moment my document is created in the following method
>
> CApaDocument* CMyProjectApp::CreateDocumentL()
> {
> return CMyProjectDocument::NewL( *this );
> }
>
> This method must be implemented or the app won�t compile also it gets
> called prior to the CAppUi::ConstructL. So what i can�t see is how i stop
> the document getting created prior to the BaseConstructL. I did try just
> returning NULL from the above method and commenting the document creation
> but this just caused the app to fall over straight away. so in conclusion
> i was unable to try this.

Change the code to:
CApaDocument* CMyProjectApp::CreateDocumentL()
{
return new (Eleave) CMyProjectDocument( *this );
}

CMyAppUi::ConstructL()
{
BaseConstructL()
CMyDocument* doc = static_cast<CMyDocument*>(Document());
doc->ConstructL();

//

This is only relevant when you doe actual work in the document's
ConstructL(). If it is empty, don't bother.

> Then i tried something else. My thinking was that if i was getting a
> KERN-EXEC 3 from the BaseConstructL because it wasn�t handling the low
> memory conditions well then what i could do was allocate and then free a
> chunk of memory just prior to the BaseConstructL. that way what i should
> see is the system leaving with KErrNoMemory because it couldn�t allocate
> the memory up to the point where it could however, since it then imediatly
> deallocate the memory i should now have enough to get me through the
> BaseConstructL. I tried allocating the memory using HBufC. Ok, so it�s
> not especially elegant but it should work right? Wrong. What i saw was
> that the test failed with KERN-EXEC 3 in the call to the HBufC::NewLC.
>
> If you have any further thoughts on this i would be grateful.

Tried this trick myself too, but even earlier, before creating the
Application, and I was using User::AllocL(), followed by a User::Free(). It
does work fine on the devices I tried this. The problem is that such a trick
hides real problems in your startup code.

Now, why does this work?

LomMem starts an app repeatedly, and each time gives it a bit more memory.
By doing a User::AllocL() asking lots of memory, this User::AllocL() fails,
until LowMem has given the app enough memory to start with.

When there is not enough memory, the app simply doesn't get created and
therefore cannot fail. When there is enough memory, the app gets created and
there is enough heap for all other objects too.

But as I said, this hides real problems in *your* initalisation code. And
when there are quality problems in your initialisation code, there are
quality problems in the rest of *your* code too. This is something to keep
in mind when making the business decision of fooling the quality control
tool Lowmem.

Now, the advantage of moving document second phase construction to a place
after BaseConstructL() is that it makes it easier for you to separate
problems in your startup code from problems in the Symbian startup code.
Everything that happens in your code before BaseConstructL() is trivial, and
can be verified for correctness rather easily.

--
Sander van der Wal
www.mBrainSoftware.com


> Cheers
>
> PL
>
>
> "Sander van der Wal" <[email protected]> escribi� en el mensaje
> news:N%2378n8PPGHA.2236@extapps30...[color=green]
>>
>> "petxolobo" <[email protected]> wrote in message
>> news:MAjNqeHPGHA.1040@extapps30...[color=darkred]
>>> My LowMem test fails with Kern-Exec 3 under the lowest memory
>>> conditions. I have tried adding my own User::Panic method into the
>>> startup code to try to isolate the problem. however i have taken it
>>> right back to the earliest point of exection that i can find ie i put
>>> the User::Panic in just before the call to create the CAknApplication
>>> class (ie before the document class or the appui class get created) and
>>> i still get KERN-EXEC 3 for the first several runs through before it
>>> hits my User::Panic.
>>>
>>> Does anyone have any thoughts what the problem might be or where i
>>> should be looking?

>>
>> The framework itself doesn't always leave when it finds a nulll pointer,
>> it uses the pointer and then crashes.
>>
>> There is not much you can do about this, apart from following the rule
>> that LowMem should use the default amount of memory.
>>
>> Delaying object construction until after the appui's BaseConstructL()
>> call will also make your life much easier. The easiest wat to do this is
>> by delaying your document's ConstructL
>>
>> CAppUi::ConstructL()
>> {
>> BaseConstructL()
>> CDoc* doc = static_cast<CDoc*>(Document());
>> doc->ConstructL();
>>
>> /// etc
>>
>> This trick works because CEikDocument doesn't have a virtual
>> ConstructL(), so the framework cannot call it and all the document's
>> virtual methods that are called before BaseConstructL() (CreateAppUiL())
>> can work with a partly constructed document.
>>
>> --
>> Sander van der Wal
>> www.mBrainSoftware.com
>>[/color]
>
>[/color]

Hi,

Document based apps are likely to fall foul of LowMem testing- more
than no-doc based.

This FAQ
http://www3.symbian.com/faq.nsf/0/E7FB1E0EDCEA88E380256FD600216593?OpenDocument
explains partly how to prove the origin of a KERN-EXEC.It has been
found that if the document class allocates a lot of mem during
construction and prior to the UI class being created, it can and will
cause BaseConstructL() to panic on some versions of the OS.

If the panics are proved to be bona fide system issues, then you can
raise a waiver for MEM-01 prior to submission with proof. This is
captured in the LowMem User Guide.

Regarding the exact amount of free heap to set, LowMem does this
automatically when first run. However, there might be occassions that
the device you are working on has not been benchmarked for the free
heap. Generally, benchmakring is done by Symbian and the Test Houses.

Send an email to [email][email protected][/email] with the details of the
device you are testing on and we will inform you the free heap to set.
We will eventually update LowMem with the new setting.

Nishaat R.
Symbian Signed.

On Tue, 28 Feb 2006 16:03:44 +0100, "petxolobo"
<[email protected]> wrote:

>My LowMem test fails with Kern-Exec 3 under the lowest memory conditions. I
>have tried adding my own User::Panic method into the startup code to try to
>isolate the problem. however i have taken it right back to the earliest
>point of exection that i can find ie i put the User::Panic in just before
>the call to create the CAknApplication class (ie before the document class
>or the appui class get created) and i still get KERN-EXEC 3 for the first
>several runs through before it hits my User::Panic.
>
>Does anyone have any thoughts what the problem might be or where i should be
>looking?
>
>Thanks
>
>

Hi Nishaat,

Thanks for your response.

I have read the FAQ that you provided the link to, I have also read through
the LowMem documentation and i would just like to check that I�ve got this
straight and that i�ve haven�t got the wrong end of the stick.

My app is failing LowMem so i run this two phase test of first placing a
User::Panic just prior to the BaseConstructL call and then, secondly, just
after it. In this way i can demonstrate that BaseConstructL fails with
KERN-EXEC 3.

Having saved the LowMem logs for both of these tests it seems that i now
have all the evidence that i need to raise a waiver to get through the
Symbian Signed process. It seems to me that this process now involves:

- raising the waiver - the symbian signed test criteria mentions that this
can take place prior to sending the application to the test house.
- sending my app for testing in the normal way, providing the normal
information (and presumably the waiver?)
- recieving notification that my app has passed everything except LowMem,
however the waiver gets accepted and my app gets signed

Is it really this simple?

I ask the question as this seems to me to assume that the rest of my code is
working fine even though it hasn't been tested. What i mean is that if i
have code that is executed after the BaseConstructL in the AppUi::ConstructL
(which is all of it really) and that this code is not behaving correctly
under restricted memory conditions, that this will never be picked up by
LowMem and will therefore be shipped in my signed app.

Also, I am concerned about the cost (in time if not cash) of this process.
The Symbian Signed test criteria document says that a waiver can only be
used once. Any subsiquent testing of new versions will require that the
waiver be raised again.

I have read on the forums of a number of people that seem to have the same
issue as i do. that is to say that they have a document based application
that is failing LowMem. In addition I don't do anything in the construction
phase of the document class so i'm guessing that all document based
appications fail in this way. Does this mean that a waiver is required for
all document based series 60 applications that are Symbian Signed? The
Symbian Signed test criteria gives the impression that waivers are the
exception rather than the rule so hence my concern that i'm still not
understanding this process correctly.

Cheers

PL

"Nishaat R." <[email protected]> escribi� en el mensaje
news:[email protected]...
> Hi,
>
> Document based apps are likely to fall foul of LowMem testing- more
> than no-doc based.
>
> This FAQ
> http://www3.symbian.com/faq.nsf/0/E7FB1E0EDCEA88E380256FD600216593?OpenDocument
> explains partly how to prove the origin of a KERN-EXEC.It has been
> found that if the document class allocates a lot of mem during
> construction and prior to the UI class being created, it can and will
> cause BaseConstructL() to panic on some versions of the OS.
>
> If the panics are proved to be bona fide system issues, then you can
> raise a waiver for MEM-01 prior to submission with proof. This is
> captured in the LowMem User Guide.
>
> Regarding the exact amount of free heap to set, LowMem does this
> automatically when first run. However, there might be occassions that
> the device you are working on has not been benchmarked for the free
> heap. Generally, benchmakring is done by Symbian and the Test Houses.
>
> Send an email to [email][email protected][/email] with the details of the
> device you are testing on and we will inform you the free heap to set.
> We will eventually update LowMem with the new setting.
>
> Nishaat R.
> Symbian Signed.
>
>
> On Tue, 28 Feb 2006 16:03:44 +0100, "petxolobo"
> <[email protected]> wrote:
>[color=green]
>>My LowMem test fails with Kern-Exec 3 under the lowest memory conditions.
>>I
>>have tried adding my own User::Panic method into the startup code to try
>>to
>>isolate the problem. however i have taken it right back to the earliest
>>point of exection that i can find ie i put the User::Panic in just before
>>the call to create the CAknApplication class (ie before the document class
>>or the appui class get created) and i still get KERN-EXEC 3 for the first
>>several runs through before it hits my User::Panic.
>>
>>Does anyone have any thoughts what the problem might be or where i should
>>be
>>looking?
>>
>>Thanks
>>
>>

>[/color]

Hi Nishaat,

Here are my responses....

Nishaat R.

***********************

Is it really this simple?
[color=green]
>> Not sure about simple...but in a nutshell yes. We assume that your log is conclusive and is used as a collateral.
[/color]

I ask the question as this seems to me to assume that the rest of my
code is
working fine even though it hasn't been tested. What i mean is that
if i
have code that is executed after the BaseConstructL in the
AppUi::ConstructL
(which is all of it really) and that this code is not behaving
correctly
under restricted memory conditions, that this will never be picked up
by
LowMem and will therefore be shipped in my signed app.
[color=green]
>> You should not stop testing once you see any panics. Your aim should be to complete the test as required and ascertain where are the errors coming from after the test is finished. Regardless of failures you still have to drive the test to completion. This is what the Test Houses will do and its the only way to get a conclusive result. To make MEM-01 test eaiser to repeat you can increase the free mem value in the settings dialogs and continue testing your app after the point when the last system panic transpires. This way if you see any panics it will very likely be coming from the app - which requires fixing.
[/color]
[color=green]
>> Also, it is worth running your app on another device that is running a different OS version. It can happen that the errors you are seeing are exibited only in that device. This is an easy way to find out if the errors are app or system related.
[/color]

Also, I am concerned about the cost (in time if not cash) of this
process.
The Symbian Signed test criteria document says that a waiver can only
be
used once. Any subsiquent testing of new versions will require that
the
waiver be raised again.
[color=green]
>> Yes. That is true. Waivers are confined to a single test attempt and the same waiver cannot be applied for subsequent test round or for that matter for a different device. However, you can always reuse the waiver with ammendments during future testing. Note that you might not need the waiver if the system panics have been fixed in later OS versions.
[/color]

I have read on the forums of a number of people that seem to have the
same
issue as i do. that is to say that they have a document based
application
that is failing LowMem. In addition I don't do anything in the
construction
phase of the document class so i'm guessing that all document based
appications fail in this way. Does this mean that a waiver is
required for
all document based series 60 applications that are Symbian Signed? The
Symbian Signed test criteria gives the impression that waivers are the
exception rather than the rule so hence my concern that i'm still not
understanding this process correctly.
[color=green]
>> No. Not all doc based apps need a waiver. Some doc based apps pass the MEM-01 test without any incident. You need to understand that doc based apps are applications that handle documents. In symbian OS, at the implementation level all apps are inherently doc based per se; simply because they have to provide the document object. This does not, however, mean that they are document based. From what you are saying your app is not doc based. So probably the panics your are seeing are as a result of something memory 'demading' (in LowMem testing even moderate mem allocation can be demanding) in your AppUI construct.
[/color]
[color=green]
>> Waivers are an exception and where required, like in your case, can be used to waive the test.
[/color]

Cheers

PL

On Tue, 7 Mar 2006 16:58:51 +0100, "petxolobo"
<[email protected]> wrote:

>Hi Nishaat,
>
>Thanks for your response.
>
>I have read the FAQ that you provided the link to, I have also read through
>the LowMem documentation and i would just like to check that I�ve got this
>straight and that i�ve haven�t got the wrong end of the stick.
>
>My app is failing LowMem so i run this two phase test of first placing a
>User::Panic just prior to the BaseConstructL call and then, secondly, just
>after it. In this way i can demonstrate that BaseConstructL fails with
>KERN-EXEC 3.
>
>Having saved the LowMem logs for both of these tests it seems that i now
>have all the evidence that i need to raise a waiver to get through the
>Symbian Signed process. It seems to me that this process now involves:
>
>- raising the waiver - the symbian signed test criteria mentions that this
>can take place prior to sending the application to the test house.
>- sending my app for testing in the normal way, providing the normal
>information (and presumably the waiver?)
>- recieving notification that my app has passed everything except LowMem,
>however the waiver gets accepted and my app gets signed
>
>Is it really this simple?
>
>I ask the question as this seems to me to assume that the rest of my code is
>working fine even though it hasn't been tested. What i mean is that if i
>have code that is executed after the BaseConstructL in the AppUi::ConstructL
>(which is all of it really) and that this code is not behaving correctly
>under restricted memory conditions, that this will never be picked up by
>LowMem and will therefore be shipped in my signed app.
>
>Also, I am concerned about the cost (in time if not cash) of this process.
>The Symbian Signed test criteria document says that a waiver can only be
>used once. Any subsiquent testing of new versions will require that the
>waiver be raised again.
>
>I have read on the forums of a number of people that seem to have the same
>issue as i do. that is to say that they have a document based application
>that is failing LowMem. In addition I don't do anything in the construction
>phase of the document class so i'm guessing that all document based
>appications fail in this way. Does this mean that a waiver is required for
>all document based series 60 applications that are Symbian Signed? The
>Symbian Signed test criteria gives the impression that waivers are the
>exception rather than the rule so hence my concern that i'm still not
>understanding this process correctly.
>
>Cheers
>
>PL
>
>
>"Nishaat R." <[email protected]> escribi� en el mensaje
>news:[email protected]...[color=green]
>> Hi,
>>
>> Document based apps are likely to fall foul of LowMem testing- more
>> than no-doc based.
>>
>> This FAQ
>> http://www3.symbian.com/faq.nsf/0/E7FB1E0EDCEA88E380256FD600216593?OpenDocument
>> explains partly how to prove the origin of a KERN-EXEC.It has been
>> found that if the document class allocates a lot of mem during
>> construction and prior to the UI class being created, it can and will
>> cause BaseConstructL() to panic on some versions of the OS.
>>
>> If the panics are proved to be bona fide system issues, then you can
>> raise a waiver for MEM-01 prior to submission with proof. This is
>> captured in the LowMem User Guide.
>>
>> Regarding the exact amount of free heap to set, LowMem does this
>> automatically when first run. However, there might be occassions that
>> the device you are working on has not been benchmarked for the free
>> heap. Generally, benchmakring is done by Symbian and the Test Houses.
>>
>> Send an email to [email][email protected][/email] with the details of the
>> device you are testing on and we will inform you the free heap to set.
>> We will eventually update LowMem with the new setting.
>>
>> Nishaat R.
>> Symbian Signed.
>>
>>
>> On Tue, 28 Feb 2006 16:03:44 +0100, "petxolobo"
>> <[email protected]> wrote:
>>[color=darkred]
>>>My LowMem test fails with Kern-Exec 3 under the lowest memory conditions.
>>>I
>>>have tried adding my own User::Panic method into the startup code to try
>>>to
>>>isolate the problem. however i have taken it right back to the earliest
>>>point of exection that i can find ie i put the User::Panic in just before
>>>the call to create the CAknApplication class (ie before the document class
>>>or the appui class get created) and i still get KERN-EXEC 3 for the first
>>>several runs through before it hits my User::Panic.
>>>
>>>Does anyone have any thoughts what the problem might be or where i should
>>>be
>>>looking?
>>>
>>>Thanks
>>>
>>>

>>[/color]
>[/color]

Hi Nishaat,

Ok, so that�s all clear.

We now have a way to demonstrate that there is a KERN-EXEC 3 coming from the
BaseConstructL call in the AppUi::ConstructL method. We can provide logs
evidence of this and use it to raise a waiver for the purposes of getting
through the LowMem test. However this doesn�t get us out of doing the
LowMem test but rather means that we won�t fail Symbian Signed when the
LowMem test KERN-EXEC 3s under memory conditions that we have proved cause
the KERN-EXEC 3 within the BaseConstructL. Specifically we must continue
with the test and fix any further panics that occur after the call to
BaseConstructL.

So, I ran my test to completion and got more KERN-EXEC 3s. After much
wailing and gnashing of teeth and attempting to find what was causing the
problem i tried a "sanity check". I put a call to User::Leave(KErrNoMemory)
into my AppUi::ConstructL just before the call to BaseContructL ie my leave
is the first thing executed in the constructL. My reasoning was that under
the restricted memory conditions that LowMem simulates my code WILL fail to
launch however it MUST leave and MUST NOT panic. Therefore this sanity
check (whilst it means that my app will never run up) should, for the
duration that i run the test, always leave and never panic, right? wrong.
It KERN-EXEC 3ed every time.

This didn�t make sense to me and it leads me to question whether or not my
BaseConstructL is really panicking rather than leaving as it should.
However the key question here is what could be causing my AppUi::ConstructL
to panic when code within it leaves? Until i can fix that i don�t even know
if there is a problem in the rest of the code much less how to track it
down.

Any thought or suggestions on this would be most welcome

PL

"Nishaat R." <[email protected]> escribi� en el mensaje
news:[email protected]...
> Hi Nishaat,
>
> Here are my responses....
>
> Nishaat R.
>
> ***********************
>
> Is it really this simple?
>[color=green][color=darkred]
>>> Not sure about simple...but in a nutshell yes. We assume that your log
>>> is conclusive and is used as a collateral.
[/color]
>
> I ask the question as this seems to me to assume that the rest of my
> code is
> working fine even though it hasn't been tested. What i mean is that
> if i
> have code that is executed after the BaseConstructL in the
> AppUi::ConstructL
> (which is all of it really) and that this code is not behaving
> correctly
> under restricted memory conditions, that this will never be picked up
> by
> LowMem and will therefore be shipped in my signed app.
>[color=darkred]
>>> You should not stop testing once you see any panics. Your aim should be
>>> to complete the test as required and ascertain where are the errors
>>> coming from after the test is finished. Regardless of failures you still
>>> have to drive the test to completion. This is what the Test Houses will
>>> do and its the only way to get a conclusive result. To make MEM-01 test
>>> eaiser to repeat you can increase the free mem value in the settings
>>> dialogs and continue testing your app after the point when the last
>>> system panic transpires. This way if you see any panics it will very
>>> likely be coming from the app - which requires fixing.
[/color]
>[color=darkred]
>>> Also, it is worth running your app on another device that is running a
>>> different OS version. It can happen that the errors you are seeing are
>>> exibited only in that device. This is an easy way to find out if the
>>> errors are app or system related.
[/color]
>
> Also, I am concerned about the cost (in time if not cash) of this
> process.
> The Symbian Signed test criteria document says that a waiver can only
> be
> used once. Any subsiquent testing of new versions will require that
> the
> waiver be raised again.
>[color=darkred]
>>> Yes. That is true. Waivers are confined to a single test attempt and the
>>> same waiver cannot be applied for subsequent test round or for that
>>> matter for a different device. However, you can always reuse the waiver
>>> with ammendments during future testing. Note that you might not need the
>>> waiver if the system panics have been fixed in later OS versions.
[/color]
>
> I have read on the forums of a number of people that seem to have the
> same
> issue as i do. that is to say that they have a document based
> application
> that is failing LowMem. In addition I don't do anything in the
> construction
> phase of the document class so i'm guessing that all document based
> appications fail in this way. Does this mean that a waiver is
> required for
> all document based series 60 applications that are Symbian Signed? The
> Symbian Signed test criteria gives the impression that waivers are the
> exception rather than the rule so hence my concern that i'm still not
> understanding this process correctly.
>[color=darkred]
>>> No. Not all doc based apps need a waiver. Some doc based apps pass the
>>> MEM-01 test without any incident. You need to understand that doc based
>>> apps are applications that handle documents. In symbian OS, at the
>>> implementation level all apps are inherently doc based per se; simply
>>> because they have to provide the document object. This does not,
>>> however, mean that they are document based. From what you are saying
>>> your app is not doc based. So probably the panics your are seeing are as
>>> a result of something memory 'demading' (in LowMem testing even moderate
>>> mem allocation can be demanding) in your AppUI construct.
[/color]
>[color=darkred]
>>> Waivers are an exception and where required, like in your case, can be
>>> used to waive the test.
[/color]
>
> Cheers
>
> PL
>
>
>
>
> On Tue, 7 Mar 2006 16:58:51 +0100, "petxolobo"
> <[email protected]> wrote:
>
>>Hi Nishaat,
>>
>>Thanks for your response.
>>
>>I have read the FAQ that you provided the link to, I have also read
>>through
>>the LowMem documentation and i would just like to check that I�ve got this
>>straight and that i�ve haven�t got the wrong end of the stick.
>>
>>My app is failing LowMem so i run this two phase test of first placing a
>>User::Panic just prior to the BaseConstructL call and then, secondly, just
>>after it. In this way i can demonstrate that BaseConstructL fails with
>>KERN-EXEC 3.
>>
>>Having saved the LowMem logs for both of these tests it seems that i now
>>have all the evidence that i need to raise a waiver to get through the
>>Symbian Signed process. It seems to me that this process now involves:
>>
>>- raising the waiver - the symbian signed test criteria mentions that this
>>can take place prior to sending the application to the test house.
>>- sending my app for testing in the normal way, providing the normal
>>information (and presumably the waiver?)
>>- recieving notification that my app has passed everything except LowMem,
>>however the waiver gets accepted and my app gets signed
>>
>>Is it really this simple?
>>
>>I ask the question as this seems to me to assume that the rest of my code
>>is
>>working fine even though it hasn't been tested. What i mean is that if i
>>have code that is executed after the BaseConstructL in the
>>AppUi::ConstructL
>>(which is all of it really) and that this code is not behaving correctly
>>under restricted memory conditions, that this will never be picked up by
>>LowMem and will therefore be shipped in my signed app.
>>
>>Also, I am concerned about the cost (in time if not cash) of this process.
>>The Symbian Signed test criteria document says that a waiver can only be
>>used once. Any subsiquent testing of new versions will require that the
>>waiver be raised again.
>>
>>I have read on the forums of a number of people that seem to have the same
>>issue as i do. that is to say that they have a document based application
>>that is failing LowMem. In addition I don't do anything in the
>>construction
>>phase of the document class so i'm guessing that all document based
>>appications fail in this way. Does this mean that a waiver is required
>>for
>>all document based series 60 applications that are Symbian Signed? The
>>Symbian Signed test criteria gives the impression that waivers are the
>>exception rather than the rule so hence my concern that i'm still not
>>understanding this process correctly.
>>
>>Cheers
>>
>>PL
>>
>>
>>"Nishaat R." <[email protected]> escribi� en el mensaje
>>news:[email protected]...[color=darkred]
>>> Hi,
>>>
>>> Document based apps are likely to fall foul of LowMem testing- more
>>> than no-doc based.
>>>
>>> This FAQ
>>> http://www3.symbian.com/faq.nsf/0/E7FB1E0EDCEA88E380256FD600216593?OpenDocument
>>> explains partly how to prove the origin of a KERN-EXEC.It has been
>>> found that if the document class allocates a lot of mem during
>>> construction and prior to the UI class being created, it can and will
>>> cause BaseConstructL() to panic on some versions of the OS.
>>>
>>> If the panics are proved to be bona fide system issues, then you can
>>> raise a waiver for MEM-01 prior to submission with proof. This is
>>> captured in the LowMem User Guide.
>>>
>>> Regarding the exact amount of free heap to set, LowMem does this
>>> automatically when first run. However, there might be occassions that
>>> the device you are working on has not been benchmarked for the free
>>> heap. Generally, benchmakring is done by Symbian and the Test Houses.
>>>
>>> Send an email to [email][email protected][/email] with the details of the
>>> device you are testing on and we will inform you the free heap to set.
>>> We will eventually update LowMem with the new setting.
>>>
>>> Nishaat R.
>>> Symbian Signed.
>>>
>>>
>>> On Tue, 28 Feb 2006 16:03:44 +0100, "petxolobo"
>>> <[email protected]> wrote:
>>>
>>>>My LowMem test fails with Kern-Exec 3 under the lowest memory
>>>>conditions.
>>>>I
>>>>have tried adding my own User::Panic method into the startup code to try
>>>>to
>>>>isolate the problem. however i have taken it right back to the earliest
>>>>point of exection that i can find ie i put the User::Panic in just
>>>>before
>>>>the call to create the CAknApplication class (ie before the document
>>>>class
>>>>or the appui class get created) and i still get KERN-EXEC 3 for the
>>>>first
>>>>several runs through before it hits my User::Panic.
>>>>
>>>>Does anyone have any thoughts what the problem might be or where i
>>>>should
>>>>be
>>>>looking?
>>>>
>>>>Thanks
>>>>
>>>>
>>>

>>[/color]
>[/color]

Hi,
[color=green]
>> Aplogies for the delay.
[/color]
[color=green]
>> Generally, the panic emanates because when a leave transpires it triggers the base UI code plus other code such as the CCoeEnv to destruct. If at some point a pointer (in the base code) didn't get allocated during construction due to memory starvation, on destruction if the same pointer is being referenced (without any sanity check being made on the pointer before use) it will result in a panic. You should not assume that simply leaving at the first apportune moment in your BaseConstructL() will iot cause a panic. By the time your UI code gets a chance to construct some parts of the UI code (base and some of your code like the doc classs) have already been constructed.
[/color]
[color=green]
>> So a leave at any point during UI construction can result in a panic in LowMem condition. So when you put a leave it does not mean that your UI code is panicing - it is also likely that the base code could be panicing (considering your document code is empty).
[/color]
[color=green]
>> As long as you can prove (without any force leaves) that your code does not panic, it is sufficient to support and get approval for the waiver. We appreciate fully that such panics are difficult to track. If there are system panics that are causing your app to fail MEM-01 then any other panics are irrelevant - as with or without your panics the test has failed regardless - although you should ensure that all your panics are resolved in the presence or absence of any system panics.
[/color]
[color=green]
>> As I suggested before you can change the free heap value in the settings dialog to make it easier to track user UI panics.
[/color]
[color=green]
>> Hope this helps.
[/color]

Nishaat R.

On Tue, 14 Mar 2006 11:08:54 +0100, "petxolobo"
<[email protected]> wrote:

>Hi Nishaat,
>
>Ok, so that�s all clear.
>
>We now have a way to demonstrate that there is a KERN-EXEC 3 coming from the
>BaseConstructL call in the AppUi::ConstructL method. We can provide logs
>evidence of this and use it to raise a waiver for the purposes of getting
>through the LowMem test. However this doesn�t get us out of doing the
>LowMem test but rather means that we won�t fail Symbian Signed when the
>LowMem test KERN-EXEC 3s under memory conditions that we have proved cause
>the KERN-EXEC 3 within the BaseConstructL. Specifically we must continue
>with the test and fix any further panics that occur after the call to
>BaseConstructL.
>
>So, I ran my test to completion and got more KERN-EXEC 3s. After much
>wailing and gnashing of teeth and attempting to find what was causing the
>problem i tried a "sanity check". I put a call to User::Leave(KErrNoMemory)
>into my AppUi::ConstructL just before the call to BaseContructL ie my leave
>is the first thing executed in the constructL. My reasoning was that under
>the restricted memory conditions that LowMem simulates my code WILL fail to
>launch however it MUST leave and MUST NOT panic. Therefore this sanity
>check (whilst it means that my app will never run up) should, for the
>duration that i run the test, always leave and never panic, right? wrong.
>It KERN-EXEC 3ed every time.
>
>This didn�t make sense to me and it leads me to question whether or not my
>BaseConstructL is really panicking rather than leaving as it should.
>However the key question here is what could be causing my AppUi::ConstructL
>to panic when code within it leaves? Until i can fix that i don�t even know
>if there is a problem in the rest of the code much less how to track it
>down.
>
>Any thought or suggestions on this would be most welcome
>
>PL
>
>
>"Nishaat R." <[email protected]> escribi� en el mensaje
>news:[email protected]...[color=green]
>> Hi Nishaat,
>>
>> Here are my responses....
>>
>> Nishaat R.
>>
>> ***********************
>>
>> Is it really this simple?
>>[color=darkred]
>>>> Not sure about simple...but in a nutshell yes. We assume that your log
>>>> is conclusive and is used as a collateral.

>>
>> I ask the question as this seems to me to assume that the rest of my
>> code is
>> working fine even though it hasn't been tested. What i mean is that
>> if i
>> have code that is executed after the BaseConstructL in the
>> AppUi::ConstructL
>> (which is all of it really) and that this code is not behaving
>> correctly
>> under restricted memory conditions, that this will never be picked up
>> by
>> LowMem and will therefore be shipped in my signed app.
>>
>>>> You should not stop testing once you see any panics. Your aim should be
>>>> to complete the test as required and ascertain where are the errors
>>>> coming from after the test is finished. Regardless of failures you still
>>>> have to drive the test to completion. This is what the Test Houses will
>>>> do and its the only way to get a conclusive result. To make MEM-01 test
>>>> eaiser to repeat you can increase the free mem value in the settings
>>>> dialogs and continue testing your app after the point when the last
>>>> system panic transpires. This way if you see any panics it will very
>>>> likely be coming from the app - which requires fixing.

>>
>>>> Also, it is worth running your app on another device that is running a
>>>> different OS version. It can happen that the errors you are seeing are
>>>> exibited only in that device. This is an easy way to find out if the
>>>> errors are app or system related.

>>
>> Also, I am concerned about the cost (in time if not cash) of this
>> process.
>> The Symbian Signed test criteria document says that a waiver can only
>> be
>> used once. Any subsiquent testing of new versions will require that
>> the
>> waiver be raised again.
>>
>>>> Yes. That is true. Waivers are confined to a single test attempt and the
>>>> same waiver cannot be applied for subsequent test round or for that
>>>> matter for a different device. However, you can always reuse the waiver
>>>> with ammendments during future testing. Note that you might not need the
>>>> waiver if the system panics have been fixed in later OS versions.

>>
>> I have read on the forums of a number of people that seem to have the
>> same
>> issue as i do. that is to say that they have a document based
>> application
>> that is failing LowMem. In addition I don't do anything in the
>> construction
>> phase of the document class so i'm guessing that all document based
>> appications fail in this way. Does this mean that a waiver is
>> required for
>> all document based series 60 applications that are Symbian Signed? The
>> Symbian Signed test criteria gives the impression that waivers are the
>> exception rather than the rule so hence my concern that i'm still not
>> understanding this process correctly.
>>
>>>> No. Not all doc based apps need a waiver. Some doc based apps pass the
>>>> MEM-01 test without any incident. You need to understand that doc based
>>>> apps are applications that handle documents. In symbian OS, at the
>>>> implementation level all apps are inherently doc based per se; simply
>>>> because they have to provide the document object. This does not,
>>>> however, mean that they are document based. From what you are saying
>>>> your app is not doc based. So probably the panics your are seeing are as
>>>> a result of something memory 'demading' (in LowMem testing even moderate
>>>> mem allocation can be demanding) in your AppUI construct.

>>
>>>> Waivers are an exception and where required, like in your case, can be
>>>> used to waive the test.

>>
>> Cheers
>>
>> PL
>>
>>
>>
>>
>> On Tue, 7 Mar 2006 16:58:51 +0100, "petxolobo"
>> <[email protected]> wrote:
>>
>>>Hi Nishaat,
>>>
>>>Thanks for your response.
>>>
>>>I have read the FAQ that you provided the link to, I have also read
>>>through
>>>the LowMem documentation and i would just like to check that I�ve got this
>>>straight and that i�ve haven�t got the wrong end of the stick.
>>>
>>>My app is failing LowMem so i run this two phase test of first placing a
>>>User::Panic just prior to the BaseConstructL call and then, secondly, just
>>>after it. In this way i can demonstrate that BaseConstructL fails with
>>>KERN-EXEC 3.
>>>
>>>Having saved the LowMem logs for both of these tests it seems that i now
>>>have all the evidence that i need to raise a waiver to get through the
>>>Symbian Signed process. It seems to me that this process now involves:
>>>
>>>- raising the waiver - the symbian signed test criteria mentions that this
>>>can take place prior to sending the application to the test house.
>>>- sending my app for testing in the normal way, providing the normal
>>>information (and presumably the waiver?)
>>>- recieving notification that my app has passed everything except LowMem,
>>>however the waiver gets accepted and my app gets signed
>>>
>>>Is it really this simple?
>>>
>>>I ask the question as this seems to me to assume that the rest of my code
>>>is
>>>working fine even though it hasn't been tested. What i mean is that if i
>>>have code that is executed after the BaseConstructL in the
>>>AppUi::ConstructL
>>>(which is all of it really) and that this code is not behaving correctly
>>>under restricted memory conditions, that this will never be picked up by
>>>LowMem and will therefore be shipped in my signed app.
>>>
>>>Also, I am concerned about the cost (in time if not cash) of this process.
>>>The Symbian Signed test criteria document says that a waiver can only be
>>>used once. Any subsiquent testing of new versions will require that the
>>>waiver be raised again.
>>>
>>>I have read on the forums of a number of people that seem to have the same
>>>issue as i do. that is to say that they have a document based application
>>>that is failing LowMem. In addition I don't do anything in the
>>>construction
>>>phase of the document class so i'm guessing that all document based
>>>appications fail in this way. Does this mean that a waiver is required
>>>for
>>>all document based series 60 applications that are Symbian Signed? The
>>>Symbian Signed test criteria gives the impression that waivers are the
>>>exception rather than the rule so hence my concern that i'm still not
>>>understanding this process correctly.
>>>
>>>Cheers
>>>
>>>PL
>>>
>>>
>>>"Nishaat R." <[email protected]> escribi� en el mensaje
>>>news:[email protected]...
>>>> Hi,
>>>>
>>>> Document based apps are likely to fall foul of LowMem testing- more
>>>> than no-doc based.
>>>>
>>>> This FAQ
>>>> http://www3.symbian.com/faq.nsf/0/E7FB1E0EDCEA88E380256FD600216593?OpenDocument
>>>> explains partly how to prove the origin of a KERN-EXEC.It has been
>>>> found that if the document class allocates a lot of mem during
>>>> construction and prior to the UI class being created, it can and will
>>>> cause BaseConstructL() to panic on some versions of the OS.
>>>>
>>>> If the panics are proved to be bona fide system issues, then you can
>>>> raise a waiver for MEM-01 prior to submission with proof. This is
>>>> captured in the LowMem User Guide.
>>>>
>>>> Regarding the exact amount of free heap to set, LowMem does this
>>>> automatically when first run. However, there might be occassions that
>>>> the device you are working on has not been benchmarked for the free
>>>> heap. Generally, benchmakring is done by Symbian and the Test Houses.
>>>>
>>>> Send an email to [email][email protected][/email] with the details of the
>>>> device you are testing on and we will inform you the free heap to set.
>>>> We will eventually update LowMem with the new setting.
>>>>
>>>> Nishaat R.
>>>> Symbian Signed.
>>>>
>>>>
>>>> On Tue, 28 Feb 2006 16:03:44 +0100, "petxolobo"
>>>> <[email protected]> wrote:
>>>>
>>>>>My LowMem test fails with Kern-Exec 3 under the lowest memory
>>>>>conditions.
>>>>>I
>>>>>have tried adding my own User::Panic method into the startup code to try
>>>>>to
>>>>>isolate the problem. however i have taken it right back to the earliest
>>>>>point of exection that i can find ie i put the User::Panic in just
>>>>>before
>>>>>the call to create the CAknApplication class (ie before the document
>>>>>class
>>>>>or the appui class get created) and i still get KERN-EXEC 3 for the
>>>>>first
>>>>>several runs through before it hits my User::Panic.
>>>>>
>>>>>Does anyone have any thoughts what the problem might be or where i
>>>>>should
>>>>>be
>>>>>looking?
>>>>>
>>>>>Thanks
>>>>>
>>>>>
>>>>
>>>

>>[/color]
>
>[/color]

Hi,
[color=green]
>> Aplogies for the delay.
[/color]
[color=green]
>> Generally, the panic emanates because when a leave transpires it triggers the base UI code plus other code such as the CCoeEnv to destruct. If at some point a pointer (in the base code) didn't get allocated during construction due to memory starvation, on destruction if the same pointer is being referenced (without any sanity check being made on the pointer before use) it will result in a panic. You should not assume that simply leaving at the first apportune moment in your BaseConstructL() will iot cause a panic. By the time your UI code gets a chance to construct some parts of the UI code (base and some of your code like the doc classs) have already been constructed.
[/color]
[color=green]
>> So a leave at any point during UI construction can result in a panic in LowMem condition. So when you put a leave it does not mean that your UI code is panicing - it is also likely that the base code could be panicing (considering your document code is empty).
[/color]
[color=green]
>> As long as you can prove (without any force leaves) that your code does not panic, it is sufficient to support and get approval for the waiver. We appreciate fully that such panics are difficult to track. If there are system panics that are causing your app to fail MEM-01 then any other panics are irrelevant - as with or without your panics the test has failed regardless - although you should ensure that all your panics are resolved in the presence or absence of any system panics.
[/color]
[color=green]
>> As I suggested before you can change the free heap value in the settings dialog to make it easier to track user UI panics.
[/color]
[color=green]
>> Hope this helps.
[/color]

Nishaat R.

On Tue, 14 Mar 2006 11:08:54 +0100, "petxolobo"
<[email protected]> wrote:

>Hi Nishaat,
>
>Ok, so that�s all clear.
>
>We now have a way to demonstrate that there is a KERN-EXEC 3 coming from the
>BaseConstructL call in the AppUi::ConstructL method. We can provide logs
>evidence of this and use it to raise a waiver for the purposes of getting
>through the LowMem test. However this doesn�t get us out of doing the
>LowMem test but rather means that we won�t fail Symbian Signed when the
>LowMem test KERN-EXEC 3s under memory conditions that we have proved cause
>the KERN-EXEC 3 within the BaseConstructL. Specifically we must continue
>with the test and fix any further panics that occur after the call to
>BaseConstructL.
>
>So, I ran my test to completion and got more KERN-EXEC 3s. After much
>wailing and gnashing of teeth and attempting to find what was causing the
>problem i tried a "sanity check". I put a call to User::Leave(KErrNoMemory)
>into my AppUi::ConstructL just before the call to BaseContructL ie my leave
>is the first thing executed in the constructL. My reasoning was that under
>the restricted memory conditions that LowMem simulates my code WILL fail to
>launch however it MUST leave and MUST NOT panic. Therefore this sanity
>check (whilst it means that my app will never run up) should, for the
>duration that i run the test, always leave and never panic, right? wrong.
>It KERN-EXEC 3ed every time.
>
>This didn�t make sense to me and it leads me to question whether or not my
>BaseConstructL is really panicking rather than leaving as it should.
>However the key question here is what could be causing my AppUi::ConstructL
>to panic when code within it leaves? Until i can fix that i don�t even know
>if there is a problem in the rest of the code much less how to track it
>down.
>
>Any thought or suggestions on this would be most welcome
>
>PL
>
>
>"Nishaat R." <[email protected]> escribi� en el mensaje
>news:[email protected]...[color=green]
>> Hi Nishaat,
>>
>> Here are my responses....
>>
>> Nishaat R.
>>
>> ***********************
>>
>> Is it really this simple?
>>[color=darkred]
>>>> Not sure about simple...but in a nutshell yes. We assume that your log
>>>> is conclusive and is used as a collateral.

>>
>> I ask the question as this seems to me to assume that the rest of my
>> code is
>> working fine even though it hasn't been tested. What i mean is that
>> if i
>> have code that is executed after the BaseConstructL in the
>> AppUi::ConstructL
>> (which is all of it really) and that this code is not behaving
>> correctly
>> under restricted memory conditions, that this will never be picked up
>> by
>> LowMem and will therefore be shipped in my signed app.
>>
>>>> You should not stop testing once you see any panics. Your aim should be
>>>> to complete the test as required and ascertain where are the errors
>>>> coming from after the test is finished. Regardless of failures you still
>>>> have to drive the test to completion. This is what the Test Houses will
>>>> do and its the only way to get a conclusive result. To make MEM-01 test
>>>> eaiser to repeat you can increase the free mem value in the settings
>>>> dialogs and continue testing your app after the point when the last
>>>> system panic transpires. This way if you see any panics it will very
>>>> likely be coming from the app - which requires fixing.

>>
>>>> Also, it is worth running your app on another device that is running a
>>>> different OS version. It can happen that the errors you are seeing are
>>>> exibited only in that device. This is an easy way to find out if the
>>>> errors are app or system related.

>>
>> Also, I am concerned about the cost (in time if not cash) of this
>> process.
>> The Symbian Signed test criteria document says that a waiver can only
>> be
>> used once. Any subsiquent testing of new versions will require that
>> the
>> waiver be raised again.
>>
>>>> Yes. That is true. Waivers are confined to a single test attempt and the
>>>> same waiver cannot be applied for subsequent test round or for that
>>>> matter for a different device. However, you can always reuse the waiver
>>>> with ammendments during future testing. Note that you might not need the
>>>> waiver if the system panics have been fixed in later OS versions.

>>
>> I have read on the forums of a number of people that seem to have the
>> same
>> issue as i do. that is to say that they have a document based
>> application
>> that is failing LowMem. In addition I don't do anything in the
>> construction
>> phase of the document class so i'm guessing that all document based
>> appications fail in this way. Does this mean that a waiver is
>> required for
>> all document based series 60 applications that are Symbian Signed? The
>> Symbian Signed test criteria gives the impression that waivers are the
>> exception rather than the rule so hence my concern that i'm still not
>> understanding this process correctly.
>>
>>>> No. Not all doc based apps need a waiver. Some doc based apps pass the
>>>> MEM-01 test without any incident. You need to understand that doc based
>>>> apps are applications that handle documents. In symbian OS, at the
>>>> implementation level all apps are inherently doc based per se; simply
>>>> because they have to provide the document object. This does not,
>>>> however, mean that they are document based. From what you are saying
>>>> your app is not doc based. So probably the panics your are seeing are as
>>>> a result of something memory 'demading' (in LowMem testing even moderate
>>>> mem allocation can be demanding) in your AppUI construct.

>>
>>>> Waivers are an exception and where required, like in your case, can be
>>>> used to waive the test.

>>
>> Cheers
>>
>> PL
>>
>>
>>
>>
>> On Tue, 7 Mar 2006 16:58:51 +0100, "petxolobo"
>> <[email protected]> wrote:
>>
>>>Hi Nishaat,
>>>
>>>Thanks for your response.
>>>
>>>I have read the FAQ that you provided the link to, I have also read
>>>through
>>>the LowMem documentation and i would just like to check that I�ve got this
>>>straight and that i�ve haven�t got the wrong end of the stick.
>>>
>>>My app is failing LowMem so i run this two phase test of first placing a
>>>User::Panic just prior to the BaseConstructL call and then, secondly, just
>>>after it. In this way i can demonstrate that BaseConstructL fails with
>>>KERN-EXEC 3.
>>>
>>>Having saved the LowMem logs for both of these tests it seems that i now
>>>have all the evidence that i need to raise a waiver to get through the
>>>Symbian Signed process. It seems to me that this process now involves:
>>>
>>>- raising the waiver - the symbian signed test criteria mentions that this
>>>can take place prior to sending the application to the test house.
>>>- sending my app for testing in the normal way, providing the normal
>>>information (and presumably the waiver?)
>>>- recieving notification that my app has passed everything except LowMem,
>>>however the waiver gets accepted and my app gets signed
>>>
>>>Is it really this simple?
>>>
>>>I ask the question as this seems to me to assume that the rest of my code
>>>is
>>>working fine even though it hasn't been tested. What i mean is that if i
>>>have code that is executed after the BaseConstructL in the
>>>AppUi::ConstructL
>>>(which is all of it really) and that this code is not behaving correctly
>>>under restricted memory conditions, that this will never be picked up by
>>>LowMem and will therefore be shipped in my signed app.
>>>
>>>Also, I am concerned about the cost (in time if not cash) of this process.
>>>The Symbian Signed test criteria document says that a waiver can only be
>>>used once. Any subsiquent testing of new versions will require that the
>>>waiver be raised again.
>>>
>>>I have read on the forums of a number of people that seem to have the same
>>>issue as i do. that is to say that they have a document based application
>>>that is failing LowMem. In addition I don't do anything in the
>>>construction
>>>phase of the document class so i'm guessing that all document based
>>>appications fail in this way. Does this mean that a waiver is required
>>>for
>>>all document based series 60 applications that are Symbian Signed? The
>>>Symbian Signed test criteria gives the impression that waivers are the
>>>exception rather than the rule so hence my concern that i'm still not
>>>understanding this process correctly.
>>>
>>>Cheers
>>>
>>>PL
>>>
>>>
>>>"Nishaat R." <[email protected]> escribi� en el mensaje
>>>news:[email protected]...
>>>> Hi,
>>>>
>>>> Document based apps are likely to fall foul of LowMem testing- more
>>>> than no-doc based.
>>>>
>>>> This FAQ
>>>> http://www3.symbian.com/faq.nsf/0/E7FB1E0EDCEA88E380256FD600216593?OpenDocument
>>>> explains partly how to prove the origin of a KERN-EXEC.It has been
>>>> found that if the document class allocates a lot of mem during
>>>> construction and prior to the UI class being created, it can and will
>>>> cause BaseConstructL() to panic on some versions of the OS.
>>>>
>>>> If the panics are proved to be bona fide system issues, then you can
>>>> raise a waiver for MEM-01 prior to submission with proof. This is
>>>> captured in the LowMem User Guide.
>>>>
>>>> Regarding the exact amount of free heap to set, LowMem does this
>>>> automatically when first run. However, there might be occassions that
>>>> the device you are working on has not been benchmarked for the free
>>>> heap. Generally, benchmakring is done by Symbian and the Test Houses.
>>>>
>>>> Send an email to [email][email protected][/email] with the details of the
>>>> device you are testing on and we will inform you the free heap to set.
>>>> We will eventually update LowMem with the new setting.
>>>>
>>>> Nishaat R.
>>>> Symbian Signed.
>>>>
>>>>
>>>> On Tue, 28 Feb 2006 16:03:44 +0100, "petxolobo"
>>>> <[email protected]> wrote:
>>>>
>>>>>My LowMem test fails with Kern-Exec 3 under the lowest memory
>>>>>conditions.
>>>>>I
>>>>>have tried adding my own User::Panic method into the startup code to try
>>>>>to
>>>>>isolate the problem. however i have taken it right back to the earliest
>>>>>point of exection that i can find ie i put the User::Panic in just
>>>>>before
>>>>>the call to create the CAknApplication class (ie before the document
>>>>>class
>>>>>or the appui class get created) and i still get KERN-EXEC 3 for the
>>>>>first
>>>>>several runs through before it hits my User::Panic.
>>>>>
>>>>>Does anyone have any thoughts what the problem might be or where i
>>>>>should
>>>>>be
>>>>>looking?
>>>>>
>>>>>Thanks
>>>>>
>>>>>
>>>>
>>>

>>[/color]
>
>[/color]

Hi,
[color=green]
>> Aplogies for the delay.
[/color]
[color=green]
>> Generally, the panic emanates because when a leave transpires it triggers the base UI code plus other code such as the CCoeEnv to destruct. If at some point a pointer (in the base code) didn't get allocated during construction due to memory starvation, on destruction if the same pointer is being referenced (without any sanity check being made on the pointer before use) it will result in a panic. You should not assume that simply leaving at the first apportune moment in your BaseConstructL() will iot cause a panic. By the time your UI code gets a chance to construct some parts of the UI code (base and some of your code like the doc classs) have already been constructed.
[/color]
[color=green]
>> So a leave at any point during UI construction can result in a panic in LowMem condition. So when you put a leave it does not mean that your UI code is panicing - it is also likely that the base code could be panicing (considering your document code is empty).
[/color]
[color=green]
>> As long as you can prove (without any force leaves) that your code does not panic, it is sufficient to support and get approval for the waiver. We appreciate fully that such panics are difficult to track. If there are system panics that are causing your app to fail MEM-01 then any other panics are irrelevant - as with or without your panics the test has failed regardless - although you should ensure that all your panics are resolved in the presence or absence of any system panics.
[/color]
[color=green]
>> As I suggested before you can change the free heap value in the settings dialog to make it easier to track user UI panics.
[/color]
[color=green]
>> Hope this helps.
[/color]

Nishaat R.

On Tue, 14 Mar 2006 11:08:54 +0100, "petxolobo"
<[email protected]> wrote:

>Hi Nishaat,
>
>Ok, so that�s all clear.
>
>We now have a way to demonstrate that there is a KERN-EXEC 3 coming from the
>BaseConstructL call in the AppUi::ConstructL method. We can provide logs
>evidence of this and use it to raise a waiver for the purposes of getting
>through the LowMem test. However this doesn�t get us out of doing the
>LowMem test but rather means that we won�t fail Symbian Signed when the
>LowMem test KERN-EXEC 3s under memory conditions that we have proved cause
>the KERN-EXEC 3 within the BaseConstructL. Specifically we must continue
>with the test and fix any further panics that occur after the call to
>BaseConstructL.
>
>So, I ran my test to completion and got more KERN-EXEC 3s. After much
>wailing and gnashing of teeth and attempting to find what was causing the
>problem i tried a "sanity check". I put a call to User::Leave(KErrNoMemory)
>into my AppUi::ConstructL just before the call to BaseContructL ie my leave
>is the first thing executed in the constructL. My reasoning was that under
>the restricted memory conditions that LowMem simulates my code WILL fail to
>launch however it MUST leave and MUST NOT panic. Therefore this sanity
>check (whilst it means that my app will never run up) should, for the
>duration that i run the test, always leave and never panic, right? wrong.
>It KERN-EXEC 3ed every time.
>
>This didn�t make sense to me and it leads me to question whether or not my
>BaseConstructL is really panicking rather than leaving as it should.
>However the key question here is what could be causing my AppUi::ConstructL
>to panic when code within it leaves? Until i can fix that i don�t even know
>if there is a problem in the rest of the code much less how to track it
>down.
>
>Any thought or suggestions on this would be most welcome
>
>PL
>
>
>"Nishaat R." <[email protected]> escribi� en el mensaje
>news:[email protected]...[color=green]
>> Hi Nishaat,
>>
>> Here are my responses....
>>
>> Nishaat R.
>>
>> ***********************
>>
>> Is it really this simple?
>>[color=darkred]
>>>> Not sure about simple...but in a nutshell yes. We assume that your log
>>>> is conclusive and is used as a collateral.

>>
>> I ask the question as this seems to me to assume that the rest of my
>> code is
>> working fine even though it hasn't been tested. What i mean is that
>> if i
>> have code that is executed after the BaseConstructL in the
>> AppUi::ConstructL
>> (which is all of it really) and that this code is not behaving
>> correctly
>> under restricted memory conditions, that this will never be picked up
>> by
>> LowMem and will therefore be shipped in my signed app.
>>
>>>> You should not stop testing once you see any panics. Your aim should be
>>>> to complete the test as required and ascertain where are the errors
>>>> coming from after the test is finished. Regardless of failures you still
>>>> have to drive the test to completion. This is what the Test Houses will
>>>> do and its the only way to get a conclusive result. To make MEM-01 test
>>>> eaiser to repeat you can increase the free mem value in the settings
>>>> dialogs and continue testing your app after the point when the last
>>>> system panic transpires. This way if you see any panics it will very
>>>> likely be coming from the app - which requires fixing.

>>
>>>> Also, it is worth running your app on another device that is running a
>>>> different OS version. It can happen that the errors you are seeing are
>>>> exibited only in that device. This is an easy way to find out if the
>>>> errors are app or system related.

>>
>> Also, I am concerned about the cost (in time if not cash) of this
>> process.
>> The Symbian Signed test criteria document says that a waiver can only
>> be
>> used once. Any subsiquent testing of new versions will require that
>> the
>> waiver be raised again.
>>
>>>> Yes. That is true. Waivers are confined to a single test attempt and the
>>>> same waiver cannot be applied for subsequent test round or for that
>>>> matter for a different device. However, you can always reuse the waiver
>>>> with ammendments during future testing. Note that you might not need the
>>>> waiver if the system panics have been fixed in later OS versions.

>>
>> I have read on the forums of a number of people that seem to have the
>> same
>> issue as i do. that is to say that they have a document based
>> application
>> that is failing LowMem. In addition I don't do anything in the
>> construction
>> phase of the document class so i'm guessing that all document based
>> appications fail in this way. Does this mean that a waiver is
>> required for
>> all document based series 60 applications that are Symbian Signed? The
>> Symbian Signed test criteria gives the impression that waivers are the
>> exception rather than the rule so hence my concern that i'm still not
>> understanding this process correctly.
>>
>>>> No. Not all doc based apps need a waiver. Some doc based apps pass the
>>>> MEM-01 test without any incident. You need to understand that doc based
>>>> apps are applications that handle documents. In symbian OS, at the
>>>> implementation level all apps are inherently doc based per se; simply
>>>> because they have to provide the document object. This does not,
>>>> however, mean that they are document based. From what you are saying
>>>> your app is not doc based. So probably the panics your are seeing are as
>>>> a result of something memory 'demading' (in LowMem testing even moderate
>>>> mem allocation can be demanding) in your AppUI construct.

>>
>>>> Waivers are an exception and where required, like in your case, can be
>>>> used to waive the test.

>>
>> Cheers
>>
>> PL
>>
>>
>>
>>
>> On Tue, 7 Mar 2006 16:58:51 +0100, "petxolobo"
>> <[email protected]> wrote:
>>
>>>Hi Nishaat,
>>>
>>>Thanks for your response.
>>>
>>>I have read the FAQ that you provided the link to, I have also read
>>>through
>>>the LowMem documentation and i would just like to check that I�ve got this
>>>straight and that i�ve haven�t got the wrong end of the stick.
>>>
>>>My app is failing LowMem so i run this two phase test of first placing a
>>>User::Panic just prior to the BaseConstructL call and then, secondly, just
>>>after it. In this way i can demonstrate that BaseConstructL fails with
>>>KERN-EXEC 3.
>>>
>>>Having saved the LowMem logs for both of these tests it seems that i now
>>>have all the evidence that i need to raise a waiver to get through the
>>>Symbian Signed process. It seems to me that this process now involves:
>>>
>>>- raising the waiver - the symbian signed test criteria mentions that this
>>>can take place prior to sending the application to the test house.
>>>- sending my app for testing in the normal way, providing the normal
>>>information (and presumably the waiver?)
>>>- recieving notification that my app has passed everything except LowMem,
>>>however the waiver gets accepted and my app gets signed
>>>
>>>Is it really this simple?
>>>
>>>I ask the question as this seems to me to assume that the rest of my code
>>>is
>>>working fine even though it hasn't been tested. What i mean is that if i
>>>have code that is executed after the BaseConstructL in the
>>>AppUi::ConstructL
>>>(which is all of it really) and that this code is not behaving correctly
>>>under restricted memory conditions, that this will never be picked up by
>>>LowMem and will therefore be shipped in my signed app.
>>>
>>>Also, I am concerned about the cost (in time if not cash) of this process.
>>>The Symbian Signed test criteria document says that a waiver can only be
>>>used once. Any subsiquent testing of new versions will require that the
>>>waiver be raised again.
>>>
>>>I have read on the forums of a number of people that seem to have the same
>>>issue as i do. that is to say that they have a document based application
>>>that is failing LowMem. In addition I don't do anything in the
>>>construction
>>>phase of the document class so i'm guessing that all document based
>>>appications fail in this way. Does this mean that a waiver is required
>>>for
>>>all document based series 60 applications that are Symbian Signed? The
>>>Symbian Signed test criteria gives the impression that waivers are the
>>>exception rather than the rule so hence my concern that i'm still not
>>>understanding this process correctly.
>>>
>>>Cheers
>>>
>>>PL
>>>
>>>
>>>"Nishaat R." <[email protected]> escribi� en el mensaje
>>>news:[email protected]...
>>>> Hi,
>>>>
>>>> Document based apps are likely to fall foul of LowMem testing- more
>>>> than no-doc based.
>>>>
>>>> This FAQ
>>>> http://www3.symbian.com/faq.nsf/0/E7FB1E0EDCEA88E380256FD600216593?OpenDocument
>>>> explains partly how to prove the origin of a KERN-EXEC.It has been
>>>> found that if the document class allocates a lot of mem during
>>>> construction and prior to the UI class being created, it can and will
>>>> cause BaseConstructL() to panic on some versions of the OS.
>>>>
>>>> If the panics are proved to be bona fide system issues, then you can
>>>> raise a waiver for MEM-01 prior to submission with proof. This is
>>>> captured in the LowMem User Guide.
>>>>
>>>> Regarding the exact amount of free heap to set, LowMem does this
>>>> automatically when first run. However, there might be occassions that
>>>> the device you are working on has not been benchmarked for the free
>>>> heap. Generally, benchmakring is done by Symbian and the Test Houses.
>>>>
>>>> Send an email to [email][email protected][/email] with the details of the
>>>> device you are testing on and we will inform you the free heap to set.
>>>> We will eventually update LowMem with the new setting.
>>>>
>>>> Nishaat R.
>>>> Symbian Signed.
>>>>
>>>>
>>>> On Tue, 28 Feb 2006 16:03:44 +0100, "petxolobo"
>>>> <[email protected]> wrote:
>>>>
>>>>>My LowMem test fails with Kern-Exec 3 under the lowest memory
>>>>>conditions.
>>>>>I
>>>>>have tried adding my own User::Panic method into the startup code to try
>>>>>to
>>>>>isolate the problem. however i have taken it right back to the earliest
>>>>>point of exection that i can find ie i put the User::Panic in just
>>>>>before
>>>>>the call to create the CAknApplication class (ie before the document
>>>>>class
>>>>>or the appui class get created) and i still get KERN-EXEC 3 for the
>>>>>first
>>>>>several runs through before it hits my User::Panic.
>>>>>
>>>>>Does anyone have any thoughts what the problem might be or where i
>>>>>should
>>>>>be
>>>>>looking?
>>>>>
>>>>>Thanks
>>>>>
>>>>>
>>>>
>>>

>>[/color]
>
>[/color]