This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]