[Python-bugs-list] [Bug #110675] Pth: test_fork1 fails, test_thread slow (PR#383)

noreply@sourceforge.net noreply@sourceforge.net
Fri, 1 Sep 2000 14:15:27 -0700


Bug #110675, was updated on 2000-Jul-31 14:13
Here is a current snapshot of the bug.

Project: Python
Category: Core
Status: Open
Resolution: None
Bug Group: 3rd Party
Priority: 1
Summary: Pth: test_fork1 fails, test_thread slow (PR#383)

Details: Jitterbug-Id: 383
Submitted-By: gregor@hoffleit.de
Date: Tue,  4 Jul 2000 12:07:06 -0400 (EDT)
Version: CVS version (06/04/00)
OS: Debian potato (i386)


When I use the current CVS version of Python to build on a Debian potato
system with GNU Pth 1.2.3 installed, test_fork1 fails with an error (see
below),
and test_thread takes significantly longer to complete than when I build the 
same sources with native LinuxThreads.


When running test.regrtest.main(), this happens:

  clapton:3> LD_LIBRARY_PATH=`pwd` ./python 
  Python 2.0b1 (#0, Jul  4 2000, 17:06:15)  [GCC 2.95.2 20000220 (Debian
GNU/Linux)] on linux2
  Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
  Copyright 1995-2000 Corporation for National Research Initiatives (CNRI)
  >>> from test import regrtest
  >>> regrtest.main()
  test_grammar
  test_opcodes
...
  test_extcall
  test_fcntl
  test_fork1
  test test_fork1 crashed -- exceptions.AssertionError : 
  Unhandled exception in thread:
  Traceback (most recent call last):
    File "./Lib/test/test_fork1.py", line 30, in f
      alive[id] = os.getpid()
  AttributeError: 'None' object has no attribute 'getpid'
  Unhandled exception in thread:
  Traceback (most recent call last):
    File "./Lib/test/test_fork1.py", line 32, in f    time.sleep(SHORTSLEEP)
  TypeError: illegal argument type for built-in operation
  Unhandled exception in thread:
  Traceback (most recent call last):
    File "./Lib/test/test_fork1.py", line 30, in f
      alive[id] = os.getpid()
  AttributeError: 'None' object has no attribute 'getpid'
  Unhandled exception in thread:
  Traceback (most recent call last):
    File "./Lib/test/test_fork1.py", line 30, in f
      alive[id] = os.getpid()
  AttributeError: 'None' object has no attribute 'getpid'
  test_format
  test_gc
...


When running test.test_fork1(), I get this:

  clapton:3> LD_LIBRARY_PATH=`pwd` ./python 
  Python 2.0b1 (#0, Jul  4 2000, 17:06:15)  [GCC 2.95.2 20000220 (Debian
GNU/Linux)] on linux2
  Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
  Copyright 1995-2000 Corporation for National Research Initiatives (CNRI)
  >>> from test import test_fork1
  Traceback (most recent call last):
    File "<stdin>", line 1, in ?
    File "./Lib/test/test_fork1.py", line 68, in ?
      main()
    File "./Lib/test/test_fork1.py", line 44, in main
      assert a == range(NUM_THREADS)
  AssertionError
  >>>


test_thread takes very long to complete (5 min compared to 40 sec with 
LinuxThreads); when you look at the following log, you'll see that it tends
to calls the threads serially !?

clapton:3> LD_LIBRARY_PATH=`pwd` ./python 
Python 2.0b1 (#0, Jul  4 2000, 17:06:15)  [GCC 2.95.2 20000220 (Debian
GNU/Linux)] on linux2
Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
Copyright 1995-2000 Corporation for National Research Initiatives (CNRI)
>>> from test import test_thread
creating task 1
creating task 2
creating task 3
task 1 will run for 2.1 sec
task 1 done
creating task 4
task 2 will run for 3.2 sec
creating task 5
task 2 done
creating task task 3 will run for 9.1 6
sec
task 3 done
creating task 7
task 4 will run for 2.5 sec
task 4 done
creating task 8
task 5 will run for 0.9 sec
task 5 done
creating task 9
task 6 will run for 7.4 sec
task 6 done
creating task 10
waiting for all tasks to complete
task 7 will run for 5.3 sec
task 7 done
task 8 will run for 2.6 sec
task 8 done
task 9 will run for 2.7 sec
task 9 done
task 10 will run for 0.9 sec
task 10 done
all tasks done

