This is the mail archive of the gdb-patches@sources.redhat.com 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: [PATCH] interpreter_exec_cmd (interps.c)


Nick Roberts wrote:
GDB hangs if it receives the previously legitimate command
server interpreter mi "-var-update *"


GNU gdb 6.3.50.20050125-cvs Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i586-pc-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1".

(gdb) server interpreter mi "-var-update *"
^done,changelist=[]
(gdb) error in command: "-var-update *".



The patch below seems to fix it. I don't know what values reason takes as
struct exception in exception.h has no commented description, so this patch is
a bit of a guess and may not be the right fix. The bug is real, however.
There seems to be a further bug, in that once GDB has reached the line in
interps.c,


error ("error in command: \"%s\".", prules[i]),

,presumably it shouldn't hang.

Hmm, another example is:


(gdb) interpreter console help foo

Can you create a new minimal test "gdb.base/interpreter.exp" to sanity check one of the above (and add anything else that takes your fancy :-)

Be sure to check that the test actually fails without the test (and don't forget to mention the system it was tested on). Consider that pre-approved.



*** /home/nick/src/gdb/interps.c.~1.10.~	2005-01-16 15:46:17.000000000 +1300
--- /home/nick/src/gdb/interps.c	2005-01-25 22:47:42.000000000 +1300
***************
*** 399,405 ****
    for (i = 1; i < nrules; i++)
      {
        struct exception e = interp_exec (interp_to_use, prules[i]);
!       if (!e.reason)

Oops! e.reason < 0 indicates an error (the [very old] description of enum return_reason hints at this). With that tweak, and the testsuite, this is approved.


good catch,
Andrew


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