IBM Support

Troubleshooting TM1 Server stack overflow errors

Troubleshooting


Problem

Logging simliar to the following example is seen in the tm1server.log file. 12345 []   WARN   2016-08-02 15:18:47.491   TM1.Cube   Execution aborted - Evaluation Stack Overflow 8877   [11]   ERROR   2016-08-02 15:18:47.507   TM1.Server   : Evaluation stack overflow, process terminated : "Cubename" ['Element 1','100','Element B','999','Jan 16','Actual']    This logging is often noticed after a performance issue or crash of the TM1 server has already occurred.

Cause

One possible cause for a stack overflow error message is a loop condition in rules. For example, Cube A may have a rule that reads from a cell in Cube B. If Cube B also has a rule that populates the same cell that is sourced by the rule in Cube A, and the rule in Cube A sources the rule derived cell in Cube B, then a stack overflow error can occur when opening a cubeview that displays the rule derived cell from either Cube A or Cube B.

Resolving The Problem

This problem can be difficult to diagnose. To help understand which cubes, rules, and cells are involved in the loop a Ti process with the following Ti code, in the prolog section of a new Ti process, can be run. Replace Cubename with the actual name of the cube that was named in the stack overflow error message.

DebugUtility( 107, 0, 0, 'Cubename', 'Debug.txt', '' );
DebugUtility( 118, 0, 0, ' ', ' ', ' ' );

After the Ti process is run reproduce the stack overflow error by opening the same cubeview that caused the stack overflow error. The following logging will be written to the tm1server.log file.

6424   [18]   INFO   2016-08-03 12:42:47.604   TM1.Server   LOOP START OUTPUT
6424   [18]   INFO   2016-08-03 12:42:47.604   TM1.Server   CELL: "Cube A" ['Element 1','100','Element B','999','Jan 16','Actual']  
6424   [18]   INFO   2016-08-03 12:42:47.604   TM1.Server   RUNS RULE: line:10 [] = N:DB('Cube B','Element 1','100','Element B','999','Jan 16','Actual');
6424   [18]   INFO   2016-08-03 12:42:47.604   TM1.Server    --- LOOP ON FOLLOWING CELL ---
6424   [18]   INFO   2016-08-03 12:42:47.604   TM1.Server   CELL: "Cube B" ['Element 1','100','Element B','999','Jan 16','Actual']  
6424   [18]   INFO   2016-08-03 12:42:47.604   TM1.Server   RUNS RULE: line:15  [] = N:DB('Cube A','Element 1','100','Element B','999','Jan 16','Actual');
6424   [18]   INFO   2016-08-03 12:42:47.604   TM1.Server   LOOP END OUTPUT

The above logging is a very simple example of how similar rules in two cubes could loop. This logging provides an example of a cell in each cube that ran a rule to read a value from the other cube. It's possible that more than two cubes or multiple rules for each cell are involved in a loop.

To correct this problem the only possible solution is to update the rules in one or more cubes so they do not cause a loop when processed.

[{"Product":{"code":"SS9RXT","label":"Cognos TM1"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Component":"TM1 Server","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF016","label":"Linux"},{"code":"PF033","label":"Windows"}],"Version":"10.1.0;10.1.1;10.2;10.2.2","Edition":"All Editions","Line of Business":{"code":"LOB10","label":"Data and AI"}}]

Document Information

Modified date:
15 June 2018

UID

swg21988306