This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [patch] Fix leak of bp_jit_event breakpoints
- From: Pedro Alves <pedro at codesourcery dot com>
- To: gdb-patches at sourceware dot org
- Cc: Paul Pluzhnikov <ppluzhnikov at google dot com>
- Date: Wed, 19 Jan 2011 14:09:17 -0700
- Subject: Re: [patch] Fix leak of bp_jit_event breakpoints
- References: <20110119204315.0A235190C48@elbrus2.mtv.corp.google.com>
On Wednesday 19 January 2011 13:43:15, Paul Pluzhnikov wrote:
> @@ -10588,11 +10588,12 @@ breakpoint_re_set_one (void *bint)
> printf_filtered (_("Deleting unknown breakpoint type %d\n"),
> b->type); /* fall through */
> /* Delete overlay event and longjmp master breakpoints; they will be
> - reset later by breakpoint_re_set. */
> + reset later by breakpoint_re_set. Likewise for jit_event. */
> case bp_overlay_event:
> case bp_longjmp_master:
> case bp_std_terminate_master:
> case bp_exception_master:
> + case bp_jit_event:
> delete_breakpoint (b);
> break;
>
> @@ -10619,7 +10620,6 @@ breakpoint_re_set_one (void *bint)
> case bp_longjmp_resume:
> case bp_exception:
> case bp_exception_resume:
> - case bp_jit_event:
> break;
> }
This part doesn't look quite right. In non-stop (breakpoint always-inserted)
mode, this looks it will create a race window where you delete the jit event
breakpoint whenever a random thread loads/unloads a DSO, meaning
you could miss a jit registration done by some other thread still running.
--
Pedro Alves