June 25, 2019 – Advisory: Memory Leak in InterSystems IRIS

InterSystems has corrected a memory leak in applications that pass by reference to a formal parameter that accepts a variable number of arguments.

 

This problem exists for:

  • InterSystems IRIS Data Platform – all currently released versions
  • InterSystems IRIS for Health – all currently released versions
  • HealthShare Health Connect 2019.1.0

 

If this defect occurs, the process partition will eventually be exhausted, resulting in a <STORE> error.

 

The defect occurs if application code calls a subroutine passing an argument by reference to a parameter that accepts a variable number of arguments using the … syntax. For background on these topics and more examples of code that uses them, see the “Variable Number of Parameters” and the “Passing By Reference” sections in the “Callable User-defined Code Modules” chapter of Using ObjectScript in the documentation (Docs.InterSystems.com).

 

Here is an example to demonstrate the defect:

test     // CDS3148 test

    set (var1,var2,var3)=0

    do sub(var1,.var2,var3)

    quit

sub(arg1,args…)

    quit

 

USER>for i=1:1:1000 { do ^test } write $S

268301128

USER>for i=1:1:1000 { do ^test } write $S

268276552

USER>

This subroutine call would also demonstrate the defect:

do sub(var1,var2,.var3)

But this one would not:

do sub(.var1,var2,var3)

 

The correction for this defect is identified as CDS3148. It will be included in all future product releases. It is also available via Ad hoc distribution from the InterSystems Worldwide Response Center (WRC).

If you have any questions regarding this alert, please contact the Worldwide Response Center.

  • + 1
  • 0
  • 110
  • 0