This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TDA3MA:NDK:Telnet 服务器泄漏内存

Guru**** 657930 points
Other Parts Discussed in Thread: SYSBIOS
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/988571/tda3ma-ndk-telnet-server-leaks-memory

器件型号:TDA3MA
Thread 中讨论的其他器件:SYSBIOS

我们的设备上运行了一个 telnet 服务器、但我遇到了一个问题、即在某些连接和断开连接后堆已满。

我们将使用此配置。

VAR Telnet = xdc.useModule('ti.ndk.config.Telnet');
/*添加 Telnet 服务器*/
var telnetParams = new telnet.Params()
telnetParams.callBackFxn ='&telnet_open'
var telnet = telnet.create (telnetParams)

生成此代码。

extern socket telnet_open (PSA pSinClient);
void ti_ndk_config_telnet_init (handle hCfg)
CI_SERVICE_Telnet telnet;

/*为 Telnet 实例0指定 Telnet 服务*/
bzero (&telnetsizeof (telnet));
telnet.cisargs.Mode = 0
telnet.cisargs.ipaddr = inet_addr ("inADDR_ANY");
telnet.cisargs.pCbSrv =&ti_NDK_config_Global_serviceReport
telnet.cisargs.IfIdx = 1
telnet.param.MaxCon = 8
telnet.param.Port = 23
telnet.param.Callback =&telnet_open
CfgAddEntry (hCfg、CFGTAG 服务、CFGITEM_SERVICE_Telnet、0
sizeof (telnet)、(uint8 *)&telnet0);


我遇到的问题是、对于每个连接、我使内存分配给堆、但关闭时不会返回所有内容。

我是否需要手动释放内存?

我的 telnet_open 函数现在在调试后看起来是这样的、它仍然会泄露内存。

套接字 telnet_open (PSA pClient)
return (inval_socket);

断开连接后未释放的数据约为8KB。 我错过了什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您是否了解 过此主题 ? 另请检查 此主题 中的 Telnet 功能示例。

    此致

    葡萄园

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Vineyet、

    我已经看了一下、它可能连接到 linger 选项、但我不知道如何在配置中设置该选项。 你有示例吗?

    我可以看到,即使在 fdCloseSession、fdClose、TaskExit()之后,任务也不会关闭。

    因此、我知道我现在出现泄漏的原因。 现在我只需要关闭这些任务(子任务和 telnetTask)。


    几次连接/断开后、我有几个子任务、每个任务占用8KB 内存。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    经过一些进一步的调查,我发现使用 telnet 没有任何关系。 问题是、模式 ti_sysbios_KNL_Task_Mode_terminated 中的任务未从内存中释放。 我尝试了一些虚拟任务、他们在完成后表现得相同。 我将研究如何关闭这些计算机,但我希望尽快向您提供所有信息,以便您不调试 telnet。 如果您有任何建议、请释放这些任务分配的内存、这将是非常感激的。

    此致

    Marco

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    找到了尽管我设置了 Task.deleteTerminatedTasks = true 但任务未被删除的原因。 空闲循环任务从未执行、因为我有另一个一直在执行的任务。 如果我在该任务中添加了睡眠模式。 我的任务被删除、内存被释放。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Marco:

    感谢您提供有关根本原因的详细信息。 我们将关闭此主题。 如果您仍有问题、请随时对此主题作出回应。

    -凯尔西