<div dir="ltr">Since GLib's memory profiling fails and there was a lot of Valgrind propaganda around, I gave it a try with:<div><br></div><div>valgrind --leak-check=yes --leak-check=full --show-leak-kinds=all ./mp-v01.020 >../var/z3.txt<br></div><div><br></div><div>to see just stderr where Valgrind prints its messages prefixed with ==.</div><div><br></div><div>I was very proud to see that my program is completely (except for vaapisink) m<span style="color:rgb(32,32,32);font-family:Arial,Geneva,Helvetica,sans-serif;font-size:13px;line-height:16.2000007629395px">emcheck-clean (although, frankly, I know it leaks memory somewhere: it goes from 1% to 50% of 16GB of system memory in 3 hours; sure, I blame the graphics driver and libraries).</span></div><div><span style="color:rgb(32,32,32);font-family:Arial,Geneva,Helvetica,sans-serif;font-size:13px;line-height:16.2000007629395px"><br></span></div><div><span style="color:rgb(32,32,32);font-family:Arial,Geneva,Helvetica,sans-serif;font-size:13px;line-height:16.2000007629395px">Therefore: I decided to perform an easy experiment with an obvious test leak:</span></div><div><span style="color:rgb(32,32,32);font-family:Arial,Geneva,Helvetica,sans-serif;font-size:13px;line-height:16.2000007629395px"><br></span></div><div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">    gchar *leak;</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">    for (gint i = 1; ; i++) {</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">        // my main loop code here</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">        leak = g_strdup_printf ("iteration %d", i);</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">        g_printerr ("!!! LEAK: %s\n", leak);</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">    }</span></font></div></div><div><span style="color:rgb(32,32,32);font-family:Arial,Geneva,Helvetica,sans-serif;font-size:13px;line-height:16.2000007629395px"><br></span></div><div><span style="color:rgb(32,32,32);font-family:Arial,Geneva,Helvetica,sans-serif;font-size:13px;line-height:16.2000007629395px">Obviously, Valgrind does not catch this trivial case (leak is never freed and non-recoverable):</span></div><div><span style="color:rgb(32,32,32);font-family:Arial,Geneva,Helvetica,sans-serif;font-size:13px;line-height:16.2000007629395px"><br></span></div><div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">fl@nuc5:~/bin$ valgrind --leak-check=yes --leak-check=full --show-leak-kinds=all ./mp-v01.020 >../var/z3.txt</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677== Memcheck, a memory error detector</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677== Using Valgrind-3.10.0.SVN and LibVEX; rerun with -h for copyright info</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677== Command: ./mp-v01.020</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677== </span></font></div><div style><br></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">videosink=vaapisink</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">libva info: VA-API version 0.35.1</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">libva info: va_getDriverName() returns 0</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">libva info: Found init function __vaDriverInit_0_35</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677== Thread 5 play ads:</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677== Syscall param ioctl(generic) points to uninitialised byte(s)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677==    at 0x5DCDE77: ioctl (syscall-template.S:81)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677==    by 0x18C2F3A3: drmIoctl (in /usr/lib/x86_64-linux-gnu/libdrm.so.2.4.0)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677==    by 0x18C316EE: drmCommandWriteRead (in /usr/lib/x86_64-linux-gnu/libdrm.so.2.4.0)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677==    by 0x1EB9EE59: intel_driver_init (in /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677==    by 0x1EB82D67: __vaDriverInit_0_35 (in /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677==    by 0x1670C207: ??? (in /usr/lib/x86_64-linux-gnu/libva.so.1.3501.0)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677==    by 0x1670CF0A: vaInitialize (in /usr/lib/x86_64-linux-gnu/libva.so.1.3501.0)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677==    by 0x19054B42: gst_vaapi_display_new (in /usr/lib/x86_64-linux-gnu/libgstvaapi-1.2.so.0.0.0)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677==    by 0x11344B21: ??? (in /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvaapi.so)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677==    by 0x11348895: ??? (in /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvaapi.so)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677==    by 0x1134A798: ??? (in /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvaapi.so)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677==    by 0x6E9FCD3: gst_base_sink_query_caps (in /usr/lib/x86_64-linux-gnu/libgstbase-1.0.so.0.204.0)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677==  Address 0xafaf764 is on thread 5's stack</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677== </span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">libva info: va_openDriver() returns 0</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677== Conditional jump or move depends on uninitialised value(s)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677==    at 0x19055A0E: gst_vaapi_display_get_render_mode (in /usr/lib/x86_64-linux-gnu/libgstvaapi-1.2.so.0.0.0)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677==    by 0x1134893E: ??? (in /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvaapi.so)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677==    by 0x1134A798: ??? (in /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvaapi.so)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677==    by 0x6E9FCD3: gst_base_sink_query_caps (in /usr/lib/x86_64-linux-gnu/libgstbase-1.0.so.0.204.0)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677==    by 0x6E9FDB0: gst_base_sink_default_query (in /usr/lib/x86_64-linux-gnu/libgstbase-1.0.so.0.204.0)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677==    by 0x50C34E9: gst_pad_query (in /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0.204.0)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677==    by 0x50F2913: gst_pad_query_caps (in /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0.204.0)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677==    by 0x50F34D4: gst_element_get_compatible_pad (in /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0.204.0)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677==    by 0x50F409D: gst_element_link_pads_full (in /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0.204.0)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677==    by 0x40B8EE: build_pipeline (mp.c:301)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677==    by 0x40932C: schedules_play_cycle (mp-main.c:387)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677==    by 0x561FF04: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4002.0)</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">==8677== </span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">!!! LEAK: iteration 1</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">!!! LEAK: iteration 2</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">!!! LEAK: iteration 3</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">!!! LEAK: iteration 4</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">!!! LEAK: iteration 5</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">!!! LEAK: iteration 6</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">!!! LEAK: iteration 7</span></font></div><div style><font color="#202020" face="Arial, Geneva, Helvetica, sans-serif"><span style="line-height:16.2000007629395px">!!! LEAK: iteration 8</span></font></div><div style="color:rgb(32,32,32);font-family:Arial,Geneva,Helvetica,sans-serif;font-size:13px;line-height:16.2000007629395px">...</div></div><div style="color:rgb(32,32,32);font-family:Arial,Geneva,Helvetica,sans-serif;font-size:13px;line-height:16.2000007629395px"><br></div><div style="color:rgb(32,32,32);font-family:Arial,Geneva,Helvetica,sans-serif;font-size:13px;line-height:16.2000007629395px">I don't buy it...</div><div><span style="color:rgb(32,32,32);font-family:Arial,Geneva,Helvetica,sans-serif;font-size:13px;line-height:16.2000007629395px"> </span></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 31, 2014 at 5:04 PM, Nicolas Dufresne <span dir="ltr"><<a href="mailto:nicolas.dufresne@collabora.com" target="_blank">nicolas.dufresne@collabora.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Le 2014-10-31 11:42, Sergei Vorobyov a écrit :<span class=""><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I "forgot" the line<br>
<br>
extern GMemVTable *glib_mem_profiler_table;<br>
<br>
before int main ....<br>
<br>
(by a nasty habit of C-x C-s, which saves in emacs but kills the line and saves in Netbeans)<br>
<br>
But it *does not change anything*, since it is already defined somewhere in GLib headers.<br>
</blockquote>
<br></span>
It looks like GLib profiler is reading before each allocation (assuming it's own padded allocator was used), but some allocation seems to be from calloc instead of the profile alloc. Valgrind bad read are all targetting stuff within _dl_init (dl-init.c:34), so basically, stuff that runs before your main. A talk with the authors on how dynamic library with init function are supposed to work would be nice.<span class="HOEnZb"><font color="#888888"><br>
<br>
Nicolas</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
______________________________<u></u>_________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank">gstreamer-devel@lists.<u></u>freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/<u></u>mailman/listinfo/gstreamer-<u></u>devel</a><br>
</div></div></blockquote></div><br></div>