Messages in this thread | | | From | Namhyung Kim <> | Subject | Re: [PATCH v6 1/2] perf record: Propagate exit status of a command line workload | Date | Mon, 12 May 2014 09:05:45 +0900 |
| |
Hi Jiri,
On Sun, 11 May 2014 15:30:18 +0200, Jiri Olsa wrote: > On Fri, May 09, 2014 at 02:14:17PM +0900, Namhyung Kim wrote: >> Currently perf record doesn't propagate the exit status of a workload >> given by the command line. But sometimes it'd useful if it's >> propagated so that a monitoring script can handle errors >> appropriately. >> >> To do that, it got rid of exit handlers and run/call them directly in >> the __cmd_record(). I don't see any reason why those are in a form of >> exit handlers in the first place. Also it cleaned up the resource >> management code in record__exit(). > > so in this last change we keep one exit handler, please update > the changelog
Okay.
> >> >> With this change, perf record returns the child exit status in case of >> normal termination and send signal to itself when terminated by signal. >> > > SNIP > >> >> out_delete_session: >> perf_session__delete(session); >> - return err; >> + return status; > > we dont set status correctly before the 'goto out_delete_session' > in the following condition: > > err = perf_evlist__prepare_workload(rec->evlist, &opts->target, > argv, file->is_pipe, > workload_exec_failed_signal); > if (err < 0) { > pr_err("Couldn't run the workload!\n"); > goto out_delete_session; > } > > so we dont propagate status correctly in case the above function fails: > > [jolsa@krava perf]$ ulimit -n 6 > [jolsa@krava perf]$ ./perf record sleep 100 > failed to create 'go' pipe: Too many open files > Couldn't run the workload! > [jolsa@krava perf]$ echo $? > 0 > [jolsa@krava perf]$
Right. I'll send v7!
Thanks, Namhyung
| |