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.

[参考译文] TDA4VM-Q1:循环 TIDLRT_create 和 tidl_model_destroy 时文件描述符泄漏

Guru**** 2845290 points

Other Parts Discussed in Thread: TDA4VM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1634767/tda4vm-q1-file-descriptor-leak-when-looping-tidlrt_create-and-tidl_model_destroy

器件型号: TDA4VM-Q1
Thread: TDA4VM 中讨论的其他器件

你(们)好
TDA4VM SDK9.2

我遇到了一个问题、TIDLRT_create(prms, &handle)tidl_model_destroy在每次迭代中循环至、然后循环至。
  • 何时ulimit -n设置为 1024 、该进程在之后崩溃/失败 92 次迭代
  • 何时ulimit -n设置为 65536 、该进程可以运行更多的迭代。
似乎存在资源泄漏(可能是文件描述符)、这会阻止进程以较低的限制无限期运行。
我的问题是:
  1. 为什么即使我正在调用销毁功能、也会发生此泄漏?
  2. 是否有办法解决或解决此泄漏问题、以允许无限循环?

日志:

Start DMS... 144
[DMS] ******************************
[DMS] Create DMS, Version:0.4.8b
[DMS] ******************************
[DMS] enable_dump_ir: 0
[DMS] enable_dump_d : 0
[DMS] enable_tidlrt : 1
[TIDLRT] tidl_model_create...1
[TIDLRT] Model names: net:../models/tidl_facedet_net.bin, io:../models/tidl_facedet_io.bin
[TIDLRT] prms.targetPriority: 7 
[TIDLRT] prms.net_capacity: 1798412 
[TIDLRT] prms.io_capacity: 93976 
APP: Init ... !!!
MEM: Init ... !!!
MEM: Initialized DMA HEAP (fd=5) !!!
MEM: Init ... Done !!!
IPC: Init ... !!!
IPC: Init ... Done !!!
REMOTE_SERVICE: Init ... !!!
REMOTE_SERVICE: Init ... Done !!!
 31401.450806 s: GTC Frequency = 200 MHz
APP: Init ... Done !!!
 31401.450847 s:  VX_ZONE_INIT:Enabled
 31401.450857 s:  VX_ZONE_ERROR:Enabled
 31401.450865 s:  VX_ZONE_WARNING:Enabled
 31401.451161 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:116] Added target MPU-0 
 31401.451269 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:116] Added target MPU-1 
 31401.451340 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:116] Added target MPU-2 
 31401.451503 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:116] Added target MPU-3 
 31401.451520 s:  VX_ZONE_INIT:[tivxInitLocal:136] Initialization Done !!!
 31401.451555 s:  VX_ZONE_INIT:[tivxHostInitLocal:101] Initialization Done for HOST !!!
[DMS] Detector Init OK
[TIDLRT] tidl_model_create...1
[TIDLRT] Model names: net:../models/tidl_facelmk_net.bin, io:../models/tidl_facelmk_io.bin
[TIDLRT] prms.targetPriority: 7 
[TIDLRT] prms.net_capacity: 1587044 
[TIDLRT] prms.io_capacity: 93976 
[DMS] Landmarker Init OK
[TIDLRT] tidl_model_create...1
[TIDLRT] Model names: net:../models/tidl_eyeblink_net.bin, io:../models/tidl_eyeblink_io.bin
[TIDLRT] prms.targetPriority: 7 
[TIDLRT] prms.net_capacity: 1389020 
[TIDLRT] prms.io_capacity: 93976 
[DMS] Blink Init OK
[DMS] DMS created at 20260320-041959
[DMS] Destroy DMS...
[TIDLRT] tidl_model_destroy...
[TIDLRT] TIDLRT_deactivate status 0
[TIDLRT] TIDLRT_delete status 0
[DMS] Detector Release OK
[TIDLRT] tidl_model_destroy...
[TIDLRT] TIDLRT_deactivate status 0
[TIDLRT] TIDLRT_delete status 0
[DMS] Landmarker Release OK
[TIDLRT] tidl_model_destroy...
[TIDLRT] TIDLRT_deactivate status 0
 31401.549623 s:  VX_ZONE_INIT:[tivxHostDeInitLocal:115] De-Initialization Done for HOST !!!
 31401.550186 s:  VX_ZONE_INIT:[tivxDeInitLocal:204] De-Initialization Done !!!
APP: Deinit ... !!!
REMOTE_SERVICE: Deinit ... !!!
REMOTE_SERVICE: Deinit ... Done !!!
IPC: Deinit ... !!!
IPC: DeInit ... Done !!!
MEM: Deinit ... !!!
DDR_SHARED_MEM: Alloc's: 45 alloc's of 6382458 bytes 
DDR_SHARED_MEM: Free's : 45 free's  of 6382458 bytes 
DDR_SHARED_MEM: Open's : 0 allocs  of 0 bytes 
MEM: Deinit ... Done !!!
APP: Deinit ... Done !!!
[TIDLRT] TIDLRT_delete status 0
[DMS] Blink Release OK
[DMS] ******************************
[DMS] Destroy DMS, All Released!
[DMS] ******************************

Start DMS... 145
[DMS] ******************************
[DMS] Create DMS, Version:0.4.8b
[DMS] ******************************
[DMS] enable_dump_ir: 0
[DMS] enable_dump_d : 0
[DMS] enable_tidlrt : 1
[TIDLRT] tidl_model_create...1
[TIDLRT] Model names: net:../models/tidl_facedet_net.bin, io:../models/tidl_facedet_io.bin
[TIDLRT] prms.targetPriority: 7 
[TIDLRT] prms.net_capacity: 1798412 
[TIDLRT] prms.io_capacity: 93976 
APP: Init ... !!!
MEM: Init ... !!!
MEM: Initialized DMA HEAP (fd=5) !!!
MEM: Init ... Done !!!
IPC: Init ... !!!
IPC: Init ... Done !!!
REMOTE_SERVICE: Init ... !!!
REMOTE_SERVICE: Init ... Done !!!
 31401.676313 s: GTC Frequency = 200 MHz
APP: Init ... Done !!!
 31401.676359 s:  VX_ZONE_INIT:Enabled
 31401.676370 s:  VX_ZONE_ERROR:Enabled
 31401.676378 s:  VX_ZONE_WARNING:Enabled
 31401.676753 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:116] Added target MPU-0 
 31401.676874 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:116] Added target MPU-1 
 31401.676944 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:116] Added target MPU-2 
 31401.677115 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:116] Added target MPU-3 
 31401.677132 s:  VX_ZONE_INIT:[tivxInitLocal:136] Initialization Done !!!
 31401.677162 s:  VX_ZONE_INIT:[tivxHostInitLocal:101] Initialization Done for HOST !!!
[DMS] Detector Init OK
[TIDLRT] tidl_model_create...1
[TIDLRT] Model names: net:../models/tidl_facelmk_net.bin, io:../models/tidl_facelmk_io.bin
[TIDLRT] prms.targetPriority: 7 
[TIDLRT] prms.net_capacity: 1587044 
[TIDLRT] prms.io_capacity: 93976 
[DMS] Landmarker Init OK
[TIDLRT] tidl_model_create...1
[TIDLRT] Model names: net:../models/tidl_eyeblink_net.bin, io:../models/tidl_eyeblink_io.bin
[TIDLRT] prms.targetPriority: 7 
[TIDLRT] prms.net_capacity: 1389020 
[TIDLRT] prms.io_capacity: 93976 
[DMS] Blink Init OK
[DMS] DMS created at 20260320-041959
[DMS] Destroy DMS...
[TIDLRT] tidl_model_destroy...
[TIDLRT] TIDLRT_deactivate status 0
[TIDLRT] TIDLRT_delete status 0
[DMS] Detector Release OK
[TIDLRT] tidl_model_destroy...
[TIDLRT] TIDLRT_deactivate status 0
[TIDLRT] TIDLRT_delete status 0
[DMS] Landmarker Release OK
[TIDLRT] tidl_model_destroy...
[TIDLRT] TIDLRT_deactivate status 0
 31401.778582 s:  VX_ZONE_INIT:[tivxHostDeInitLocal:115] De-Initialization Done for HOST !!!
 31401.779225 s:  VX_ZONE_INIT:[tivxDeInitLocal:204] De-Initialization Done !!!
