diff --git a/coregrind/m_syswrap/syswrap-darwin.c b/coregrind/m_syswrap/syswrap-darwin.c index 76ad8674d..02fca387b 100644 --- a/coregrind/m_syswrap/syswrap-darwin.c +++ b/coregrind/m_syswrap/syswrap-darwin.c @@ -2749,7 +2749,13 @@ PRE(posix_spawn) } // Decide whether or not we want to follow along - trace_this_child = VG_(should_we_trace_this_child)( (HChar*)ARG2 ); + { // Make 'child_argv' be a pointer to the child's arg vector + // (skipping the exe name) + HChar** child_argv = (HChar**)ARG4; + if (child_argv && child_argv[0] == NULL) + child_argv = NULL; + trace_this_child = VG_(should_we_trace_this_child)( (HChar*)ARG2, child_argv ); + } // Do the important checks: it is a file, is executable, permissions are // ok, etc. We allow setuid executables to run only in the case when