diff options
-rw-r--r-- | tools/perf/builtin-record.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index ab333812ace6..9f98b86e747c 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c | |||
@@ -497,13 +497,22 @@ static int __cmd_record(int argc, const char **argv) | |||
497 | if (target_pid == -1 && argc) { | 497 | if (target_pid == -1 && argc) { |
498 | pid = fork(); | 498 | pid = fork(); |
499 | if (pid < 0) | 499 | if (pid < 0) |
500 | perror("failed to fork"); | 500 | die("failed to fork"); |
501 | 501 | ||
502 | if (!pid) { | 502 | if (!pid) { |
503 | if (execvp(argv[0], (char **)argv)) { | 503 | if (execvp(argv[0], (char **)argv)) { |
504 | perror(argv[0]); | 504 | perror(argv[0]); |
505 | exit(-1); | 505 | exit(-1); |
506 | } | 506 | } |
507 | } else { | ||
508 | /* | ||
509 | * Wait a bit for the execv'ed child to appear | ||
510 | * and be updated in /proc | ||
511 | * FIXME: Do you know a less heuristical solution? | ||
512 | */ | ||
513 | usleep(1000); | ||
514 | event__synthesize_thread(pid, | ||
515 | process_synthesized_event); | ||
507 | } | 516 | } |
508 | 517 | ||
509 | child_pid = pid; | 518 | child_pid = pid; |