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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions