Out of Memory Exception while fetching mail

Hello,

eM Client Version: 8.0.2951 (e2fe9f0)

I have 4 different GMail/GSuite accounts configured, 2 of which have sizable amounts of email. I’ve experienced several crashes (the app disappears, and goes through its database check on restart).

Today, the two large accounts are displaying the yellow “Warning” icon next to them, and the error log is indicating an out of memory exception (perhaps related to the previous crashes?). Windows Task Manager indicates that the application is using approximately 940MB of memory. This is a pretty beefy machine with 64GB RAM, 30GB of which is currently available.

Any thoughts as to next steps?

Below is the log indicating the out of memory exception:

12:04:49 PM System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
12:04:49 PM    at System.Collections.Generic.Dictionary`2.Initialize(Int32 capacity)
12:04:49 PM    at System.Collections.Generic.Dictionary`2..ctor(Int32 capacity, IEqualityComparer`1 comparer)
12:04:49 PM    at MailClient.Protocols.Imap.ImapMailSynchronizer.<>c__DisplayClass100_0.<SynchronizeMessagesAsync>g__BuildInfoOldFlags|11(UInt32& minUid, UInt32& maxUid)
12:04:49 PM    at MailClient.Protocols.Imap.ImapMailSynchronizer.SynchronizeMessagesAsync(IItemSynchronizeContext`1 synchronizeContext, Folder folder, Boolean fast, CancellationToken cancellationToken)
12:04:49 PM    at MailClient.Protocols.Imap.ImapMailSynchronizer.SynchronizeMessagesAsync(IItemSynchronizeContext`1 synchronizeContext, Folder folder, Boolean fast, CancellationToken cancellationToken)
12:04:49 PM    at MailClient.Protocols.Imap.ImapMailSynchronizer.Synchronize(IItemSynchronizeContext`1 synchronizeContext, Folder folder, CancellationToken cancellationToken)
12:04:49 PM    at MailClient.Protocols.Common.ItemSynchronizer`2.<>c__DisplayClass37_1.<EnqueueSynchronize>b__6(WorkerStatus status, CancellationToken ct)
12:04:49 PM    at MailClient.Protocols.Imap.ImapActionCommand.<>c__DisplayClass12_0.<.ctor>b__0(WorkerStatus ws, CancellationToken ct)
12:04:49 PM    at MailClient.Protocols.Imap.ImapActionCommand.ExecuteInternalSync(WorkerStatus status)
12:04:49 PM    at MailClient.Protocols.Imap.ImapActionCommand.Execute(WorkerStatus status)
12:04:49 PM    at MailClient.Commands.Command.Process(WorkerStatus status)
12:04:49 PM --- End of stack trace from previous location where exception was thrown ---
12:04:49 PM    at MailClient.Protocols.Imap.ImapAccount.SynchronizeIntAsync(Boolean forced)
12:04:49 PM    at MailClient.Protocols.Common.SynchronizableMailAccount.<>c__DisplayClass6_0.<<SynchronizeAsync>b__0>d.MoveNext()
12:04:49 PM System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
12:04:49 PM    at System.Collections.Generic.Dictionary`2.Initialize(Int32 capacity)
12:04:49 PM    at System.Collections.Generic.Dictionary`2..ctor(Int32 capacity, IEqualityComparer`1 comparer)
12:04:49 PM    at MailClient.Protocols.Imap.ImapMailSynchronizer.<>c__DisplayClass100_0.<SynchronizeMessagesAsync>g__BuildInfoOldFlags|11(UInt32& minUid, UInt32& maxUid)
12:04:49 PM    at MailClient.Protocols.Imap.ImapMailSynchronizer.SynchronizeMessagesAsync(IItemSynchronizeContext`1 synchronizeContext, Folder folder, Boolean fast, CancellationToken cancellationToken)
12:04:49 PM    at MailClient.Protocols.Imap.ImapMailSynchronizer.SynchronizeMessagesAsync(IItemSynchronizeContext`1 synchronizeContext, Folder folder, Boolean fast, CancellationToken cancellationToken)
12:04:49 PM    at MailClient.Protocols.Imap.ImapMailSynchronizer.Synchronize(IItemSynchronizeContext`1 synchronizeContext, Folder folder, CancellationToken cancellationToken)
12:04:49 PM    at MailClient.Protocols.Common.ItemSynchronizer`2.<>c__DisplayClass37_1.<EnqueueSynchronize>b__6(WorkerStatus status, CancellationToken ct)
12:04:49 PM    at MailClient.Protocols.Imap.ImapActionCommand.<>c__DisplayClass12_0.<.ctor>b__0(WorkerStatus ws, CancellationToken ct)
12:04:49 PM    at MailClient.Protocols.Imap.ImapActionCommand.ExecuteInternalSync(WorkerStatus status)
12:04:49 PM    at MailClient.Protocols.Imap.ImapActionCommand.Execute(WorkerStatus status)
12:04:49 PM    at MailClient.Commands.Command.Process(WorkerStatus status)
12:04:49 PM --- End of stack trace from previous location where exception was thrown ---
12:04:49 PM    at MailClient.Protocols.Imap.ImapAccount.SynchronizeIntAsync(Boolean forced)
12:04:49 PM    at MailClient.Protocols.Common.SynchronizableMailAccount.<>c__DisplayClass6_0.<<SynchronizeAsync>b__0>d.MoveNext()
12:04:56 PM System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
12:04:56 PM    at System.Collections.Generic.Dictionary`2.Resize(Int32 newSize, Boolean forceNewHashCodes)
12:04:56 PM    at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
12:04:56 PM    at MailClient.Protocols.Common.ItemSynchronizeContext`2.RebuildCache[TUid,TVid]()
12:04:56 PM    at MailClient.Protocols.Common.ItemSynchronizeContext`2.Synchronize[T,TUid,TVid](SynchronizationType synchronizationType, IEnumerable`1 items, Func`2 getUniqueId, Func`2 getVersionId, Func`3 hasChanged, Func`2 isDeleted, Func`2 convertItems, Action`2 updateItem)
12:04:56 PM    at MailClient.Protocols.Imap.ImapMailSynchronizer.<>c__DisplayClass100_0.<SynchronizeMessagesAsync>g__WriteSyncItemsToDb|10()
12:04:56 PM    at MailClient.Protocols.Imap.ImapMailSynchronizer.<>c__DisplayClass100_0.<SynchronizeMessagesAsync>g__ProcessFetchNotifications|9(Boolean fromInterruption)
12:04:56 PM    at MailClient.Protocols.Imap.ImapMailSynchronizer.<>c__DisplayClass100_0.<SynchronizeMessagesAsync>g__ProcessPriorityUpdatesAsync|2()
12:04:56 PM    at MailClient.Protocols.Imap.ImapMailSynchronizer.<>c__DisplayClass100_0.<<SynchronizeMessagesAsync>g__FetchNewMessagesAsync|3>d.MoveNext()
12:04:56 PM --- End of stack trace from previous location where exception was thrown ---
12:04:56 PM    at MailClient.Protocols.Imap.ImapMailSynchronizer.SynchronizeMessagesAsync(IItemSynchronizeContext`1 synchronizeContext, Folder folder, Boolean fast, CancellationToken cancellationToken)
12:04:56 PM    at MailClient.Protocols.Imap.ImapMailSynchronizer.SynchronizeMessagesAsync(IItemSynchronizeContext`1 synchronizeContext, Folder folder, Boolean fast, CancellationToken cancellationToken)
12:04:56 PM    at MailClient.Protocols.Imap.ImapMailSynchronizer.Synchronize(IItemSynchronizeContext`1 synchronizeContext, Folder folder, CancellationToken cancellationToken)
12:04:56 PM    at MailClient.Protocols.Common.ItemSynchronizer`2.<>c__DisplayClass37_1.<EnqueueSynchronize>b__6(WorkerStatus status, CancellationToken ct)
12:04:56 PM    at MailClient.Protocols.Imap.ImapActionCommand.<>c__DisplayClass12_0.<.ctor>b__0(WorkerStatus ws, CancellationToken ct)
12:04:56 PM    at MailClient.Protocols.Imap.ImapActionCommand.ExecuteInternalSync(WorkerStatus status)
12:04:56 PM    at MailClient.Protocols.Imap.ImapActionCommand.Execute(WorkerStatus status)
12:04:56 PM    at MailClient.Commands.Command.Process(WorkerStatus status)
12:04:56 PM --- End of stack trace from previous location where exception was thrown ---
12:04:56 PM    at MailClient.Protocols.Imap.ImapAccount.SynchronizeIntAsync(Boolean forced)
12:04:56 PM    at MailClient.Protocols.Common.SynchronizableMailAccount.<>c__DisplayClass6_0.<<SynchronizeAsync>b__0>d.MoveNext()
12:04:56 PM System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
12:04:56 PM    at System.Collections.Generic.Dictionary`2.Resize(Int32 newSize, Boolean forceNewHashCodes)
12:04:56 PM    at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
12:04:56 PM    at MailClient.Protocols.Common.ItemSynchronizeContext`2.RebuildCache[TUid,TVid]()
12:04:56 PM    at MailClient.Protocols.Common.ItemSynchronizeContext`2.Synchronize[T,TUid,TVid](SynchronizationType synchronizationType, IEnumerable`1 items, Func`2 getUniqueId, Func`2 getVersionId, Func`3 hasChanged, Func`2 isDeleted, Func`2 convertItems, Action`2 updateItem)
12:04:56 PM    at MailClient.Protocols.Imap.ImapMailSynchronizer.<>c__DisplayClass100_0.<SynchronizeMessagesAsync>g__WriteSyncItemsToDb|10()
12:04:56 PM    at MailClient.Protocols.Imap.ImapMailSynchronizer.<>c__DisplayClass100_0.<SynchronizeMessagesAsync>g__ProcessFetchNotifications|9(Boolean fromInterruption)
12:04:56 PM    at MailClient.Protocols.Imap.ImapMailSynchronizer.<>c__DisplayClass100_0.<SynchronizeMessagesAsync>g__ProcessPriorityUpdatesAsync|2()
12:04:56 PM    at MailClient.Protocols.Imap.ImapMailSynchronizer.<>c__DisplayClass100_0.<<SynchronizeMessagesAsync>g__FetchNewMessagesAsync|3>d.MoveNext()
12:04:56 PM --- End of stack trace from previous location where exception was thrown ---
12:04:56 PM    at MailClient.Protocols.Imap.ImapMailSynchronizer.SynchronizeMessagesAsync(IItemSynchronizeContext`1 synchronizeContext, Folder folder, Boolean fast, CancellationToken cancellationToken)
12:04:56 PM    at MailClient.Protocols.Imap.ImapMailSynchronizer.SynchronizeMessagesAsync(IItemSynchronizeContext`1 synchronizeContext, Folder folder, Boolean fast, CancellationToken cancellationToken)
12:04:56 PM    at MailClient.Protocols.Imap.ImapMailSynchronizer.Synchronize(IItemSynchronizeContext`1 synchronizeContext, Folder folder, CancellationToken cancellationToken)
12:04:56 PM    at MailClient.Protocols.Common.ItemSynchronizer`2.<>c__DisplayClass37_1.<EnqueueSynchronize>b__6(WorkerStatus status, CancellationToken ct)
12:04:56 PM    at MailClient.Protocols.Imap.ImapActionCommand.<>c__DisplayClass12_0.<.ctor>b__0(WorkerStatus ws, CancellationToken ct)
12:04:56 PM    at MailClient.Protocols.Imap.ImapActionCommand.ExecuteInternalSync(WorkerStatus status)
12:04:56 PM    at MailClient.Protocols.Imap.ImapActionCommand.Execute(WorkerStatus status)
12:04:56 PM    at MailClient.Commands.Command.Process(WorkerStatus status)
12:04:56 PM --- End of stack trace from previous location where exception was thrown ---
12:04:56 PM    at MailClient.Protocols.Imap.ImapAccount.SynchronizeIntAsync(Boolean forced)
12:04:56 PM    at MailClient.Protocols.Common.SynchronizableMailAccount.<>c__DisplayClass6_0.<<SynchronizeAsync>b__0>d.MoveNext()