Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(161)

Unified Diff: gdb/ser-pipe.c

Issue 11969036: Merge GDB 7.5.1 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@master
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gdb/ser-mingw.c ('k') | gdb/serial.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gdb/ser-pipe.c
diff --git a/gdb/ser-pipe.c b/gdb/ser-pipe.c
index 4616a7e9abc889f432c71e145adbc7884e61f9ff..4f20cad52738b2f4bc6b9daa5435c1dc52ca4b94 100644
--- a/gdb/ser-pipe.c
+++ b/gdb/ser-pipe.c
@@ -30,7 +30,6 @@
#include <sys/time.h>
#include <fcntl.h>
#include "gdb_string.h"
-#include "gdb_wait.h"
#include <signal.h>
@@ -162,14 +161,30 @@ pipe_close (struct serial *scb)
if (state != NULL)
{
- int status;
- kill (state->pid, SIGTERM);
-#ifdef HAVE_WAITPID
+ int wait_result, status;
+
+ /* Don't kill the task right away, give it a chance to shut down cleanly.
+ But don't wait forever though. */
+#define PIPE_CLOSE_TIMEOUT 5
+
/* Assume the program will exit after SIGTERM. Might be
useful to print any remaining stderr output from
scb->error_fd while waiting. */
- waitpid (state->pid, &status, 0);
+#define SIGTERM_TIMEOUT INT_MAX
+
+ wait_result = -1;
+#ifdef HAVE_WAITPID
+ wait_result = wait_to_die_with_timeout (state->pid, &status,
+ PIPE_CLOSE_TIMEOUT);
#endif
+ if (wait_result == -1)
+ {
+ kill (state->pid, SIGTERM);
+#ifdef HAVE_WAITPID
+ wait_to_die_with_timeout (state->pid, &status, SIGTERM_TIMEOUT);
+#endif
+ }
+
if (scb->error_fd != -1)
close (scb->error_fd);
scb->error_fd = -1;
« no previous file with comments | « gdb/ser-mingw.c ('k') | gdb/serial.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698