From: Tom de Vries <tdevries@suse.de>
To: Andrew Burgess <aburgess@redhat.com>, gdb-patches@sourceware.org
Subject: Re: [PATCH] [gdb/tui] Fix crash with debuginfod query
Date: Thu, 15 Jan 2026 15:26:54 +0100 [thread overview]
Message-ID: <ad245589-4757-47b5-a810-489cff21074c@suse.de> (raw)
In-Reply-To: <5dbfe8e2-5f2b-40a3-80ca-09098df913df@suse.de>
On 1/15/26 2:13 PM, Tom de Vries wrote:
> Ok, I'll see if I can implement this approach in a more polished
> fashion. Please let me know if you prefer to work on it your self.
FYI, sofar I got this, passes all TUI test-cases.
Thanks,
- Tom
...
diff --git a/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c
index 272f5134d85..9280ce2a0fa 100644
--- a/gdb/tui/tui-layout.c
+++ b/gdb/tui/tui-layout.c
@@ -268,6 +268,23 @@ tui_remove_some_windows ()
tui_apply_current_layout (true);
}
+extern bool defer_rerender;
+bool defer_rerender = false;
+
+static std::vector<std::function<void ()>> deferred_rerender;
+
+extern void do_deferred_rerender ();
+
+void
+do_deferred_rerender ()
+{
+ for (auto f: deferred_rerender)
+ {
+ f ();
+ }
+ deferred_rerender.clear ();
+}
+
void
tui_win_info::resize (int height_, int width_,
int origin_x_, int origin_y_)
@@ -296,7 +313,13 @@ tui_win_info::resize (int height_, int width_,
if (handle == nullptr)
make_window ();
- rerender ();
+ if (defer_rerender)
+ deferred_rerender.push_back ([this] ()
+ {
+ rerender ();
+ });
+ else
+ rerender ();
}
diff --git a/gdb/tui/tui.c b/gdb/tui/tui.c
index fb94823f0fe..21e8838fa44 100644
--- a/gdb/tui/tui.c
+++ b/gdb/tui/tui.c
@@ -393,6 +393,9 @@ gdb_getenv_term (void)
return "<unset>";
}
+extern bool defer_rerender;
+extern void do_deferred_rerender ();
+
/* Enter in the tui mode (curses).
When in normal mode, it installs the tui hooks in gdb, redirects
the gdb output, configures the readline to work in tui mode.
@@ -493,6 +496,7 @@ tui_enable (void)
def_prog_mode ();
tui_show_frame_info (deprecated_safe_get_selected_frame ());
+ defer_rerender = true;
tui_set_initial_layout ();
tui_set_win_focus_to (tui_src_win ());
keypad (tui_cmd_win ()->handle.get (), TRUE);
@@ -516,6 +520,9 @@ tui_enable (void)
tui_setup_io (1);
+ do_deferred_rerender ();
+ defer_rerender = false;
+
/* Resize windows before anything might display/refresh a
window. */
if (tui_win_resized ())
next prev parent reply other threads:[~2026-01-15 14:27 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-14 17:28 Tom de Vries
2026-01-15 11:29 ` Andrew Burgess
2026-01-15 13:04 ` Tom de Vries
2026-01-16 13:24 ` Tom de Vries
2026-01-15 12:13 ` Andrew Burgess
2026-01-15 13:13 ` Tom de Vries
2026-01-15 14:26 ` Tom de Vries [this message]
2026-01-16 13:25 ` Tom de Vries
2026-01-16 14:53 ` Tom Tromey
2026-01-16 15:07 ` Tom de Vries
2026-01-17 13:14 ` Andrew Burgess
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=ad245589-4757-47b5-a810-489cff21074c@suse.de \
--to=tdevries@suse.de \
--cc=aburgess@redhat.com \
--cc=gdb-patches@sourceware.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