This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [Bug-readline] [readline patch, gdb-7.3?] Avoid free from a signal handler [Re: [PATCH] Make interrupting tab-completion safe.]
- From: Pedro Alves <pedro at codesourcery dot com>
- To: gdb-patches at sourceware dot org
- Cc: Jan Kratochvil <jan dot kratochvil at redhat dot com>, Chet Ramey <chet dot ramey at case dot edu>, bug-readline at gnu dot org, Sterling Augustine <saugustine at google dot com>
- Date: Wed, 19 Oct 2011 18:01:50 +0100
- Subject: Re: [Bug-readline] [readline patch, gdb-7.3?] Avoid free from a signal handler [Re: [PATCH] Make interrupting tab-completion safe.]
- References: <20110612121158.GA10611@host1.jankratochvil.net> <4E15A220.4030404@case.edu> <20111019163257.GA20394@host1.jankratochvil.net>
On Wednesday 19 October 2011 17:32:57, Jan Kratochvil wrote:
> On Thu, 07 Jul 2011 14:10:08 +0200, Chet Ramey wrote:
> > The impression I got from your earlier message is that is is very easy
> > to reproduce using a GDB .exp file:
> >
> > "Used this GDB .exp file, reproducible in several seconds"
> >
> > All I am asking you do to is to check whether you can reproduce it using
> > the same .exp file after removing references to _rl_interrupt_immediately
> > in complete.c.
>
> After removing the workaround:
> https://lists.gnu.org/archive/html/bug-readline/2011-06/msg00003.html
>
> and removing the changes of _rl_interrupt_immediately in complete.c the
> memory corruption is still reproducible:
> *** glibc detected *** .../gdb/testsuite/../../gdb/gdb: munmap_chunk(): invalid pointer: 0x000000000718ef70 ***
This is gdb's readline copy, but:
static RETSIGTYPE
rl_signal_handler (sig)
int sig;
{
if (_rl_interrupt_immediately || RL_ISSTATE(RL_STATE_CALLBACK))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
{
_rl_interrupt_immediately = 0;
_rl_handle_signal (sig);
}
else
_rl_caught_signal = sig;
SIGHANDLER_RETURN;
}
and GDB uses readline's callback interface.
--
Pedro Alves