ModDota / BugTracker

Listing bugs for Dota 2 Custom Games
9 stars 1 forks source link

Crash & Memory leak with CustomNetTables:GetTableValue #147

Closed CryDeS closed 4 years ago

CryDeS commented 5 years ago

Frequent issues to GetTableValue in net-tables cause memory leak that crash dedicated server

Simple example:

local net_tables = {} 
for i = 0, 10000000 do 
        local net_table = CustomNetTables:GetTableValue("heroes", "test_table") or {}
        table.insert(net_tables, net_table)
end 
net_tables = nil 

That call allocate ~1.5GB RAM on server, that will be cleared not completely (~100-150MB will leak).

If you try call it every game tick - after 30 minute dota dedicated server will crash.

That also cause some spam messages to console(and completly that spam are right)

LUA Memory usage warning: The VM has hit a new high usage of 1,685,061,632 bytes.

Calling garbage collector manually doesn't help at all( 0 items collected ), but counting lua memory will print something about ~10Mb.


Also that problem(2015 YEAR!): https://dev.dota2.com/showthread.php?t=184696


I think that NEED to be fixed. Or custom developers must have another way to sync server with client.

GoToNightmare commented 5 years ago

CustomNetTables:GetTableValue CustomNetTables:SetTableValue do not cause leak, but there is problem with lua garbage collector (or just lack of knowlege of it)

ChalkyBrush commented 4 years ago

I wonder if we can close this for summer scrub http://www.dota2.com/summerscrub