public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
To: git-commits@fedoraproject.org
Subject: [rpms/abrt] update-2.17.8: Backport Python lazy loading patch (rhbz#2007664)
Date: Mon, 03 Aug 2026 10:24:17 GMT	[thread overview]
Message-ID: <178575265775.1.4097792776162430489.rpms-abrt-7c6ec28dde3e@fedoraproject.org> (raw)

A new commit has been pushed.

Repo   : rpms/abrt
Branch : update-2.17.8
Commit : 7c6ec28dde3eded86606d12de0cf84a631fe14fd
Author : Matěj Grabovský <mgrabovs@redhat.com>
Date   : 2021-09-27T12:34:36+02:00
Stats  : +64/-81 in 4 file(s)
URL    : https://src.fedoraproject.org/rpms/abrt/c/7c6ec28dde3eded86606d12de0cf84a631fe14fd?branch=update-2.17.8

Log:
Backport Python lazy loading patch (rhbz#2007664)

---
diff --git a/0001-Use-lazy-imports-in-abrt_exception_handler3.patch b/0001-Use-lazy-imports-in-abrt_exception_handler3.patch
new file mode 100644
index 0000000..5c892a8
--- /dev/null
+++ b/0001-Use-lazy-imports-in-abrt_exception_handler3.patch
@@ -0,0 +1,57 @@
+From 4755f2171aa50a72d8ec03260c8cbc602263a6c0 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
+Date: Fri, 24 Sep 2021 17:48:07 +0200
+Subject: [PATCH] Use lazy imports in abrt_exception_handler3
+
+The abrt_exception_handler3 module is always imported when Python starts,
+but all the modules imported from it (except sys) are only used during crashes.
+
+Especially the systemd.journal import is really expensive.
+
+Fixes https://bugzilla.redhat.com/show_bug.cgi?id=2007664
+---
+ src/hooks/abrt_exception_handler3.py.in | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/src/hooks/abrt_exception_handler3.py.in b/src/hooks/abrt_exception_handler3.py.in
+index 89e2474b..0bc548e0 100644
+--- a/src/hooks/abrt_exception_handler3.py.in
++++ b/src/hooks/abrt_exception_handler3.py.in
+@@ -20,13 +20,15 @@
+ Module for the ABRT exception handling hook
+ """
+ 
++# Avoid importing anything but sys here, use lazy imports.
++# This file is imported on every Python startup,
++# all unused imports only increase the startup time and memory usage.
+ import sys
+-import os
+ 
+-from systemd import journal
+ 
+ def syslog(msg):
+     """Log message to system logger (journal)"""
++    from systemd import journal
+ 
+     journal.send(msg)
+ 
+@@ -68,6 +70,8 @@ def send(data):
+ 
+ 
+ def write_dump(tb_text, tb):
++    import os
++
+     if sys.argv[0][0] == "/":
+         executable = os.path.abspath(sys.argv[0])
+     else:
+@@ -118,6 +122,7 @@ def handle_exception(etype, value, tb):
+         sys.excepthook = sys.__excepthook__  # pylint: disable-msg=E1101
+ 
+         import errno
++        import os
+ 
+         # Ignore Ctrl-C
+         # SystemExit rhbz#636913 -> this exception is not an error
+-- 
+2.31.1
+

diff --git a/0001-hooklib-Don-t-g_autofree-backtrace.patch b/0001-hooklib-Don-t-g_autofree-backtrace.patch
deleted file mode 100644
index 1225177..0000000
--- a/0001-hooklib-Don-t-g_autofree-backtrace.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 1f2963b0611d4023957abe3c7391eab86256ba82 Mon Sep 17 00:00:00 2001
-From: Michal Fabik <mfabik@redhat.com>
-Date: Wed, 23 Sep 2020 16:55:25 +0200
-Subject: [PATCH] hooklib: Don't g_autofree backtrace
-
-The result of abrt_get_backtrace was being freed every time, even when
-no error occured.
-
-Resolves:
-https://github.com/abrt/abrt/issues/1528
-https://bugzilla.redhat.com/show_bug.cgi?id=1881745
-Signed-off-by: Michal Fabik <mfabik@redhat.com>
----
- src/lib/hooklib.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/lib/hooklib.c b/src/lib/hooklib.c
-index dceaeb16..56b77bc3 100644
---- a/src/lib/hooklib.c
-+++ b/src/lib/hooklib.c
-@@ -348,7 +348,7 @@ char *abrt_get_backtrace(struct dump_dir *dd, unsigned timeout_sec, const char *
-     unsigned bt_depth = 1024;
-     const char *thread_apply_all = "thread apply all -ascending";
-     const char *full = "full ";
--    g_autofree char *bt = NULL;
-+    char *bt = NULL;
-     while (1)
-     {
-         args[bt_cmd_index] = g_strdup_printf("%s backtrace %s%u", thread_apply_all, full, bt_depth);
-@@ -367,6 +367,7 @@ char *abrt_get_backtrace(struct dump_dir *dd, unsigned timeout_sec, const char *
-             /* (NB: in fact, current impl. of exec_vp() never returns NULL) */
-             log_warning("Failed to generate backtrace, reducing depth to %u",
-                         bt_depth);
-+            free(bt);
- 
-         /* Replace -ex disassemble (which disasms entire function $pc points to)
-          * to a version which analyzes limited, small patch of code around $pc.
--- 
-2.26.2
-

diff --git a/0002-hooklib-Proper-freeing-of-backtrace.patch b/0002-hooklib-Proper-freeing-of-backtrace.patch
deleted file mode 100644
index a9ded17..0000000
--- a/0002-hooklib-Proper-freeing-of-backtrace.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 5fa7b1f84fb02ca5dcf50d27f4bc14563c1918f6 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Mat=C4=9Bj=20Grabovsk=C3=BD?= <mgrabovs@redhat.com>
-Date: Mon, 12 Oct 2020 19:14:03 +0200
-Subject: [PATCH] hooklib: Proper freeing of backtrace
-
-Improper bracing caused the bt variable to be freed every time in every
-iteration no matter what. This would then lead to an invalid (freed)
-pointer being returned by the function.
-
-The mistake was made in 1f2963b0 and reported by Jeff Law.
----
- src/lib/hooklib.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/src/lib/hooklib.c b/src/lib/hooklib.c
-index 56b77bc3..fc2a6a00 100644
---- a/src/lib/hooklib.c
-+++ b/src/lib/hooklib.c
-@@ -361,13 +361,17 @@ char *abrt_get_backtrace(struct dump_dir *dd, unsigned timeout_sec, const char *
- 
-         bt_depth /= 2;
-         if (bt)
-+        {
-             log_warning("Backtrace is too big (%u bytes), reducing depth to %u",
-                         (unsigned)strlen(bt), bt_depth);
-+        }
-         else
-+        {
-             /* (NB: in fact, current impl. of exec_vp() never returns NULL) */
-             log_warning("Failed to generate backtrace, reducing depth to %u",
-                         bt_depth);
--            free(bt);
-+            g_clear_pointer(&bt, free);
-+        }
- 
-         /* Replace -ex disassemble (which disasms entire function $pc points to)
-          * to a version which analyzes limited, small patch of code around $pc.
--- 
-2.26.2
-

diff --git a/abrt.spec b/abrt.spec
index fb88956..3aef1ba 100644
--- a/abrt.spec
+++ b/abrt.spec
@@ -49,7 +49,7 @@
 Summary: Automatic bug detection and reporting tool
 Name: abrt
 Version: 2.14.6
-Release: 7%{?dist}
+Release: 8%{?dist}
 License: GPLv2+
 URL: https://abrt.readthedocs.org/
 Source: https://github.com/abrt/%{name}/archive/%{version}/%{name}-%{version}.tar.gz
@@ -136,6 +136,8 @@ BuildRequires: python3-libreport
 BuildRequires: python3-devel
 %endif
 
+Patch0: 0001-Use-lazy-imports-in-abrt_exception_handler3.patch
+
 %description
 %{name} is a tool to help users to detect defects in applications and
 to create a bug report with all information needed by maintainer to fix it.
@@ -1001,6 +1003,10 @@ killall abrt-dbus >/dev/null 2>&1 || :
 %config(noreplace) %{_sysconfdir}/profile.d/abrt-console-notification.sh
 
 %changelog
+* Mon Sep 27 2021 Matěj Grabovský <mgrabovs@redhat.com> - 2.14.6-8
+- Use lazy import in the Python exception handler to avoid slowdown in Python
+  startup (rhbz#2007664)
+
 * Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.14.6-7
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
 

                 reply	other threads:[~2026-08-03 10:24 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=178575265775.1.4097792776162430489.rpms-abrt-7c6ec28dde3e@fedoraproject.org \
    --to=git-commits@fedoraproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox