Skip to content

Adding "shell=true" to run invocation does not work nicely with strace runner #47

@GoogleCodeExporter

Description

@GoogleCodeExporter
The idea of the "shell=true" argument is that the entire command line is 
invoked via the shell. However, when StraceRunner is used, the independent 
command-line arguments are merely appended to the strace line, converted to a 
command-line. This means that a command like "touch foo.txt; touch bar.txt" 
will result in strace invocation "strace -fo /tmp/tmp6VNsRF -e 
trace=open,stat,stat64,lstat,lstat64,execve,exit_group,chdir,mkdir,rename,clone,
vfork,fork,symlink,creat touch foo.txt ; touch other.txt", which will mean that 
"bar.txt" does not get marked as an output of the command: "touch foo.txt ; 
touch bar.txt": { "foo.txt": "output-d41d8cd98f00b204e9800998ecf8427e" }

The real fix is to instead translate such a line to "strace -fo /tmp/tmp6VNsRF 
-e 
trace=open,stat,stat64,lstat,lstat64,execve,exit_group,chdir,mkdir,rename,clone,
vfork,fork,symlink,creat /bin/sh -c 'touch foo.txt ; touch other.txt'", and not 
pass the shell=True to the underlying subprocess.Popen.

Original issue reported on code.google.com by nuutti.k...@gmail.com on 9 Jul 2013 at 11:58

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions