1. 04 Jul, 2003 3 commits
    • Jack Jansen's avatar
      078afc86
    • Jack Jansen's avatar
      If a --python option is used to specify the Python to use in the #! · bbaa0837
      Jack Jansen authored
      line also use this as the executable in the bundle.
      bbaa0837
    • Tim Peters's avatar
      An Anonymous Coward on c.l.py posted a little program with bizarre · 2e7e7df9
      Tim Peters authored
      behavior, creating many threads very quickly.  A long debugging session
      revealed that the Windows implementation of PyThread_start_new_thread()
      was choked with "laziness" errors:
      
      1. It checked MS _beginthread() for a failure return, but when that
         happened it returned heap trash as the function result, instead of
         an id of -1 (the proper error-return value).
      
      2. It didn't consider that the Win32 CreateSemaphore() can fail.
      
      3. When creating a great many threads very quickly, it's quite possible
         that any particular bootstrap call can take virtually any amount of
         time to return.  But the code waited for a maximum of 5 seconds, and
         didn't check to see whether the semaphore it was waiting for got
         signaled.  If it in fact timed out, the function could again return
         heap trash as the function result.  This is actually what confused
         the test program, as the heap trash usually turned out to be 0, and
         then multiple threads all got id 0 simultaneously, confusing the
         hell out of threading.py's _active dict (mapping id to thread
         object).  A variety of baffling behaviors followed from that.
      
      WRT #1 and #2, error returns are checked now, and "thread.error: can't
      start new thread" gets raised now if a new thread (or new semaphore)
      can't be created.  WRT #3, we now wait for the semaphore without a
      timeout.
      
      Also removed useless local vrbls, folded long lines, and changed callobj
      to a stack auto (it was going thru malloc/free instead, for no discernible
      reason).
      
      Bugfix candidate.
      2e7e7df9
  2. 03 Jul, 2003 2 commits
  3. 02 Jul, 2003 20 commits
  4. 01 Jul, 2003 15 commits