Subject: Re: bug#66221: 29.1; Animated webp image leaks memory

From: Garjola Dindi <[email-masked]>
Date: Wed, 27 Sep 2023 19:47:43 +0200

I run this on GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+
Version 3.24.37, cairo version 1.16.0) of 2023-09-23 (built from master)
with -Q option and got this message:

Stopping animation; animation possibly too big [10 times]
memory increased 167716 KB

So I guess this confirms the leak.

On Tue 26-Sep-2023 at 22:31:31 +02, Johan Claesson
<[email-masked]> wrote: 
> Hi,
>
> It seem to me that animating webp images is sometimes leaking
> memory.  This memory is not returned when buffer is killed and not
> by calling clear-image-cache either.
>
> For example running the following with the attached example
> nooshi.webp copied to ones home directory seem to increase memory
> consumption for every call (the amount it increases varies).
>
> (require 'cl-macs)
> (require 'image)
>
> (defun memory ()
>   (cdr (assq 'vsize (process-attributes (emacs-pid)))))
>
> (let ((before (memory)))
>   (with-temp-buffer
>     (cl-loop for file in (make-list 10 "~/nooshi.webp")
>              do (let ((image (create-image file nil nil :width 150)))
>                   (display-buffer (current-buffer))
>                   (insert-image image)
>                   (image-animate image nil t)))
>     (sit-for 1))
>   (clear-image-cache)
>   (message "memory increased %s KB" (- (memory) before)))
>
> Regards,
> /Johan
>
>
>
>
> In GNU Emacs 29.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.33,
>  cairo version 1.16.0) of 2023-09-20 built on goblin
> Repository revision: a9b28224af0f73d1fe0f422e9b318c5b91af889b
> Repository branch: HEAD
> Windowing system distributor 'The X.Org Foundation', version 11.0.12101003
> System Description: Ubuntu 22.04.1 LTS
>
> Configured using:
>  'configure --with-x-toolkit=gtk3 --without-compress-install
>  --with-modules --with-native-compilation=aot --with-xft
>  PKG_CONFIG_PATH=/home/jcl/usr/lib/pkgconfig'
>
> Configured features:
> ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
> JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES
> NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF
> TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB
>
> Important settings:
>   value of $LC_MONETARY: en_GB.UTF-8
>   value of $LC_NUMERIC: en_GB.UTF-8
>   value of $LC_TIME: en_GB.UTF-8
>   value of $LANG: en_US.UTF-8
>   value of $XMODIFIERS: @im=none
>   locale-coding-system: utf-8-unix
>
> Major mode: Lisp Interaction
>
> Minor modes in effect:
>   tooltip-mode: t
>   global-eldoc-mode: t
>   eldoc-mode: t
>   show-paren-mode: t
>   electric-indent-mode: t
>   mouse-wheel-mode: t
>   tool-bar-mode: t
>   menu-bar-mode: t
>   file-name-shadow-mode: t
>   global-font-lock-mode: t
>   font-lock-mode: t
>   blink-cursor-mode: t
>   line-number-mode: t
>   indent-tabs-mode: t
>   transient-mark-mode: t
>   auto-composition-mode: t
>   auto-encryption-mode: t
>   auto-compression-mode: t
>
> Load-path shadows:
> None found.
>
> Features:
> (shadow sort mail-extr emacsbug message mailcap yank-media puny dired
> dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068
> epg-config gnus-util text-property-search time-date mm-decode mm-bodies
> mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader cl-loaddefs
> comp comp-cstr warnings icons subr-x rx cl-seq cl-macs gv cl-extra
> help-mode bytecomp byte-compile cl-lib sendmail rfc2047 rfc2045
> ietf-drums mm-util mail-prsvr mail-utils rmc iso-transl tooltip cconv
> eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
> elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd
> fontset image regexp-opt fringe tabulated-list replace newcomment
> text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow
> isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax
> font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic
> indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
> tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
> romanian slovak czech european ethiopic indian cyrillic chinese
> composite emoji-zwj charscript charprop case-table epa-hook
> jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
> theme-loaddefs faces cus-face macroexp files window text-properties
> overlay sha1 md5 base64 format env code-pages mule custom widget keymap
> hashtable-print-readable backquote threads dbusbind inotify lcms2
> dynamic-setting system-font-setting font-render-setting cairo
> move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process
> native-compile emacs)
>
> Memory information:
> ((conses 16 77501 6007)
>  (symbols 48 7284 0)
>  (strings 32 19960 2670)
>  (string-bytes 1 584026)
>  (vectors 16 15627)
>  (vector-slots 8 326875 14561)
>  (floats 8 37 46)
>  (intervals 56 226 0)
>  (buffers 984 10))
--