KB348: Moxie Player or Studio restarts unexpectedly and throws an “OutOfMemoryException”

Symptom

Moxie Player or Studio will restart automatically if certain conditions are encountered such as repeated failures to render video files or when unexpected exceptions are thrown. As part of the Moxie’s process to recover, it will write a timestamped incident log file to C:\ProgramData\Omnivex\System for analysis and then trigger a process restart.

Cause

Details for an exception that triggered a Moxie Player or Studio restart can be found starting at the fourth line of the incident log file. This article discusses reasons why you might encounter the following exception:

<ExceptionInformation ExceptionType="OutOfMemoryException" Message="Insufficient memory to continue the execution of the program." Source="PresentationCore">

Solution

This exception usually occurs when running high-resolution or other memory-intensive content on a 32-bit Moxie Player or Studio application. Prior to the 7.03 release, all Moxie Player and Studio applications were made available as 32-bit processes. Starting with version 7.03, users have the option of installing either 32-bit or 64-bit versions of these applications.

32-bit .NET applications are typically limited to approximately 1.2 GB of memory, even if the host has more memory available. If a 32-bit Moxie Player or Studio’s memory consumption reaches this threshold, further requests for memory allocation will trigger an out of memory exception.

There are many reasons why your content may require more memory than a 32-bit process can utilize. Increased display and media file resolutions combined with other factors such as multiple connected displays and preloading upcoming media files in playlists will increase memory requirements. It is important to assess your content design and the various media assets included to determine if the content consistently requires more memory to function. Upgrading to a 64-bit version of Moxie Player and Studio will allow the application to consume more system memory without encountering memory-related exceptions.

Note: The Moxie Studio must be the same version and bitness as the Moxie Data Server deployment so that the modules provided by the Data Server are supported by the Studio. For example, if the Moxie Data Server was deployed using the 32-bit 7.03 installation then the Studio must also be deployed using the 32-bit 7.03 installation file. If you would like to upgrade your Moxie Studio to a 64-bit version then you must ensure that the Moxie Data Server is updated first.  (More details regarding the 32 and 64-bit releases can be found here.)

However, if the Moxie Player or Studio initially runs your content without issues and slowly consumes more memory over a long period of time then the content playback may be triggering a resource leak on the host. Although the Moxie Player or Studio will not leak resources on its own, requests to render certain types of content can trigger resource leaks related to third-party software such as graphics adapter drivers, video codecs, or web content. For example, if you use a web zone to reference a website that leaks a small amount of memory each time the page is refreshed then the leaked resources will be attributed to the Moxie Player or Studio process. In cases where a resource leak eventually triggers a Moxie Player or Studio restart, tracking memory allocation over time while methodically adding/removing video and web content elements can help pinpoint the source of the resource leak.

Note: .NET processes routinely allow memory consumption to rise until a background process cleans up properly disposed resources.  It is normal to see memory allocation grow slowly and then drop precipitously, only to start climbing again.  Provided the trend line on this graph remains flat over a long period of time then none of the software components on the system are leaking resources.  On the other hand, if there is a slow upward trend to the memory consumption, this indicates a likely resource leak.

Regardless of whether you encounter out of memory exceptions, Omnivex recommends using the latest 64-bit version of Moxie which can be obtained from here.  Contact Omnivex Support via support@omnivex.com or 1-800-745-8223 for help troubleshooting a Moxie exception.