----- Original Message -----
----- Original Message -----
>
> On 9/27/2018 1:42 PM, Dave Anderson wrote:
> >
> >
> > ----- Original Message -----
> >> Currently, when using pipe in command line, we cannot specify
> >> a script with shebang directly like this:
> >>
> >> crash> foreach bt | ./analyze.awk
> >> crash: pipe operation failed
> >>
> >> (or it looks like crash can loop until Ctrl-C depending on timing)
> >>
> >> This is a bit confusing and inconvenient because it's not shell-like
> >> behavior.
> >>
> >> The cause is that output_command_to_pids() searches /proc/PID/stat
> >> files for "(path/to/script)" string and cannot find such
process,
> >> and also the ps kludge doesn't work well in this case. This patch
> >> removes the part except its file name like "(script)" so that it
can
> >> find the process.
> >
> > Just to clarify, is this is due to using "./analyze.awk" (with the
preceding "./"),
> > whereas if you were to use "analyze.awk", it would work OK?
>
> No, it doesn't because "sh -c analyze.awk" does not work.
> This behavior will not change with this patch, and I think
> it should not change.
>
> [before]
> crash> bt | awk -f analyze.awk
> analyzed
> crash> bt | ./analyze.awk
> crash: pipe operation failed
> crash> bt | analyze.awk
> sh: analyze.awk: command not found
> crash: pipe operation failed
>
> [after]
> crash> bt | awk -f analyze.awk
> analyzed
> crash> bt | ./analyze.awk
> analyzed
> crash> bt | analyze.awk
> sh: analyze.awk: command not found
> crash: pipe operation failed
>
> Thanks,
> Kazu
OK, it appears that if the output script (with #!) is specified beginning
with either "./" or "/" it would fail. (and works OK with the patch)
Kazu,
Your patch is queued for crash-7.2.5:
https://github.com/crash-utility/crash/commit/ac8738376facd2d6de91ed62d29...
Thanks,
Dave
> >>
> >> Signed-off-by: Kazuhito Hagio <k-hagio(a)ab.jp.nec.com>
> >> ---
> >> cmdline.c | 5 +++--
> >> 1 file changed, 3 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/cmdline.c b/cmdline.c
> >> index ee08f06..c0a9f4f 100644
> >> --- a/cmdline.c
> >> +++ b/cmdline.c
> >> @@ -806,7 +806,7 @@ output_command_to_pids(void)
> >> char buf1[BUFSIZE];
> >> char buf2[BUFSIZE];
> >> char lookfor[BUFSIZE+2];
> >> - char *pid, *name, *status, *p_pid, *pgrp;
> >> + char *pid, *name, *status, *p_pid, *pgrp, *comm;
> >> char *arglist[MAXARGS];
> >> int argc;
> >> FILE *pipe;
> >> @@ -815,7 +815,8 @@ output_command_to_pids(void)
> >> retries = 0;
> >> shell_has_exited = FALSE;
> >> pc->pipe_pid = pc->pipe_shell_pid = 0;
> >> - sprintf(lookfor, "(%s)", pc->pipe_command);
> >> + comm = strrchr(pc->pipe_command, '/');
> >> + sprintf(lookfor, "(%s)", comm ? ++comm : pc->pipe_command);
> >> stall(1000);
> >> retry:
> >> if (is_directory("/proc") && (dirp =
opendir("/proc"))) {
> >> --
> >> 1.8.3.1
> >>
> >> --
> >> Crash-utility mailing list
> >> Crash-utility(a)redhat.com
> >>
https://www.redhat.com/mailman/listinfo/crash-utility
> >>
> >
> > --
> > Crash-utility mailing list
> > Crash-utility(a)redhat.com
> >
https://www.redhat.com/mailman/listinfo/crash-utility
> >
>
> --
> Crash-utility mailing list
> Crash-utility(a)redhat.com
>
https://www.redhat.com/mailman/listinfo/crash-utility
>
--
Crash-utility mailing list
Crash-utility(a)redhat.com
https://www.redhat.com/mailman/listinfo/crash-utility