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: [RFA] Fix crash in "run" on macOS when gdb is not signed


On 06/28/2018 07:02 PM, Tom Tromey wrote:
> On macOS, when gdb is not code-signed, it will throw an exception from
> darwin_attach_pid.  However, gdb also then crashes:
> 
> thread.c:93: internal-error: struct thread_info *inferior_thread(): Assertion `tp' failed.
> 
> I think the problem here is that darwin_attach_pid does not clean up
> inferior_ptid and inf->pid on failure.  This leads to a situation
> where gdb tries to find a thread, but cannot.
> 
> In other cases, gdb would mourn the inferior at this point; but here
> this is not possible because the target has not been pushed.  Instead
> this patch works by simply updating the inferior and inferior_ptid on
> failure.
> 
> Tested by building an unsigned gdb on macOS and trying to run an
> inferior.

I'd try also with "attach", see if something else needs
cleaning up / unwinding.



> diff --git a/gdb/darwin-nat.c b/gdb/darwin-nat.c
> index 7dccce73926..6fb108846d0 100644
> --- a/gdb/darwin-nat.c
> +++ b/gdb/darwin-nat.c
> @@ -1583,77 +1583,92 @@ darwin_attach_pid (struct inferior *inf)
>    darwin_inferior *priv = new darwin_inferior;
>    inf->priv.reset (priv);
>  
> -  kret = task_for_pid (gdb_task, inf->pid, &priv->task);
> -  if (kret != KERN_SUCCESS)
> +  TRY
>      {

[snip reindent]

> +    }
> +  CATCH (ex, RETURN_MASK_ALL)
> +    {
> +      inf->pid = 0;

If you try this with MI as is, I think gdb will output a
-thread-group-started notification, and then an ^error.
You may want to call exit_inferior instead so that
gdb outputs a matching -thread-group-exited.

Otherwise looks fine to me.

Thanks,
Pedro Alves


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