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]

gdbserver with reversed arguments goes into an infinite loop


I've found that if you revert the argument of gdbserver, means writing the program's name before the COMM argument, it goes into an infinite loop, and as the CTRL+C does not work, you have to kill the process from an other shell.

In gdbserver/server.c, the loop in question does the remote_open on the wrong passed argument (argv[1]) which unfortunately is the binary file you'd expect to open so remote_open does not exit on error.

I think either we could check that we pass correct argument before using start_inferior(), this is executing before the loop. The bellow patch is in that sense.

Or we find a way to exit the loop by adding a test in it. May be by adding something in remote_open to let it fail.


I'd like your opinion about that Thanks -- Denis Pilat / STMicroelectronics

Index: server.c
===================================================================
--- server.c    (revision 544)
+++ server.c    (working copy)
@@ -408,6 +408,13 @@ main (int argc, char *argv[])

  if (pid == 0)
    {
+      if (access (argv[2], F_OK) != 0)
+      {
+        fprintf (stderr, "File %s does not exist.\n",argv[2]);
+        gdbserver_usage ();
+        exit (0);
+      }
+
      /* Wait till we are at first instruction in program.  */
      signal = start_inferior (&argv[2], &status);







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