[Libav-user] How to profile libavXXX with only the .dll on Windows?
Wladislav Artsimovich
ffmpeg at frost.kiwi
Fri Mar 31 11:52:44 EEST 2023
Dear libav-users,
concerning a memory leak I tried to diagnose in Thread "[Libav-user] How
to free an AVBuffer?", I have the following block causing a memory leak
of 20MB per 100.000 frames, as reported by the Visual Studio Performance
Profiler [1 - VisualStudio Performance Profiler.png]. With this block
commented out, (and just `ffmpeg.avcodec_send_frame();` ) everything is
fine though.
```C#
fixed (byte* pMessageData = message)
{
sideData = ffmpeg.av_frame_new_side_data(&frame,
AVFrameSideDataType.AV_FRAME_DATA_SEI_UNREGISTERED, (ulong)message.Length);
System.Buffer.MemoryCopy(pMessageData, sideData->data,
(ulong)message.Length, (ulong)message.Length);
ffmpeg.avcodec_send_frame(_pCodecContext,
&frame).ThrowExceptionIfError();
ffmpeg.av_frame_remove_side_data(&frame,
AVFrameSideDataType.AV_FRAME_DATA_SEI_UNREGISTERED);
}
```
The project I'm working on is written in C#, and calls the FFmpeg .dlls
via FFmpeg.AutoGen as "unmanaged code". As such I am unable to debug it
in a meaningful way. I compiled everything along the way with debug
symbols (FFmpeg, FFmpeg.AutoGEN, My Project etc.), in the hopes, that
some debugging tool could tell me what's going on, but still the
profiler doesn't give exact information, even though it detects the
leaking allocation count and size. [2 - Memory Comparison.png]
I also tried taking a look with a lower-level debugger. I captured the
process using Windows Event Tracing and analyzed the Heap using Windows
Performance Analyzer. And whilst it can see the memory leak happening
with associated addresses, I fail to understand the origin. [3 - Windows
Performance Analyzer.png]
Lest recreating my program structure in C and debugging that, is there a
way look into what the libavXXX.dlls are doing to find the specific
origin of my memory leak?
Best regards,
Vlad
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 1 - VisualStudio Performance Profiler.png
Type: image/png
Size: 39387 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/libav-user/attachments/20230331/b502ef8b/attachment.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 2 - Memory Comparison.png
Type: image/png
Size: 38409 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/libav-user/attachments/20230331/b502ef8b/attachment-0001.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 3 - Windows Performance Analyzer.png
Type: image/png
Size: 61943 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/libav-user/attachments/20230331/b502ef8b/attachment-0002.png>
More information about the Libav-user
mailing list