Skip to content

[Bug]: Memory leak on VPL GPU Runtime 2025Q1 Release - 25.1.4 #368

@Alexander-Koryagin

Description

@Alexander-Koryagin

Which component impacted?

Decode, Encode, Video Processing

Is it regression? Good in old configuration?

Yes, it's good in old version

What happened?

  1. Ubuntu 22.04.5 LTS
    Kernel 6.8.0-57-generic
    UHD Graphics 770
    Arc Pro A40
    Arc Pro A40

  2. gmmlib-intel-gmmlib: 22.7.1
    libva: 2.22.0
    libva-utils:2.22.0
    media-driver-intel-media: 25.1.4
    vpl-gpu-rt-intel-onevpl: 25.1.4
    libvpl: 2.13.0

  3. valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes ffmpeg -hide_banner -y -loglevel warning -hwaccel qsv -hwaccel_output_format qsv -qsv_device /dev/dri/card2 -i "udp://239.8.8.16:1234?localaddr=172.16.16.10&overrun_nonfatal=1&fifo_size=50000000&pkt_size=1316" -filter_complex "[0:#400]vpp_qsv=deinterlace=2:framerate=25,split=3[v1][v2][v3]; [v1]scale_qsv=w=720:h=404[v1out]; [v2]scale_qsv=w=640:h=360[v2out]; [v3]scale_qsv=w=426:h=240[v3out]" -map [v1out] -c:v:0 h264_qsv -profile:v:0 main -level:v:0 3 -b:v:0 3500k -maxrate:v:0 3500k -g:v:0 100 -keyint_min:v:0 100 -flags:v:0 +cgop -refs:v:0 1 -bf:v:0 2 -preset:v:0 veryfast -map [v2out] -c:v:1 h264_qsv -profile:v:1 main -level:v:1 3 -b:v:1 1500k -maxrate:v:1 1500k -g:v:1 100 -keyint_min:v:1 100 -flags:v:1 +cgop -refs:v:1 1 -bf:v:1 0 -preset:v:1 veryfast -map [v3out] -c:v:2 h264_qsv -profile:v:2 baseline -level:v:2 3 -b:v:2 800k -maxrate:v:2 800k -g:v:2 100 -keyint_min:v:2 100 -flags:v:2 +cgop -refs:v:2 1 -bf:v:2 0 -preset:v:2 veryfast -map 0:#401 -c:a:0 aac -b:a:0 64k -f mpegts "udp://239.0.0.1:8099?localaddr=127.0.0.1&pkt_size=1316"

  4. Partially output:
    ==733851== 573,440 bytes in 35 blocks are still reachable in loss record 2,438 of 2,440
    ==733851== at 0x86C87A9: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==733851== by 0x99FC568: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9A1BC3A: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9EDAA72: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0xA2E01C4: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0xA1C2B5B: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9F202EC: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9F2082F: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9C21084: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9C233C6: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9C0596A: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9406A73: vaEndPicture (in /opt/intel/media/lib64/libva.so.2.2200.0)
    ==733851==
    ==733851== 1,507,328 bytes in 92 blocks are still reachable in loss record 2,439 of 2,440
    ==733851== at 0x86C87A9: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==733851== by 0x99FC568: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9A1BC3A: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9D597F5: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9D31753: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9ED5652: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9C394D4: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9C21D6B: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9C26B7B: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9C0579A: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9406A73: vaEndPicture (in /opt/intel/media/lib64/libva.so.2.2200.0)
    ==733851== by 0xF23072A: ??? (in /opt/intel/media/lib64/libmfx-gen.so.1.2.14)
    ==733851==
    ==733851== 1,867,776 bytes in 114 blocks are still reachable in loss record 2,440 of 2,440
    ==733851== at 0x86C87A9: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==733851== by 0x99FC568: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9A1BC3A: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9F490A0: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9F4B85B: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9F49243: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9F4C568: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9F5344D: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9F91140: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9F2FAC3: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9C5B4D7: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851== by 0x9C059E2: ??? (in /opt/intel/media/lib64/iHD_drv_video.so)
    ==733851==
    ==733851== LEAK SUMMARY:
    ==733851== definitely lost: 69,080 bytes in 8 blocks
    ==733851== indirectly lost: 378,777 bytes in 4,690 blocks
    ==733851== possibly lost: 7,760 bytes in 29 blocks
    ==733851== still reachable: 5,500,804 bytes in 4,398 blocks
    ==733851== of which reachable via heuristic:
    ==733851== stdstring : 27,302 bytes in 695 blocks
    ==733851== newarray : 1,544 bytes in 1 blocks
    ==733851== suppressed: 0 bytes in 0 blocks
    ==733851==
    ==733851== For lists of detected and suppressed errors, rerun with: -s
    ==733851== ERROR SUMMARY: 19 errors from 19 contexts (suppressed: 0 from 0)

What's the usage scenario when you are seeing the problem?

Transcode for media delivery

What impacted?

No response

Debug Information

No response

Do you want to contribute a patch to fix the issue?

None

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions