Hi xiakaixu, > δΊ 2014/2/19 9:48, xiakaixu ει: >> Hi all, >> >> There is a bug found in my work when running "perf record". The basic >> information >> is here. As we know, perf record is a parent process and the programme >> traced is >> a child process when running "perf record". Sometimes the child process >> become >> zombie state and disappear until the parent process is killed. The bug stays >> in linux/ >> tools/perf/builtin-record.c. >> ********************************************************************* >> static int __cmd_record(struct perf_record *rec, int argc, const char **argv) >> ...... >> if (hits == rec->samples) { >> if (done) >> break; >> err = poll(evsel_list->pollfd, evsel_list->nr_fds, >> -1); >> waking++; >> } >> ...... >> ********************************************************************* >> The parent process still call the function >> poll(evsel_list->pollfd, evsel_list->nr_fds, -1) when the child process has >> exited >> already, which caused a zombie process. >> >> May I have your opinion ? >> Waiting for your reply!
Do you have a real bug report based on this? AFAIK perf record installed a signal handler for SIGCHLD so it'll set the 'done' variable when child exits and then break the loop. Thanks, Namhyung -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/