One possible cause of this could be the cleanup stack expanding as part of normal function processing. The standard solution to this is to write:
#ifdef _DEBUG
const TInt KMaxCleanupFrames=10; // usually more than enough
for (TInt i=0; i CleanupStack::Pop(KMaxCleanupFrames);
#endifclose to the start of your processing which will serve to preallocate a reasonable number of cleanup stack frames. These steps should be made conditional for debug builds only because the __UHEAP macros do not apply under release builds.
Note: It would be very rare to have to allocate more than 10 frames. Most objects exist on the CleanupStack for a short time only, usually during second-phase construction, hence there are not many situations where more than 10 would be in place at once.