lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On Thu, Aug 4, 2011 at 03:21, Andrzej Pruszynski
<andrzej.pruszynski@autodesk.com> wrote:
>
> Hello,
>
> Lua is used on many  '5.10 Generic_142909-17 sun4v sparc SUNW,SPARC-Enterprise-T5120' servers and in all cases copas.lua module is used, lua 5.1.4 will trigger core dump, after some time. I used official luasocket-2.0.2 and unofficial luasocket-2.0.3.
>
> I managed to focus on garbage collector and socket.select used by copas.lua and the following script demonstrates the problem (it works fine on Windows XP 32, Windows 7.0 64):
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> require("socket")
> local i = 0
>
> while true do
>         t = {}
>         socket.select(nil, nil, 0.05)
>         i = i + 1
>         if ( i % 10 == 0 ) then collectgarbage("collect") end
>         print("kB", gcinfo(), i)
>         t = nil
> end
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> Available memory goes down from 40 kB to 0 when 'i' reaches 400 and then memory counter shows '4194303' when loop reaches 410:
>
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> kB      2       409
> kB      4194303 410
> kB      0       411
> kB      0       412
> kB      0       413
> kB      0       414
> kB      0       415
> kB      0       416
> kB      0       417
> kB      1       418
> kB      1       419
> kB      4194302 420
> kB      4194303 421
> kB      4194303 422
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> When I use 'msleep' module setting the same timeout, 'collect' keeps the memory size around 38 kB.
>
>
> If 'collectgarbage("collect")' is not used, something different happens. Memory goes up and down in two waves reaching near 0 in ~ 1100 loop steps and then it will go up forever (well, till system has free memory available).
>
>
> Thank you for any hints about possible fix.
>
> Andrzej
>
>

I think the "memory usage going up and down" is normal, resulting from
LuaSocket creating internal temporary objects which eventually get
collected. I saw the same behaviour in a server I wrote.

The sudden spikes seem like possible memory corruption of some sort...
note 4194304 = 0x400000...

-- 
Sent from my toaster.