heurisko bug no. 6093

This applies to heurisko 5.0 and higher.

Symptoms

Defining compound objects (struct) with a large number of components yields unexpected results or even crashes.

Cause

According to the documentation the number of object components is limited to 64. Unfortunately, a corresponding check is missing in the code that is executed during object definition. Furthermore, in this code heurisko uses a temporary array on the process stack. The fixed size of this array is only large enough for the former limit of 32 object components. Thus, even objects with less than 64 components lead to a buffer overrun that often will not be detected immediately but later in a heurisko session when it is not possible for the user to understand the reason for the bad program behavior.

Workaround

Do not define objects with more than 32 components. It might be necessary to split a larger object into two or more structures.

Fix

6.4.0.2.

Back to overview