<html>
    <head>
      <base href="https://bugs.freedesktop.org/">
    </head>
    <body><span class="vcard"><a class="email" href="mailto:psychon@znc.in" title="Uli Schlachter <psychon@znc.in>"> <span class="fn">Uli Schlachter</span></a>
</span> changed
          <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED INVALID - Memory leak in cairo_show_text"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=105466">bug 105466</a>
          <br>
             <table border="1" cellspacing="0" cellpadding="8">
          <tr>
            <th>What</th>
            <th>Removed</th>
            <th>Added</th>
          </tr>

         <tr>
           <td style="text-align:right;">Resolution</td>
           <td>---
           </td>
           <td>INVALID
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">Status</td>
           <td>REOPENED
           </td>
           <td>RESOLVED
           </td>
         </tr></table>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED INVALID - Memory leak in cairo_show_text"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=105466#c7">Comment # 7</a>
              on <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED INVALID - Memory leak in cairo_show_text"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=105466">bug 105466</a>
              from <span class="vcard"><a class="email" href="mailto:psychon@znc.in" title="Uli Schlachter <psychon@znc.in>"> <span class="fn">Uli Schlachter</span></a>
</span></b>
        <pre>Call FcFini() to shutdown fontconfig.

And if you start seeing a 256k memory leak from pixman_glyph_cache_create(),
update to a cairo version that includes 1ed124ace20194.

With the above changes, here is my valgrind output for the example from comment
#5:

==5212== HEAP SUMMARY:
==5212==     in use at exit: 12,384 bytes in 6 blocks
==5212==   total heap usage: 5,704 allocs, 5,698 frees, 2,172,379 bytes
allocated
==5212== 
==5212== 2,064 bytes in 1 blocks are still reachable in loss record 1 of 6
==5212==    at 0x4C2EBA5: calloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==5212==    by 0x5A27FCF: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x5A26B3E: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x5A28675: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x59E0508: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x400EF09: call_init.part.0 (dl-init.c:72)
==5212==    by 0x400F015: call_init (dl-init.c:118)
==5212==    by 0x400F015: _dl_init (dl-init.c:119)
==5212==    by 0x40010C9: ??? (in /lib/x86_64-linux-gnu/ld-2.27.so)
==5212== 
==5212== 2,064 bytes in 1 blocks are still reachable in loss record 2 of 6
==5212==    at 0x4C2EBA5: calloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==5212==    by 0x5A27FCF: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x5A2563F: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x5A28707: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x59E0508: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x400EF09: call_init.part.0 (dl-init.c:72)
==5212==    by 0x400F015: call_init (dl-init.c:118)
==5212==    by 0x400F015: _dl_init (dl-init.c:119)
==5212==    by 0x40010C9: ??? (in /lib/x86_64-linux-gnu/ld-2.27.so)
==5212== 
==5212== 2,064 bytes in 1 blocks are still reachable in loss record 3 of 6
==5212==    at 0x4C2EBA5: calloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==5212==    by 0x5A27FCF: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x5A4280F: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x5A0CB50: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x5A28690: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x59E0508: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x400EF09: call_init.part.0 (dl-init.c:72)
==5212==    by 0x400F015: call_init (dl-init.c:118)
==5212==    by 0x400F015: _dl_init (dl-init.c:119)
==5212==    by 0x40010C9: ??? (in /lib/x86_64-linux-gnu/ld-2.27.so)
==5212== 
==5212== 2,064 bytes in 1 blocks are still reachable in loss record 4 of 6
==5212==    at 0x4C2EBA5: calloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==5212==    by 0x5A27FCF: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x5A6306F: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x5A0CB18: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x5A28690: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x59E0508: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x400EF09: call_init.part.0 (dl-init.c:72)
==5212==    by 0x400F015: call_init (dl-init.c:118)
==5212==    by 0x400F015: _dl_init (dl-init.c:119)
==5212==    by 0x40010C9: ??? (in /lib/x86_64-linux-gnu/ld-2.27.so)
==5212== 
==5212== 2,064 bytes in 1 blocks are still reachable in loss record 5 of 6
==5212==    at 0x4C2EBA5: calloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==5212==    by 0x5A27FCF: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x5A6372F: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x5A28690: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x59E0508: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x400EF09: call_init.part.0 (dl-init.c:72)
==5212==    by 0x400F015: call_init (dl-init.c:118)
==5212==    by 0x400F015: _dl_init (dl-init.c:119)
==5212==    by 0x40010C9: ??? (in /lib/x86_64-linux-gnu/ld-2.27.so)
==5212== 
==5212== 2,064 bytes in 1 blocks are still reachable in loss record 6 of 6
==5212==    at 0x4C2EBA5: calloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==5212==    by 0x5A27FCF: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x5A2B01F: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x5A286B0: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x59E0508: ??? (in
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0.34.0)
==5212==    by 0x400EF09: call_init.part.0 (dl-init.c:72)
==5212==    by 0x400F015: call_init (dl-init.c:118)
==5212==    by 0x400F015: _dl_init (dl-init.c:119)
==5212==    by 0x40010C9: ??? (in /lib/x86_64-linux-gnu/ld-2.27.so)
==5212== 
==5212== LEAK SUMMARY:
==5212==    definitely lost: 0 bytes in 0 blocks
==5212==    indirectly lost: 0 bytes in 0 blocks
==5212==      possibly lost: 0 bytes in 0 blocks
==5212==    still reachable: 12,384 bytes in 6 blocks
==5212==         suppressed: 0 bytes in 0 blocks

(No, pixman does not provide a function to destroy its global_implementation
variable that is allocated by _pixman_choose_implementation(); no, this is not
a real memory leak; no, this is not cairo's "fault")</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are the QA Contact for the bug.</li>
      </ul>
    </body>
</html>