APP: Deinit ... !!!
REMOTE_SERVICE: Deinit ... !!!
REMOTE_SERVICE: Deinit ... Done !!!
IPC: Deinit ... !!!
IPC: DeInit ... Done !!!
MEM: Deinit ... !!!
DDR_SHARED_MEM: Alloc's: 45 alloc's of 6382458 bytes 
DDR_SHARED_MEM: Free's : 45 free's  of 6382458 bytes 
DDR_SHARED_MEM: Open's : 0 allocs  of 0 bytes 
MEM: Deinit ... Done !!!
APP: Deinit ... Done !!!
[TIDLRT] TIDLRT_delete status 0
[DMS] Blink Release OK
[DMS] ******************************
[DMS] Destroy DMS, All Released!
[DMS] ******************************

Start DMS... 146
[DMS] ******************************
[DMS] Create DMS, Version:0.4.8b
[DMS] ******************************
[DMS] enable_dump_ir: 0
[DMS] enable_dump_d : 0
[DMS] enable_tidlrt : 1
[TIDLRT] tidl_model_create...1
[TIDLRT] Model names: net:../models/tidl_facedet_net.bin, io:../models/tidl_facedet_io.bin
[TIDLRT] prms.targetPriority: 7 
[TIDLRT] prms.net_capacity: 1798412 
[TIDLRT] prms.io_capacity: 93976 
APP: Init ... !!!
MEM: Init ... !!!
MEM: Initialized DMA HEAP (fd=5) !!!
MEM: Init ... Done !!!
IPC: Init ... !!!
IPC: Init ... Done !!!
REMOTE_SERVICE: Init ... !!!
REMOTE_SERVICE: Init ... Done !!!
 31401.893173 s: GTC Frequency = 200 MHz
APP: Init ... Done !!!
 31401.893418 s:  VX_ZONE_INIT:Enabled
 31401.893507 s:  VX_ZONE_ERROR:Enabled
 31401.893581 s:  VX_ZONE_WARNING:Enabled
 31401.894618 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:116] Added target MPU-0 
 31401.895677 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:116] Added target MPU-1 
 31401.899572 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:116] Added target MPU-2 
 31401.900148 s:  VX_ZONE_INIT:[tivxPlatformCreateTargetId:116] Added target MPU-3 
 31401.900180 s:  VX_ZONE_INIT:[tivxInitLocal:136] Initialization Done !!!
 31401.900322 s:  VX_ZONE_INIT:[tivxHostInitLocal:101] Initialization Done for HOST !!!
[DMS] Detector Init OK
[TIDLRT] tidl_model_create...1
[TIDLRT] Model names: net:../models/tidl_facelmk_net.bin, io:../models/tidl_facelmk_io.bin
[TIDLRT] prms.targetPriority: 7 
[TIDLRT] prms.net_capacity: 1587044 
[TIDLRT] prms.io_capacity: 93976 
[DMS] Landmarker Init OK
[TIDLRT] tidl_model_create...1
[TIDLRT] Model names: net:../models/tidl_eyeblink_net.bin, io:../models/tidl_eyeblink_io.bin
[TIDLRT] prms.targetPriority: 7 
[TIDLRT] prms.net_capacity: 1389020 
[TIDLRT] prms.io_capacity: 93976 
[DMS] Blink Init OK
[DMS] DMS created at 20260320-041959
[DMS] Destroy DMS...
[TIDLRT] tidl_model_destroy...
[TIDLRT] TIDLRT_deactivate status 0
[TIDLRT] TIDLRT_delete status 0
[DMS] Detector Release OK
[TIDLRT] tidl_model_destroy...
[TIDLRT] TIDLRT_deactivate status 0
[TIDLRT] TIDLRT_delete status 0
[DMS] Landmarker Release OK
[TIDLRT] tidl_model_destroy...
[TIDLRT] TIDLRT_deactivate status 0
 31401.990242 s:  VX_ZONE_INIT:[tivxHostDeInitLocal:115] De-Initialization Done for HOST !!!
 31401.993731 s:  VX_ZONE_INIT:[tivxDeInitLocal:204] De-Initialization Done !!!
