Alan Curry wrote: > =?ISO-8859-1?Q?P=E1draig_Brady?= writes: >> Note my gdb --version is 6.8.50.20090302-39.fc11 > > So there's probably a bug in my 6.8-debian that is fixed in that version. > > To follow up on that theory, I compiled gdb 7.0 and tried again. It passes. I > believe the difference is this change from 2008-07-10 (after the 6.8 release, > but before your 20090302 snapshot): > > (linux_nat_kill): Stop lwps before killing them. > > The ptrace man page says "For requests other than PTRACE_KILL, the child > process must be stopped." When I strace gdb 6.8, I see it using PTRACE_KILL > yet the child process doesn't die. gdb 7.0 does the same thing but inserts a > tkill(SIGSTOP) first and it works. Maybe a kernel change slipped past the > man page maintainer.
Thanks for that info. > Possible solutions: > > timeout -sKILL (as seen already, leaves a lingering tail process) I don't like that > skip the test if gdb version < 7.0 (except known-patched distro versions?) Perhaps, but that's hacky. Maybe also relegate the test to "expensive" or something less likely to break builds for people. > teach timeout to do a whole process tree instead of just a pgrp I'd need to look into how useful/portable that would be, and I've absolutely no time for anything at present. > Over the course of various experiments, I found another flaw in this test: > tail_forever_inotify can be inlined, and then gdb can't break on it. In that case the test is skipped. cheers, Pádraig.