2012-01-23 Pedro Alves <palves@redhat.com>

* server.c (main): Avoid yet another case of infinite loop while
	detaching/killing after a longjmp.
This commit is contained in:
Pedro Alves 2012-01-23 16:40:26 +00:00
parent 77a35dd897
commit 01b1789443
2 changed files with 23 additions and 9 deletions

View File

@ -1,3 +1,8 @@
2012-01-23 Pedro Alves <palves@redhat.com>
* server.c (main): Avoid yet another case of infinite loop while
detaching/killing after a longjmp.
2012-01-20 Jan Kratochvil <jan.kratochvil@redhat.com>
Code cleanup.

View File

@ -2727,13 +2727,10 @@ main (int argc, char *argv[])
inferiors, we'd end up here again, stuck in an infinite loop
trap. Be sure that if that happens, we exit immediately
instead. */
if (setjmp (toplevel))
{
fprintf (stderr, "Detach or kill failed. Exiting\n");
exit (1);
}
detach_or_kill_for_exit ();
if (setjmp (toplevel) == 0)
detach_or_kill_for_exit ();
else
fprintf (stderr, "Detach or kill failed. Exiting\n");
exit (1);
}
@ -2779,8 +2776,20 @@ main (int argc, char *argv[])
if (exit_requested || run_once)
{
detach_or_kill_for_exit ();
exit (0);
/* If something fails and longjmps while detaching or
killing inferiors, we'd end up here again, stuck in an
infinite loop trap. Be sure that if that happens, we
exit immediately instead. */
if (setjmp (toplevel) == 0)
{
detach_or_kill_for_exit ();
exit (0);
}
else
{
fprintf (stderr, "Detach or kill failed. Exiting\n");
exit (1);
}
}
fprintf (stderr,