APP: Deinit ... !!!
REMOTE_SERVICE: Deinit ... !!!
REMOTE_SERVICE: Deinit ... Done !!!
IPC: Deinit ... !!!
Segmentation fault (core dumped)



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

    尊敬的 Yang:

    您能否在现有 SDK 演示上创建任何测试用例以重新创建问题?

    我已修改测试应用程序 TI_DEVICE_ARMv8_TEST_dl_algo_host_rt.out、将 TIDLRT_create  () 和 TIDLRT_DELETE () 调用约 1000 次、并且无法重现问题、更改如下。

    diff --git a/c7x-mma-tidl/arm-tidl/rt/test/src/tidl_tb.c b/c7x-mma-tidl/arm-tidl/rt/test/src/tidl_tb.c
    index ba30c18c..53e580c5 100644
    --- a/c7x-mma-tidl/arm-tidl/rt/test/src/tidl_tb.c
    +++ b/c7x-mma-tidl/arm-tidl/rt/test/src/tidl_tb.c
    @@ -585,12 +585,22 @@ int32_t tidlMultiInstanceTest(int8_t** configNames, int32_t totalInsts, void * u
          * FORCE NEGATIVE TEST END
          */
     #endif
    -
    -    status = TIDLRT_create(&prms, &handle);
    -  
    -    if(status != IALG_EOK)
    +    for(int iter = 0; iter<1000; iter++)
         {
    -      TIDLRT_delete(NULL);
    +      tidl_tb_printf(0, "TIDLRT_create called %d\n", iter);
    +
    +      status = TIDLRT_create(&prms, &handle);
    +    
    +      if(status != IALG_EOK)
    +      {
    +        tidl_tb_printf(0, "TIDLRT_create failed %d\n", iter); 
    +        TIDLRT_delete(NULL);
    +      }
    +      if(status == IALG_EOK)
    +      {
    +        tidl_tb_printf(0, "TIDLRT_delete called %d\n", iter); 
    +        TIDLRT_delete(handle);
    +      }
         }
     
     #if (!BUILD_WITH_STATIC_ARRAYS)
    @@ -599,7 +609,7 @@ int32_t tidlMultiInstanceTest(int8_t** configNames, int32_t totalInsts, void * u
           continue;
         }
     #endif
    -
    +    status = IALG_EFAIL;
     #ifdef TEST_MULTIPRIORITY
         prms.targetPriority = 100 ;
         status = TIDLRT_create(&prms, &handle1);

    这里是我的“ulimit -A“

    real-time non-blocking time  (microseconds, -R) unlimited
    core file size              (blocks, -c) 0
    data seg size               (kbytes, -d) unlimited
    scheduling priority                 (-e) 0
    file size                   (blocks, -f) unlimited
    pending signals                     (-i) 26168
    max locked memory           (kbytes, -l) 8192
    max memory size             (kbytes, -m) unlimited
    open files                          (-n) 1024
    pipe size                (512 bytes, -p) 8
    POSIX message queues         (bytes, -q) 819200
    real-time priority                  (-r) 0
    stack size                  (kbytes, -s) 8192
    cpu time                   (seconds, -t) unlimited
    max user processes                  (-u) 26168
    virtual memory              (kbytes, -v) unlimited
    file locks                          (-x) unlimited
    

    您是否可以尝试在此设置中重现您的问题、以便我可以从我这边重现问题

    此致、
    Gokul