Purpose

The purpose of this page is to describe the methodology to identify an out of memory that occurs during an Analysis and how to counteract it.

An out of memory can occur during analysis :

  1. As a crash : There is no clues in the analysis log file that explicitly show that the analysis has crashed because of an out of memory
  2. As a Fatal Error : In the analysis log file, it is written that the analyzer is running out of memory. This may occur under disk full condition

For both kind of issues, the methodology to detect whether the out of memory is the same and the solutions to apply are the same

Applicable in CAST Version
Release
Yes/No
8.3.x(tick)
8.2.x(tick)
8.1.x(tick)
8.0.x (tick) 
7.3.x(tick)
Applicable RDBMS
RDBMS
Yes/No
Oracle Server(tick)
Microsoft SQL Server(tick)
CSS3(tick)
CSS2(tick)
Action Plan
  1. Check if the Out of Memory is due to a serialization issue : When memory consumption gets higher than a Serialization Threshold, then the analyzer starts swapping memory to files located in the LTSA folder. For some reason, the analyzer could fail to write to these files

    1. Check for an explicit error message about serialization : "Invalid serialization file. Access is denied"

      If you see this message in the analysis log file, it means that the user running analysis does not have enough rights to write to the LTSA folder.
      1. Open CAST-MS as a Windows administrator, and re-run analysis.
      2. If issue persists, change the LISA and LTSA folder to a folder where the user is allowed to write and re-run analysis

    2. Check if the serialization fails due to not enough space on disk :
      These files could take too much space in the disk which can lead to an Out Of Memory. Then, when the analysis is failing, check the disk space left, especially in the drive where the LISA / LTSA are stored.
      If there is not enough space, you must free more disk space, or change the LISA / LTSA location in a drive where there is enough space. Refer to official documentation at the Deployment Sizing, to know the required size of the drive : Cookbooks > Deployment - sizing and security > Deployment - sizing.

      Changing LISA / LTSA location

      If you decide to change the location of the LISA / LTSA, run the analysis at the application level since some generated files from some Execution Units can be used by other Execution Units.

  2. Check if the Out Of Memory is due to Virtual Memory Consumption : The Memory consumption log are needed (AMT or PerfMon traces). To know if you need to activate AMT traces or Perfmon traces, visit the page CMS Snapshot Analysis - Run Analyzer - Information - How to enable memory traces.

    1. Activate the Memory traces as desribed in CMS Snapshot Analysis - Run Analyzer - Information - Understand AMT traces or in Tools - PerfMon page and run the analysis

    2. Read the Memory traces files as followed in CMS Snapshot Analysis - Run Analyzer - Information - Understand AMT traces.

    3. If the Out Of Memory is due to Virtual Memory Consumption, then, to counter the Out Of Memory, follow the below steps :

      1. CAST AIP 8.x only : Consider increasing the Virtual Memory of the machine :

        If the CAST AIP Version used to analyze the application in 8.0.x or more, check in the Memory traces if there is memory availabe (more than 100 MB) on the machine:

        For Perfmon log, the field is Memory\Available Mbytes, for AMT Traces, the field is system free virtual bytes. If the Machine Virtual memory cannot be increased then you must split the Execution Unit / Analysis Unit.



      2. Check if the Out Of Memory is due to Inference Engine :

        What is the Inference Engine : Certain analyzers provide an Inference Engine to compute run time type information in order to simulate program behavior during execution of the analyzer and thus identify additional links that would not otherwise be "discovered" using standard analysis techniques. This technology detects a reference to an object wherever its name is mentioned, regardless of the context in which this reference occurs.

        To check if the Out Of Memory is due to the Inference Engine, as a TEST, you must disable the Inference Engine by unchecking in CAST Management Studio the Inference Engine Option in the production tab, and run the analysis again. If the analysis goes to the end, this TEST confirms that the issue is due to the Inference Engine.

        If the Out Of Memory issue is due to Inference Engine, you have to change the Inference Engine parameters as it is explained in the CMS Technologies - Modify Inference Engine parameter page and run the analysis again. If the Out Of Memory is not due to Inference Engine, go to the next step.

      3. Check if the Out Of Memory is due to Big Files :

        1. For Mainframe analyzer, the last file that is referenced in the analysis log file is the one that is making the analyzer running in out of memory. Remove this file and run the analysis again.


        2. When the analyzer parses the source files, it copies them in memory. Some files may be too big and when they are loaded, they make the Analysis Process run in out of memory.


          1. In case that a size file is bigger that 10 Mb, check if this is a generated file. If so, check if these generated files are usefull for other source file (dependencies or references), if not, remove them from the source file and run the analysis again.

          2. If the analysis is still failing, remove files that are bigger than 1MB and run the analysis again.


        3. For Dot Net technologies, if you are interested in the links and transactions and you do not want to remove the file then we can split the file into multiple files. Refer to the page to split the file, CMS Snapshot Analysis - Run Analyzer - DOTNet - Information - How to split the DOTNet class file


        4. If Visual Basic analysis is failing with error message "Unable to Process VB6 Analysis(Out of Memory)", user has to split the analysis unit by annotating the analysis units and run the analysis again.


      4. Split the Execution Unit / Analysis Unit in case of Significant amount of source file

        If there is a significant amount of source code, that means many analysis units, and more than 1GB of source file. Split the Execution Units / Analysis Units as it is described in CMS Analysis Unit - Information - General way to split analysis units or jobs page.

      5. If the Out Of Memory occurs during the Saving Step :

        The saving step occurs at the end of the analysis of an Execution Unit. During this step, the process include SQL queries that will compare and merge the result of the new analysis in the Knowledge Base. If the number of objects and links resolved during the analysis of the Execution Unit is too important, an out of memory can occur. The Solution is to split the Execution Unit / Analysis Unit in order to get less objects involved during the saving step.

  3. If none of the above steps help you to get rid of the out of memory, contact CAST Technical Support and provide below Relevant Input to help CAST Support team to reproduce the issue.

Relevant input

Notes/comments