neuron2.5.2/2.5.3 源代码编译, 运行时出现内存泄漏

在debian10 上,docker里安装了干净的ubantu20.04, apt install gcc, g++, make, cmake, 版本如下:
gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2)
GNU Make 4.2.1
cmake version 3.16.3

按照 [neuron/Install-dependencies.md at main · emqx/neuron · GitHub]的说明,编译安装了依赖文件
下载了Release 2.5.3 Release · emqx/neuron · GitHub 中的 source code,进行了编译

然后在源码的 build目录下, 运行 ./neuron --log
功能都正常, 但用top来看neuron进程:

没有配任何南向/北向设备的情况下, 运行后 VIRT的值为20.0t , 观察RES的值,会缓慢增长
配置了Modbus TCP南向设备,加入2000个tag, VIRT的值为20.0t, RES的值会快速增长

如果我下载https://github.com/emqx/neuron/releases/download/2.5.2/neuron-2.5.2-linux-amd64.deb,安装这个deb包运行, 则不会出现内存泄漏的情况, top 的VIRT值也是正常的。

我在debian10 上编译, gcc version 8.3.0 (Debian 8.3.0-6) ,GNU Make 4.2.1,cmake-3.23.0 , 源码编译后,运行也是同ubuntu20.04 上一样,有内存泄漏情况。 但安装neuron-2.5.2-linux-amd64.deb,运行就不会有内存泄漏。

源码编译时,有什么参数没有调对吗?

这个是因为开了 libasan 内存检测,它会拿空间并不是泄露,不想看到这个的话可以编译时把libasan关了

-DDISABLE_ASAN=1

准确的编译方式如下:
cd neuron
mkdir build & cd build
cmake -DDISABLE_ASAN=1 … & make

这可以编译出正常的neuron。 但是Linking CXX executable modbus_test 会出错。

估计要对cmake 文件做出调整才行。

希望github上能对此编译参数做出说明,方便其他人使用。

官方文档里有……而且是你更改了文件吧,加了参数编译也是正常的

可以不编译测试的,cmake文件中有相关参数