Hi Michael,
 
thanks for spotting this. I will include the fix in the next release
 
Regards
 
Gerald
 

> Michael Stevens <michael.stev...@dianomi.com.invalid> hat am 03.01.2025 11:56 
> CET geschrieben:
>  
>  
> Hi,
>  
> This change hopefully fixes a memory leak in Embperl 3.0.0:
>  
> Output of valgrind running test suite without change:
>  
> ==912727==
> ==912727== HEAP SUMMARY:
> ==912727==     in use at exit: 25,119,424 bytes in 88,791 blocks
> ==912727==   total heap usage: 1,183,812 allocs, 1,095,021 frees, 153,474,615 
> bytes allocated
> ==912727==
> ==912727== LEAK SUMMARY:
> ==912727==    definitely lost: 50,430 bytes in 1,446 blocks
> ==912727==    indirectly lost: 107,796 bytes in 42 blocks
> ==912727==      possibly lost: 24,691,729 bytes in 87,116 blocks
> ==912727==    still reachable: 269,469 bytes in 187 blocks
> ==912727==                       of which reachable via heuristic:
> ==912727==                         length64           : 28 bytes in 1 blocks
> ==912727==                         newarray           : 59,824 bytes in 1,787 
> blocks
> ==912727==         suppressed: 0 bytes in 0 blocks
> ==912727== Rerun with --leak-check=full to see details of leaked memory
> ==912727==
> ==912727== Use --track-origins=yes to see where uninitialised values come from
> ==912727== For lists of detected and suppressed errors, rerun with: -s
> ==912727== ERROR SUMMARY: 133 errors from 12 contexts (suppressed: 0 from 0)
>  
> Output of valgrind running test suite with change:
>  
> ==911443==
> ==911443== HEAP SUMMARY:
> ==911443==     in use at exit: 25,081,636 bytes in 87,362 blocks
> ==911443==   total heap usage: 1,183,979 allocs, 1,096,617 frees, 152,712,387 
> bytes allocated
> ==911443==
> ==911443== LEAK SUMMARY:
> ==911443==    definitely lost: 28,230 bytes in 44 blocks
> ==911443==    indirectly lost: 65,364 bytes in 29 blocks
> ==911443==      possibly lost: 24,722,683 bytes in 87,103 blocks
> ==911443==    still reachable: 265,359 bytes in 186 blocks
> ==911443==                       of which reachable via heuristic:
> ==911443==                         newarray           : 63,240 bytes in 1,788 
> blocks
> ==911443==         suppressed: 0 bytes in 0 blocks
> ==911443== Rerun with --leak-check=full to see details of leaked memory
> ==911443==
> ==911443== Use --track-origins=yes to see where uninitialised values come from
> ==911443== For lists of detected and suppressed errors, rerun with: -s
> ==911443== ERROR SUMMARY: 115 errors from 12 contexts (suppressed: 0 from 0)
>  
> Proposed change is:
>  
> diff -urN orig/Embperl-3.0.0/epparse.c Embperl-3.0.0/epparse.c
> --- orig/Embperl-3.0.0/epparse.c        2023-10-07 19:04:44.000000000 +0100
> +++ Embperl-3.0.0/epparse.c     2025-01-03 10:33:06.519275400 +0000
> @@ -140,6 +140,7 @@
>                 {
>                 strncpy (r -> errdat1, "BuildTokenHash", sizeof (r -> 
> errdat1)) ;
>                 sprintf (r -> errdat2, "%s => procinfo", pToken -> sText) ;
> +               free(pSortTokenHash);
>                 return rcNotHashRef ;
>                 }
>             if (strcmp (pKey, "embperl") == 0)
> @@ -147,6 +148,7 @@
>             else if (strncmp (pKey, "embperl#", 8) == 0 && (n = atoi 
> (pKey+8)) > 0)
>                 embperl_CompileInitItem (r, (HV *)(SvRV (pSVValue)), pToken 
> -> nNodeName, pToken -> nNodeType, n, ppCompilerInfo) ;
>             }
> +               free(pSortTokenHash);
>         }
> In the current release version pSortTokenHash is allocated but never freed.
> 
> Michael Stevens
> Senior Developer ▪︎ Dianomi
>  
>  +44 207 802 5530 tel:+44%20207%20802%205530
>  michael.stev...@dianomi.com mailto:michael.stev...@dianomi.com
>  84 Eccleston Square London, SW1V 1PX
>  http://www.dianomi.com/
> 
> 
> This e-mail is for the sole use of the intended recipient and contains 
> information that may be privileged and/or confidential. If you are not an 
> intended recipient, please notify the sender by return e-mail and delete this 
> e-mail and any attachments. Certain required legal entity disclosures can be 
> accessed on our website.
> 

Reply via email to