Hello,
GDB (snapshot 20031230) segfaults on the following script (and on any
program being debugged: int main() {return 0;} is enough):
trace main
actions 1
<EOF here>
I have found out that typing EOF when editing tracepoint actions
causes gdb to segv. The segv is caused by dereferencing twice line
parameter (**line), when *line is NULL. I have added check for this
case to validate_actionline() in tracepoint.c, so it now ends actions
editing (just like you would have typed "end" instead of EOF).
Some details of my configuration:
- gdb versions: 6.0, 20031230 snapshot, both compiled with gcc 3.3.2
- uname -rmpo: 2.6.0 i686 AMD_Athlon(tm)_XP_1500+ PLD Linux
Changelog:
2004-01-02 Pawel Ostrowski <pasza@zodiac.mimuw.edu.pl>
* tracepoint.c (validate_actionline): Fix segv at EOF
And the patch:
*** gdb-6.0-orig/gdb/tracepoint.c Thu Jun 12 01:29:48 2003
--- gdb-6.0/gdb/tracepoint.c Fri Jan 2 02:11:58 2004
*************** validate_actionline (char **line, struct
*** 914,919 ****
--- 914,923 ----
struct cleanup *old_chain = NULL;
char *p;
+ /* if EOF is typed, *line is NULL */
+ if (*line == NULL)
+ return END;
+
for (p = *line; isspace ((int) *p);)
p++;
--
Pasza