Applies To:
  • CitectSCADA 5.xx, 6.00
  • CitectHMI 5.xx, 6.00

Summary:
ABCLX driver causes Citect to crash  

Solution:
Say for instance you have a variable dbf that contains entries such as the following -
DATATYPE ADDR
REAL Tag1
REAL Tag2
REAL Tag3!A[30]
REAL Tag4
REAL Tag5

Now say you have Tag1 and Tag5 on a particular page (i.e. you are requesting Tag1 and Tag5 at the same time). We have become aware that it is possible for Citect to block the request i.e. to request all data from Tag1 to Tag5 because they are the same data type. It is one of the ways that Citect achieves efficiency gains. The only problem is that Citect is not supposed to block arrays. Hence, in this case, we see that if Citect blocks these tags together in a single request, where it expects 5 REALs (i.e. 5 x 32 bits) it is actually going to have ((4 x 32 bits) + (30 x 32 bits)). This extra information is written to memory and hence overruns the memory area that Citect expected to use, hence anything else can write to the 'extra' memory being used and hence cause a corruption, including Citect itself.

The workaround for the moment, is to do the following:

1. Move all arrays in your variable.dbf file to the top of your variable.dbf file sorted by IO Device then DataType.

2. Arrange the rest of your variable.dbf by IO Device then DataType. (BTW, this has always been a Citect recommended practice in order to allow as much blocking as possible for the most efficiency - so nothing new there.)

Citect has confirmed this to be a problem in ABCLX version 3.01.03.003. We are researching this problem and will post new information here as it becomes available.

 

Keywords:
 

Attachments