Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Simon Marchi via Gdb-patches <gdb-patches@sourceware.org>
To: Philippe Blain <levraiphilippeblain@gmail.com>,
	gdb-patches@sourceware.org
Cc: Louis-He <1726110778@qq.com>,
	Dominique Quatravaux <dominique.quatravaux@epfl.ch>,
	Sam Warner <samuuel.r.warner@me.com>
Subject: Re: [RFC][PATCH v2 2/2][PR gdb/24069] [fix] Skip over WIFSTOPPED wait4 status
Date: Sat, 19 Feb 2022 10:59:58 -0500	[thread overview]
Message-ID: <d94fad6b-26fe-bdfd-1ef9-2bb31baedb17@polymtl.ca> (raw)
In-Reply-To: <20220216141540.96514-3-levraiphilippeblain@gmail.com>

> diff --git a/gdb/darwin-nat.c b/gdb/darwin-nat.c
> index 8b0ecfd5b77..a3c6a978676 100644
> --- a/gdb/darwin-nat.c
> +++ b/gdb/darwin-nat.c
> @@ -1063,7 +1063,7 @@ darwin_nat_target::decode_message (mach_msg_header_t *hdr,
>      }
>    else if (hdr->msgh_id == 0x48)
>      {
> -      /* MACH_NOTIFY_DEAD_NAME: notification for exit.  */
> +      /* MACH_NOTIFY_DEAD_NAME: notification for exit *or* WIFSTOPPED. */

Two spaces after period.

>        int res;
>  
>        res = darwin_decode_notify_message (hdr, &inf);
> @@ -1103,16 +1103,26 @@ darwin_nat_target::decode_message (mach_msg_header_t *hdr,
>  		  return minus_one_ptid;
>  		}
>  	      if (WIFEXITED (wstatus))
> -		status->set_exited (WEXITSTATUS (wstatus));
> +		{
> +		  status->set_exited (WEXITSTATUS (wstatus));
> +	          inferior_debug (4, _("darwin_wait: pid=%d exit, status=0x%x\n"),
> +				  res_pid, wstatus);
> +		}
> +	      else if (WIFSTOPPED (wstatus))
> +		{
> +		  status->set_ignore ();
> +		  inferior_debug (4, _("darwin_wait: pid %d received WIFSTOPPED\n"),
> +				  res_pid);
> +		  return minus_one_ptid;

Can you add a comment explaining that the stop will be handled by a
following exception?  It can be confusing why we ignore a WIFSTOPPED.  A
bit like you explained in your commit message:

 - Read and ignore such messages (counting on the next exception
 message to let us know of the inferior's new state again)



> +		}
>  	      else
>  		{
>  		  status->set_signalled
>  		    (gdb_signal_from_host (WTERMSIG (wstatus)));
> +		  inferior_debug (4, _("darwin_wait: pid=%d received signal %d\n"),
> +				  res_pid, status->sig());
>  		}

Can you replace the else with

  else if (WIFSIGNALED (wstatus))

and add an else with a warning like:

  warning (_("Unexpected wait status after MACH_NOTIFY_DEAD_NAME "
             "notification: 0x%x"), wstatus);

I think that having this warning would have made the bug you fix more
visible, so easier to find.  Perhaps it will help catch another similar
problem in the future.

The else should probably do status->set_ignore () and return
minus_one_ptid.

Simon

  reply	other threads:[~2022-02-19 16:00 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-08 19:14 [PATCH 1/3] [fix] Unused struct Dominique Quatravaux via Gdb-patches
2021-04-08 19:14 ` [PATCH 2/3] [delete] Not-so-harmless spurious call to `wait4` Dominique Quatravaux via Gdb-patches
2021-04-08 19:26   ` Simon Marchi via Gdb-patches
2021-04-08 20:25     ` [PATCH] was " Dominique Quatravaux via Gdb-patches
2021-04-09 14:34       ` Simon Marchi via Gdb-patches
2021-07-05  2:11         ` Simon Marchi via Gdb-patches
2021-04-08 19:14 ` [PATCH 3/3] [fix] Skip over WIFSTOPPED wait4 status Dominique Quatravaux via Gdb-patches
2021-04-08 19:54   ` Simon Marchi via Gdb-patches
2021-04-08 19:23 ` [PATCH 1/3] [fix] Unused struct Simon Marchi via Gdb-patches
2022-02-16 14:15 ` [RFC][PATCH v2 0/2][PR gdb/24069] Fix GDB hang on macOS 10.14 and later (PR gdb/24609) Philippe Blain via Gdb-patches
2022-02-16 14:15   ` [RFC][PATCH v2 1/2][PR gdb/24069] [delete] Not-so-harmless spurious call to `wait4` Philippe Blain via Gdb-patches
2022-02-19 15:47     ` Simon Marchi via Gdb-patches
2022-02-19 15:57       ` Philippe Blain via Gdb-patches
2022-02-19 16:02         ` Simon Marchi via Gdb-patches
2022-02-16 14:15   ` [RFC][PATCH v2 2/2][PR gdb/24069] [fix] Skip over WIFSTOPPED wait4 status Philippe Blain via Gdb-patches
2022-02-19 15:59     ` Simon Marchi via Gdb-patches [this message]
2022-02-19 17:49       ` Philippe Blain via Gdb-patches
2022-02-16 14:23   ` [RFC][PATCH v2 0/2][PR gdb/24069] Fix GDB hang on macOS 10.14 and later (PR gdb/24609) Philippe Blain via Gdb-patches
2022-02-24 14:23   ` [RFC][PATCH v3 0/1][PR gdb/24069] Fix GDB hang on macOS 10.14 and later Philippe Blain via Gdb-patches
2022-02-24 14:23     ` [RFC][PATCH v3 1/1][PR gdb/24069] gdb/darwin: skip over WIFSTOPPED wait4 status Philippe Blain via Gdb-patches
2022-02-24 15:49       ` Simon Marchi via Gdb-patches
2022-02-28 17:52         ` Philippe Blain via Gdb-patches
2022-02-28 18:34           ` Simon Marchi via Gdb-patches
2022-02-28 18:40             ` Philippe Blain via Gdb-patches

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d94fad6b-26fe-bdfd-1ef9-2bb31baedb17@polymtl.ca \
    --to=gdb-patches@sourceware.org \
    --cc=1726110778@qq.com \
    --cc=dominique.quatravaux@epfl.ch \
    --cc=levraiphilippeblain@gmail.com \
    --cc=samuuel.r.warner@me.com \
    --cc=simon.marchi@polymtl.ca \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox