Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package moarvm for openSUSE:Factory checked in at 2021-08-27 21:44:01 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/moarvm (Old) and /work/SRC/openSUSE:Factory/.moarvm.new.1899 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "moarvm" Fri Aug 27 21:44:01 2021 rev:33 rq:914565 version:2021.08 Changes: -------- --- /work/SRC/openSUSE:Factory/moarvm/moarvm.changes 2021-08-23 10:09:25.400158693 +0200 +++ /work/SRC/openSUSE:Factory/.moarvm.new.1899/moarvm.changes 2021-08-27 21:45:14.430064362 +0200 @@ -1,0 +2,6 @@ +Fri Aug 27 09:29:23 UTC 2021 - Stefan Seifert <n...@detonation.org> + +- Backport a memory leak fix from moarvm master + Add moarvm-fix-memory-leak.diff to be removed on the next release + +------------------------------------------------------------------- New: ---- moarvm-fix-memory-leak.diff ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ moarvm.spec ++++++ --- /var/tmp/diff_new_pack.pbzISj/_old 2021-08-27 21:45:15.062065116 +0200 +++ /var/tmp/diff_new_pack.pbzISj/_new 2021-08-27 21:45:15.066065121 +0200 @@ -19,7 +19,7 @@ %global mvrel 2021.08 Name: moarvm Version: %mvrel -Release: 2.1 +Release: 3.1 Summary: A virtual machine built especially for Rakudo Perl 6 License: Artistic-2.0 Group: Development/Libraries/Other @@ -27,6 +27,7 @@ Source: http://moarvm.org/releases/MoarVM-%{mvrel}.tar.gz # PATCH-FIX-OPENSUSE boo#1100677 Patch0: reproducible.patch +Patch1: moarvm-fix-memory-leak.diff BuildRequires: perl(ExtUtils::Command) %description @@ -46,6 +47,7 @@ %prep %setup -q -n MoarVM-%{mvrel} %patch0 -p1 +%patch1 -p1 %build perl Configure.pl --prefix=%{_usr} --libdir=%{_libdir} --debug --optimize=3 ++++++ moarvm-fix-memory-leak.diff ++++++ commit bb14f423768d122a23a2ef6512880d0f45c3e080 Author: Stefan Seifert <n...@detonation.org> Date: Fri Aug 27 10:16:22 2021 +0200 Fix finalizers of gen2 objects rarely getting run After garbage collection we go through the list of objects with finalizers (the finalize list) and move objects that were collected to the list of finalizers to run. We rewrite the finalize list as we walk through it, in order to only keep live objects. However during a nursery-only collection we only considered nursery objects. Objects that were already in gen2 were not moved to the collapsed finalize list. Thus we never ran those object's finalizers. Fix by indiscriminately moving objects we don't have a closer look at to the collapsed list. diff --git a/src/gc/finalize.c b/src/gc/finalize.c index e30916ffb..d4aa57b71 100644 --- a/src/gc/finalize.c +++ b/src/gc/finalize.c @@ -98,6 +98,10 @@ static void walk_thread_finalize_queue(MVMThreadContext *tc, MVMuint8 gen) { add_to_finalizing(tc, tc->finalize[i]); } } + else { + /* Just keep gen2 objects as they are during nursery-only collection */ + tc->finalize[collapse_pos++] = tc->finalize[i]; + } } tc->num_finalize = collapse_pos; }