[Ovmsdev] Memory leak

Mark Webb-Johnson mark at webb-johnson.net
Mon Apr 23 10:07:58 HKT 2018


Michael,

Do we need ovms_extram.h? Can we just put the namespace directly into ovms.h (where all the other external ram allocation stuff is)?

Regards, Mark

> On 22 Apr 2018, at 10:28 PM, Michael Balzer <dexter at expeedo.de> wrote:
> 
> I could reproduce the situation, it was caused by a combination of…
> 
> (a) the modem being captured in an endless reconnect retry loop
> (b) the notifications, still being allocated from internal RAM, adding up while server.v2 waits for the connection
> 
> I have pushed a solution for (b) and an attempt for (a) -- couldn't test that yet.
> 
> The effect of (a) is the modem only answers "ERROR" to the +CGDATA="PPP" command. I have tried different commands to reset the internal state, but it was stuck,
> only a power cycle could solve this. I have added an automatic power cycle for this situation, but it didn't occur again yet.
> 
> The solution for (b) is to move the notifications buffer to external RAM. As that went without any problems, I also moved the command and server communication
> buffers to external RAM, which also went without problems.
> 
> In action:
> 
> … (sending 15 battery data notifications) …
> I (645344) ovms-server-v2: Send MP-0 h70,1,RT-BAT-C,14,86400,2,1,4105,4105,4105,10,15,15,15,0
> OVMS# mo m
> Free 8-bit 57692/281968, 32-bit 8052/24308, SPIRAM 4124384/4194252
> --Task--     Total DRAM D/IRAM   IRAM SPIRAM   +/- DRAM D/IRAM   IRAM SPIRAM
> OVMS Events       53012  49124      0  12604         +0     +0     +0  +1768
> … (receiving 15 acks) …
> I (648804) ovms-server-v2: Incoming Msg: MP-0 h70
> OVMS# mo m
> Free 8-bit 57692/281968, 32-bit 8052/24308, SPIRAM 4125488/4194252
> --Task--     Total DRAM D/IRAM   IRAM SPIRAM   +/- DRAM D/IRAM   IRAM SPIRAM
> OVMS Events       53012  49124      0  10836         +0     +0     +0  -1768
> 
> 
> I have added a C++11 allocator template "ExtRamAllocator" for this, which can be used for all allocator-aware standard classes. "ovms_extram.h" provides a
> namespace "extram" for std type instances using the allocator. It now has "string" and "ostringstream", please add further types as needed.
> 
> @Steve: I would like to keep the allocation/task ownership info for now, I think it's worth the overhead.
> 
> Regards,
> Michael
> 
> -- 
> Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
> Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
> 
> 
> _______________________________________________
> OvmsDev mailing list
> OvmsDev at lists.openvehicles.com
> http://lists.openvehicles.com/mailman/listinfo/ovmsdev




More information about the OvmsDev mailing list