*** Barrier Test ***
task 0 will run for 0.0 sec
task 0 entering barrier 0
task 1 will run for 6.2 sec
task 1 entering barrier 0
task 7 will run for 7.0 sec
task 7 entering barrier 0
task 3 will run for 5.9 sec
task 3 entering barrier 0
task 4 will run for 4.5 sec
task 4 entering barrier 0
task 5 will run for 9.2 sec
task 5 entering barrier 0
task 6 will run for 1.4 sec
task 6 entering barrier 0
task 2 will run for 6.0 sec
task 2 entering barrier 0
task 8 will run for 2.4 sec
task 8 entering barrier 0
task 9 will run for 9.6 sec
task 9 entering barrier 0
task 9 leaving barrier 0
task 0 leaving barrier 0
task task 1 leaving barrier 0
0 will run for 0.0 sec
task 0 entering barrier 1
task 7 leaving barrier 0
task 9 will run for 0.8 sec
task 9 entering barrier task 3 leaving barrier 0
1
task 1 task 4 leaving barrier 0
will run for 6.1 sec
task 5 leaving barrier 0
task 1 entering barrier 1
task 6 leaving barrier 0
task 7 will run for 7.9 sec
task 2 leaving barrier 0
task 7 entering barrier 1
task 3 task 8 leaving barrier 0
will run for 7.8 sec
task 3 entering barrier 1
task 4 will run for 5.7 sec
task 4 entering barrier 1
task 5 will run for 2.0 sec
task 5 entering barrier 1
task 6 will run for 0.5 sec
task 6 entering barrier 1
task 2 will run for 7.4 sec
task 2 entering barrier 1
task 8 will run for 1.0 sec
task 8 entering barrier 1
task 8 leaving barrier 1
task 7 leaving barrier 1
task 9 leaving barrier 1
task 1 leaving barrier 1
task 8 will run for 6.9 sec
task 0 leaving barrier 1
task 8 entering barrier 2
task 0 will run for task 4 leaving barrier 1 0.0 sec

task 7 will run for 4.3 sec task 0 entering barrier
2
task 3 leaving barrier 1
task 7 entering barrier 2
task 5 leaving barrier 1
task 6 leaving barrier 1 task 9 will run for
8.2 sec
task task 2 leaving barrier 9 entering barrier 2
1
task 5 will run for 8.9 sec
task 5 entering barrier 2
task 2 will run for 8.3 sec
task 2 entering barrier 2
task 3 will run for 4.5 sec
task 3 entering barrier 2
task 1 will run for 7.0 sec
task 1 entering barrier 2
task 6 will run for 1.9 sec
task 6 entering barrier 2
task 4 will run for 0.2 sec
task 4 entering barrier 2
task 4 leaving barrier 2
task 8 leaving barrier 2
task 9 leaving barrier 2
task 7 leaving barrier 2
task 5 leaving barrier 2
task 0 leaving barrier 2
task 2 leaving barrier 2
task 3 leaving barrier 2
task 1 leaving barrier 2
task 6 leaving barrier 2
all tasks done



while this is the log of the same test with Python 1.5.2 and LinuxThreads:

clapton:3> python
Python 1.5.2 (#0, Apr  3 2000, 14:46:48)  [GCC 2.95.2 20000313 (Debian
GNU/Linux)] on linux2
Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
>>> from test import test_thread
creating task 1
creating task 2
creating task 3
creating task 4
creating task 5
creating task 6
creating task 7
creating task 8
creating task 9
creating task 10
waiting for all tasks to complete
task 1 will run for 8.9 sec
task 2 will run for 8.3 sec
task 3 will run for 9.1 sec
task 5 will run for 6.0 sec
task 4 will run for 7.5 sec
task 6 will run for 4.7 sec
task 7 will run for 4.2 sec
task 8 will run for 7.0 sec
task 9 will run for 8.7 sec
task 10 will run for 9.5 sec
task 7 done
task 6 done
task 5 done
task 8 done
task 4 done
task 2 done
task 9 done
task 1 done
task 3 done
task 10 done
all tasks done

