ID:1426048
 
Resolved
Memory leaks existed in some matrix operations.
BYOND Version:501
Operating System:Windows 7 Home Premium 64-bit
Web Browser:Firefox 25.0
Applies to:Dream Daemon
Status: Resolved (502.1218)

This issue has been resolved.
Descriptive Problem Summary:
There are certain matrix operations that causes the garbage collector to ignore some /matrix objects for cleanup.


Numbered Steps to Reproduce Problem:
Perform the matrix operations.
Exit the current block scope.

Code Snippet (if applicable) to Reproduce Problem:
proc
MatrixLeak()
var/matrix/one = new()
one *= new/matrix(rand(),rand(),rand(),rand(),rand(),rand()) //This is leaky
one = turn(one,rand(0,360)) //This is also leaky
return one


Expected Results:

The matrix datums generated by new/matrix() and turn() should be cleaned up.

Actual Results:

The matrix datums generated by new/matrix() and turn() are not cleaned up.

Does the problem occur:
Every time? Or how often?
Every Time.
In other games?
Yes
In other user accounts?
Not Applicable
On other computers?
Yes.

When does the problem NOT occur?
There are some workaround operations that does not generate a leak.

Replacing matrix*=asdf with matrix.Multiply(asdf) and replacing matrix=turn(matrix,asdf) with matrix.Turn(asdf) will not cause the leak.

Did the problem NOT occur in any earlier versions? If so, what was the last version that worked? (Visit http://www.byond.com/download/build to download old versions for testing.)
Don't know.


Workarounds:
Workaround operations are explored above.
Lummox JR resolved issue with message:
Memory leaks existed in some matrix operations.