All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matt Turner <mattst88@gmail.com>
To: Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	 Arnaldo Carvalho de Melo <acme@kernel.org>,
	 Namhyung Kim <namhyung@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	 Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	 Jiri Olsa <jolsa@kernel.org>, Ian Rogers <irogers@google.com>,
	 Adrian Hunter <adrian.hunter@intel.com>,
	 James Clark <james.clark@linaro.org>
Cc: linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
	 bpf@vger.kernel.org, Matt Turner <mattst88@gmail.com>
Subject: [PATCH v4 0/3] perf tools: port UI from GTK2 to GTK4
Date: Sun, 06 Sep 2026 13:18:03 -0400	[thread overview]
Message-ID: <20260906-perf-gtk2-v4-0-97e92ee07214@gmail.com> (raw)

GTK2 is long dead upstream and increasingly hard to keep building on
current distros. This series ports perf's GTK-based report browser to
GTK4 and fixes it up so it's actually loadable at runtime after the
port.

Patch 1 does the mechanical port (build system, widget API changes).
Patch 2 fixes a runtime issue found after the port that prevented the
browser from loading. Patch 3 fixes leftover GTK2 calls the port missed
and a list-corruption race with the SIGINT/SIGTERM/etc. signal handler.

Signed-off-by: Matt Turner <mattst88@gmail.com>
---
Changes in v4:
- Fix gtk_widget_show()/gtk_widget_hide() calls left over from the GTK2
  port: both were removed in GTK 4. Replace with gtk_widget_set_visible(),
  adding a small wrapper for the info-bar "response" signal callback
- Block SIGSEGV/SIGFPE/SIGINT/SIGQUIT/SIGTERM around the
  perf_gtk__error_loops list updates in perf_gtk__error(): the signal
  handler (perf_gtk__signal() -> perf_gtk__exit() ->
  perf_gtk__quit_error_dialog()) walks that same list and could fire
  mid-update, corrupting it
- Link to v3: https://lore.kernel.org/r/20260906-perf-gtk2-v3-0-e1f2086214a0@gmail.com

Changes in v3:
- Fix GMainLoop leak if perf_gtk__error() is called re-entrantly: track
  active loops in a list instead of a single global pointer
- Add explicit <stdarg.h>/<stdio.h> includes instead of relying on
  transitive inclusion, which musl doesn't guarantee
- Drop the gtk4-infobar feature check and HAVE_GTK_INFO_BAR_SUPPORT:
  GtkInfoBar has been unconditionally available since well before GTK 4,
  and the check was failing outright due to its deprecation warning
- Link to v2: https://lore.kernel.org/r/20260906-perf-gtk2-v2-0-3eccff053cd1@gmail.com

Changes in v2:
- Fix error dialog's nested GMainLoop hanging if the parent window
  closes or a signal arrives while the dialog is open (quit from
  "destroy", not just "response")
- Fix build with GTK_INFO_BAR_SUPPORT: gtk_info_bar_get_content_area()
  is gone in GTK 4, use gtk_info_bar_add_child() instead
- Fix use-after-free in the progress dialog on manual close
- Fix reuse of an exhausted va_list in the vasprintf() failure path
- Link to v1: https://lore.kernel.org/r/20260906-perf-gtk2-v1-0-7564bf8523a9@gmail.com

---
Matt Turner (3):
      tools: port perf ui from GTK 2 to GTK 4
      perf tools: make the GTK4 report browser actually loadable at runtime
      perf tools: fix GTK4 leftover show/hide calls and error-loop list race

 tools/build/Makefile.feature                     |   4 +-
 tools/build/feature/Makefile                     |  10 +-
 tools/build/feature/test-gtk2-infobar.c          |  12 ---
 tools/build/feature/{test-gtk2.c => test-gtk4.c} |   4 +-
 tools/perf/Documentation/perf-report.txt         |   2 +-
 tools/perf/Makefile                              |   2 +-
 tools/perf/Makefile.config                       |  27 ++---
 tools/perf/Makefile.perf                         |   6 +-
 tools/perf/builtin-annotate.c                    |   8 +-
 tools/perf/builtin-report.c                      |   8 +-
 tools/perf/scripts/install-build-deps.sh         |   4 +-
 tools/perf/tests/make                            |   4 +-
 tools/perf/ui/gtk/annotate.c                     |  27 ++---
 tools/perf/ui/gtk/browser.c                      |  66 +++++++++---
 tools/perf/ui/gtk/gtk.h                          |  13 +--
 tools/perf/ui/gtk/hists.c                        |  33 +++---
 tools/perf/ui/gtk/progress.c                     |  40 +++++---
 tools/perf/ui/gtk/setup.c                        |   5 +-
 tools/perf/ui/gtk/util.c                         | 122 +++++++++++++++--------
 tools/perf/ui/setup.c                            |   2 +-
 tools/perf/util/annotate.c                       |  11 ++
 tools/perf/util/annotate.h                       |  12 +--
 22 files changed, 242 insertions(+), 180 deletions(-)
---
base-commit: 9f0346dcbea363787186c94ef94dd01aaa215afa
change-id: 20260906-perf-gtk2-555ca04bb652

Best regards,
-- 
Matt Turner <mattst88@gmail.com>


             reply	other threads:[~2026-09-06 17:18 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-06 17:18 Matt Turner [this message]
2026-09-06 17:18 ` [PATCH v4 1/3] tools: port perf ui from GTK 2 to GTK 4 Matt Turner
2026-09-06 17:27   ` sashiko-bot
2026-09-06 17:18 ` [PATCH v4 2/3] perf tools: make the GTK4 report browser actually loadable at runtime Matt Turner
2026-09-06 17:27   ` sashiko-bot
2026-09-06 17:18 ` [PATCH v4 3/3] perf tools: fix GTK4 leftover show/hide calls and error-loop list race Matt Turner
2026-09-06 17:29   ` sashiko-bot

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=20260906-perf-gtk2-v4-0-97e92ee07214@gmail.com \
    --to=mattst88@gmail.com \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=bpf@vger.kernel.org \
    --cc=irogers@google.com \
    --cc=james.clark@linaro.org \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.