*** Barrier Test ***
task 0 will run for 0.0 sec
task 1 will run for 2.8 sec
task 0 entering barrier 0
task 2 will run for 5.3 sec
task 3 will run for 9.2 sec
task 5 will run for 8.0 sec
task 4 will run for 8.9 sec
task 6 will run for 5.0 sec
task 7 will run for 1.3 sec
task 8 will run for 5.6 sec
task 9 will run for 4.7 sec
task 7 entering barrier 0
task 1 entering barrier 0
task 9 entering barrier 0
task 6 entering barrier 0
task 2 entering barrier 0
task 8 entering barrier 0
task 5 entering barrier 0
task 4 entering barrier 0
task 3 entering barrier 0
task 3 leaving barrier 0
task 3 will run for 0.1 sec
task 0 leaving barrier 0
task 0 will run for 0.0 sec
task 7 leaving barrier 0
task 7 will run for 6.6 sec
task 1 leaving barrier 0
task 1 will run for 1.0 sec
task 9 leaving barrier 0
task 9 will run for 8.2 sec
task 6 leaving barrier 0
task 6 will run for 1.0 sec
task 2 leaving barrier 0
task 2 will run for 9.2 sec
task 8 leaving barrier 0
task 8 will run for 4.4 sec
task 5 leaving barrier 0
task 5 will run for 9.6 sec
task 4 leaving barrier 0
task 4 will run for 1.7 sec
task 0 entering barrier 1
task 3 entering barrier 1
task 1 entering barrier 1
task 6 entering barrier 1
task 4 entering barrier 1
task 8 entering barrier 1
task 7 entering barrier 1
task 9 entering barrier 1
task 2 entering barrier 1
task 5 entering barrier 1
task 5 leaving barrier 1
task 5 will run for 6.6 sec
task 0 leaving barrier 1
task 0 will run for 0.0 sec
task 3 leaving barrier 1
task 3 will run for 8.5 sec
task 1 leaving barrier 1
task 1 will run for 0.1 sec
task 6 leaving barrier 1
task 6 will run for 4.7 sec
task 4 leaving barrier 1
task 4 will run for 4.7 sec
task 8 leaving barrier 1
task 8 will run for 1.7 sec
task 7 leaving barrier 1
task 7 will run for 1.8 sec
task 9 leaving barrier 1
task 9 will run for 2.8 sec
task 2 leaving barrier 1
task 2 will run for 3.3 sec
task 0 entering barrier 2
task 1 entering barrier 2
task 8 entering barrier 2
task 7 entering barrier 2
task 9 entering barrier 2
task 2 entering barrier 2
task 6 entering barrier 2
task 4 entering barrier 2
task 5 entering barrier 2
task 3 entering barrier 2
task 3 leaving barrier 2
task 0 leaving barrier 2
task 1 leaving barrier 2
task 8 leaving barrier 2
task 7 leaving barrier 2
task 9 leaving barrier 2
task 2 leaving barrier 2
task 6 leaving barrier 2
task 4 leaving barrier 2
task 5 leaving barrier 2
all tasks done
>>> 





====================================================================
Audit trail:
Tue Jul 11 08:24:22 2000	guido	moved from incoming to open

Follow-Ups:

Date: 2000-Aug-23 10:31
By: jhylton

Comment:
Another report of test_fork1 problems.  Plan to resolve before 2.0b1.

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

Date: 2000-Aug-23 10:36
By: tim_one

Comment:
Jeremy, my chances of helping someone with a problem specific to "Debian potato system with GNU Pth 1.2.3" are nil.  Assigned back to you since you seem to believe it's feasible <wink>.
-------------------------------------------------------

Date: 2000-Aug-31 14:53
By: jhylton

Comment:
Haven't heard back from the submittor.  This sounds like a problem with a buggy GNU Pth package; not a Python bug.

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

Date: 2000-Sep-01 14:15
By: none

Comment:
I submitted the original pth support. pth has what I would consider a bug in that signals do not interrupt sleep(), usleep(), or select(), the latter being what Python uses to sleep. I'm going to look at this some more myself as soon as I can get the current CVS to configure with pth. -- andy@dustman.net
-------------------------------------------------------

For detailed info, follow this link:
http://sourceforge.net/bugs/?func=detailbug&bug_id=110675&group_id=5470