classification
Title: Use STAF call python script will case 1124861 issue in 2.7.2 version
Type: behavior Stage: resolved
Components: Versions: Python 2.7
process
Status: closed Resolution: out of date
Dependencies: Superseder:
Assigned To: Nosy List: astrand, gwtking, terry.reedy
Priority: normal Keywords:

Created on 2013-03-04 13:09 by gwtking, last changed 2013-07-31 19:03 by terry.reedy. This issue is now closed.

Messages (3)
msg183444 - (view) Author: Tomgu (gwtking) Date: 2013-03-04 13:09
Here I get one problem use STAF call python and need help. 
In python 2.7.2 version I write a script "test.py" as below
###
import subprocess
fileID=file('test1.log','w')
process_response = subprocess.call('netsh wlan show\ interface',stdout=fileID,shell=True)
fileID.flush()
fileID.close()
###
It run in windows7 os MSDOS console is OK
and I try to run it in STAF command

C:\> STAF local PROCESS START COMMAND python C:\>test.py WAIT STDERRTOSTDOUT RETURNSTDOUT

Response
--------
{
  Return Code: 1
  Key        : <None>
  Files      : [
    {
      Return Code: 0
      Data       : Traceback (most recent call last):
  File "C:\test.py", line 3, in <module>
    process_response = subprocess.call('netsh wlan show interface',stdout=fileID
,shell=True)
  File "C:\Python27\lib\subprocess.py", line 493, in call
    return Popen(*popenargs, **kwargs).wait()
  File "C:\Python27\lib\subprocess.py", line 672, in __init__
    errread, errwrite) = self._get_handles(stdin, stdout, stderr)
  File "C:\Python27\lib\subprocess.py", line 784, in _get_handles
    p2cread = self._make_inheritable(p2cread)
  File "C:\Python27\lib\subprocess.py", line 823, in _make_inheritable
    _subprocess.DUPLICATE_SAME_ACCESS)
WindowsError: [Error 6] The handle is invalid

    }
  ]

Like known issue 1124861. I just start to learn python, I dont know how to resolve, need help.
msg183784 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2013-03-09 03:08
(Peter, the OP claims this issue is similar to a subprocess issue you fixed. I hope you can comment.)

Nearly identical versions of your example run from IDLE on both 2.7.3 and 3.3.0.

Please rerun on 2.7.3 to make sure you have the problem with current Python. And if you do, try again when 2.7.4 comes out (date uncertain).

I have no idea what STAF is, but we on this tracker are not responsible for 3rd party environments. It looks like STAF manipulates i/o streams# in a way that subprocess cannot handle*. The error has nothing to do with the particular command you tried to run. I suggest you present your problem to the STAF people. We can only handles identified problems within our code and we need a reproducible example that runs independent of such 3rd party environments. Without that, we will have to close this.

# IDLE also manipulates the i/o streams and it has had i/o replacement stream bugs that we only fixed within the last 6 months.

* For instance, I tried to run subprocess with stdout= <StringIO object>, to avoid writing to disk, but that failed, also within _get_handles(stdin, stdout, stderr), because StringIO objects do not have a fileno attribute.

An error traceback is a graceful shutdown. A crash is an exit with no traceback and, on Windows, a popup or worse, a 'blue screen of death' and a reboot. (If you have never seen the latter, good for you and your system ;-).
msg194008 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2013-07-31 19:03
In in absence of the information needed to consider this a current Python bug, I am closing it as either out-of-date (already fixed) or invalid (a third-party problem).
History
Date User Action Args
2013-07-31 19:03:36terry.reedysetstatus: open -> closed
resolution: out of date
messages: + msg194008

stage: test needed -> resolved
2013-03-09 03:08:47terry.reedysetnosy: + terry.reedy, astrand
messages: + msg183784

type: crash -> behavior
stage: test needed
2013-03-04 13:09:24gwtkingcreate