This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [patch] Fix testsuite annotate-quit race (PR 544)
Daniel Jacobowitz wrote:
On Mon, Mar 24, 2008 at 09:01:30PM -0400, Chet Ramey wrote:
Daniel Jacobowitz wrote:
What I think is happening is that rl_redisplay has some optimizations
which cause it not to redisplay. And since we have a custom function
installed readline isn't calling the alternate hooks that force
display. So rl_redisplay does not actually meet the interface
associated with rl_redisplay_function despite being its default
value. Nasty.
That's interesting, if true. Can anyone add detail confirming this?
Sure. There's a check "rl_redisplay_function == rl_redisplay" in the
readline source, and another in the definition of
CUSTOM_REDISPLAY_FUNCTION. So that function is inherently special.
From what Nick and Jan have found, stty -echo and then running GDB
with a custom redisplay function that just calls rl_redisplay
will not display the GDB prompt.
You were pretty close to the answer; had you looked at the source
around the check you identified, you would have found it
(readline.c:readline_internal_setup()):
/* If we're not echoing, we still want to at least print a prompt, because
rl_redisplay will not do it for us. If the calling application has a
custom redisplay function, though, let that function handle it. */
if (readline_echoing_p == 0 && rl_redisplay_function == rl_redisplay)
{
if (rl_prompt && rl_already_prompted == 0)
{
nprompt = _rl_strip_prompt (rl_prompt);
fprintf (_rl_out_stream, "%s", nprompt);
fflush (_rl_out_stream);
free (nprompt);
}
}
You've turned off echo, and the redisplay code won't print anything in that
case. Readline, when using its internal redisplay function, chooses to
print a prompt to at least visually clue the user that it's around.
Having accepted responsibility for handling redisplay, gdb can do whatever
it deems appropriate.
Chet
--
``The lyf so short, the craft so long to lerne.'' - Chaucer
Live Strong. No day but today.
Chet Ramey, ITS, CWRU chet@case.edu http://cnswww.cns.cwru.edu/~chet/