Bugs item #713169, was opened at 2003-04-01 07:35
Message generated for change (Comment added) made by mlorenzen
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=713169&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Build
Group: Python 2.4
Status: Open
Resolution: None
Priority: 5
Submitted By: Richard Townsend (rptownsend)
Assigned to: Neal Norwitz (nnorwitz)
Summary: test_pty fails on HP-UX and AIX when run after test_openpty

Initial Comment:
Here is the output from test_pty.py:

capulet:dist/src > ./python Lib/test/test_pty.py
Calling master_open()
Got master_fd '3', slave_name '/dev/pts/0'
Calling slave_open('/dev/pts/0')
Got slave_fd '4'
Traceback (most recent call last):
  File "Lib/test/test_pty.py", line 58, in ?
    test_basic_pty()
  File "Lib/test/test_pty.py", line 29, in 
test_basic_pty
    if not os.isatty(slave_fd):
  File "Lib/test/test_pty.py", line 50, in handle_sig
    raise TestFailed, "isatty hung"
test.test_support.TestFailed: isatty hung


This was running Python 2.3a2 (downloaded from 
CVS on Sunday 30th March) built on HP-UX11i.

----------------------------------------------------------------------

Comment By: Mark Lorenzen (mlorenzen)
Date: 2006-03-07 12:32

Message:
Logged In: YES 
user_id=1469902

I have the same problem with Python 2.4.2 running on AIX 5.2.

The test test_pty hangs for 10 seconds after which it is
aborted by a time-out condition. I have traced the system
calls and it turns out that the following scenario occurs:

1) os.write(slave_fd, TEST_STRING_2[:5])
2) os.write(slave_fd, TEST_STRING_2[5:])
3) s2 = os.read(master_fd, 1024)
[...]
4) os.close(slave_fd)

At 3) we only read the first part of the string written in
1) and not the complete string written in both 1) and 2).
The close() call then hangs in 4) (as it is waiting for
slave_fd to be flushed?).

The solution is to continue reading until a newline
character is read ie. readling a complete line. The patch is
shown below.

*** Lib/test/test_pty.py.orig   2004-02-12 7:35:11.000000000
+0000
--- Lib/test/test_pty.py        2006-03-07 2:05:39.000000000
+0000
***************
*** 40,47 ****
      debug("Writing chunked output")
      os.write(slave_fd, TEST_STRING_2[:5])
      os.write(slave_fd, TEST_STRING_2[5:])
!     s2 = os.read(master_fd, 1024)
!     sys.stdout.write(s2.replace("\r\n", "\n"))
  
      os.close(slave_fd)
      os.close(master_fd)
--- 40,49 ----
      debug("Writing chunked output")
      os.write(slave_fd, TEST_STRING_2[:5])
      os.write(slave_fd, TEST_STRING_2[5:])
!     s2 = "";
!     while not s2 or s2[-1] != "\n":
!         s2 = s2 + os.read(master_fd, 1024)
!     sys.stdout.write(s2.replace("\r\n", "\n"));
  
      os.close(slave_fd)
      os.close(master_fd)


----------------------------------------------------------------------

Comment By: Neal Norwitz (nnorwitz)
Date: 2006-02-20 19:05

Message:
Logged In: YES 
user_id=33168

Can you test with the patch in bug report: 
https://sourceforge.net/tracker/index.php?func=detail&aid=1433877&group_id=5470&atid=105470
?  I wonder if that fixes the problem.  Though I'm not sure
the same code is executed or not.

----------------------------------------------------------------------

Comment By: Michael Hoffman (hoffmanm)
Date: 2005-01-25 16:29

Message:
Logged In: YES 
user_id=987664

This happens with Python 2.4 on Tru64Unix V5.1 when
compiling using gcc-3.4.3, but not if you use the vendor cc.

----------------------------------------------------------------------

Comment By: Richard Townsend (rptownsend)
Date: 2004-07-12 08:30

Message:
Logged In: YES 
user_id=200117

This still happens with Python-2.4.0a1 on HP-UX11i


----------------------------------------------------------------------

Comment By: Mark D. Roth (mdr0)
Date: 2004-03-10 17:22

Message:
Logged In: YES 
user_id=994239

I'm running into this problem under both AIX 4.3.3 and 5.1.
 Is this going to cause a problem if I put python into
produciton, or is it "safe" to ignore it?

----------------------------------------------------------------------

Comment By: Neal Norwitz (nnorwitz)
Date: 2003-04-01 16:31

Message:
Logged In: YES 
user_id=33168

Actually, there is a 'fix' which is really a work-around the
problem.  You can disable os.openpty() in pty.master_open. 
I added a raise OSError at line 50 (before os.openpty()). 
This allows the test to pass.  I think Martin and I agreed
that globally disabling wasn't the best solution.  That
would probably be in some patch.

Also, just in case it isn't clear--if you run test_pty
BEFORE test_openpty, both tests pass.

----------------------------------------------------------------------

Comment By: Neal Norwitz (nnorwitz)
Date: 2003-04-01 16:02

Message:
Logged In: YES 
user_id=33168

I fixed the test hanging, but not the actual bug.  The bug
appears when running test_pty after test_openpty.  There's
some interaction, but I don't know what it is.  The problem
happens on AIX also.  I searched through some man pages, but
nothing leapt out at me.  I think I tried googling for the
answer to no avail. Any insight or ideas would be helpful. 
This may have started when adding /dev/ptmx (ptc for AIX)
support.

----------------------------------------------------------------------

Comment By: Michael Hudson (mwh)
Date: 2003-04-01 10:26

Message:
Logged In: YES 
user_id=6656

Neal?  I thought you thought this was fixed?

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=713169&group_id=5470
_______________________________________________
Python-bugs-list mailing list 
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to