| THIS LIST DOES NOT CLAIM COMPLETENESS. | 
 |  | 
 | ==> Status indicators: (-) not fixed; (*) fixed; (?) not sure. | 
 |  | 
 | ====================================================================== | 
 |  | 
 | Problems that are difficult to solve | 
 | ------------------------------------ | 
 |  | 
 | (-) "f()=0" generates syntax error msg without line number | 
 |  | 
 | (-) tkinter seems to leave an exception around sometime which breaks | 
 | unmarshalling code objects [hard to reproduce, have added a trap to | 
 | marshal.c to catch it] | 
 |  | 
 | (-) destroying all modules may destroy __builtin__ (or other modules) | 
 | while destructors of other modules may still need it [hard to fix -- | 
 | could maintain a list of all modules in order of importation so we can | 
 | destroy them in reverse order???  really hopeless -- would have to | 
 | destroy objects in a module in reverse order too...] | 
 |  | 
 | (-) doneimport() should be called *before* the Py_AtExit code is | 
 | called [problem: what if other threads are still active?] | 
 |  | 
 | Known portability problems | 
 | -------------------------- | 
 |  | 
 | (-) arraymodule doesn't compile under Ultrix (FPROTO macro) | 
 |  | 
 | (-) makesetup assumes CCC is the C++ compiler -- not portable | 
 |  | 
 | (-) "make depend" assumes mkdep exists -- not portable | 
 |  | 
 | (-) regen calls h2py which isn't defined by default | 
 |  | 
 | (-) HP doesn't compile out of the box (needs LIBS=-ldld or | 
 | LIBS=/usr/lib/libdld.sl) [hard to test without a HP machine handy] | 
 |  | 
 | ====================================================================== | 
 | BUGS present in 1.1.1 and fixed in 1.2 | 
 | -------------------------------------- | 
 |  | 
 | (*) extraneous fclose() in run_script() in pythonrun.c for .pyc file | 
 |  | 
 | (*) __str__ is called if it exists (and then fails) when applying | 
 | str() to a class | 
 |  | 
 | (*) mem leaks in inittime() in timemodule.c | 
 |  | 
 | (*) mem leak in optimize() in compile.c | 
 |  | 
 | (*) mem leak in func_dealloc() in funcobject.c | 
 |  | 
 | (*) missing DECREF for result of run_string in exec_statement() in | 
 | ceval.c | 
 |  | 
 | (*) missing INCREF in RAISE_EXCEPTION case after gettupleitem() in | 
 | ceval.c | 
 |  | 
 | (*) posix.utime gives problems on problems on platforms where struct | 
 | utime members are bitfields | 
 |  | 
 | (*) leak in regex module.c:reg_dealloc() -- should free compiled pattern | 
 |  | 
 | (*) many uses of macros from <ctype.h> fail with signed characters | 
 |  | 
 | (*) compilation on NeXT requires manual editing of the Makefile | 
 |  | 
 | (*) tkinter should cast malloc() result | 
 |  | 
 | (*) marshal.c (w_object()) triggers GCC bug on DEC Alpha | 
 |  | 
 | (*) int/long size bug in range() and xrange() on DEC Alpha | 
 |  | 
 | (*) memory leaks in dbm and gdbm modules | 
 |  | 
 | (*) refcnt bug in select.select([f], [f], [f]) | 
 |  | 
 | (*) Should fflush(stdout) before printing traceback to stderr | 
 |  | 
 | (*) Linux uses GNU getopt by default which is broken | 
 |  | 
 | (*) make sharedinstall references to machdep directory but doesn't | 
 | create it | 
 |  | 
 | (*) a file with unmatched triple quotes causes a loop in the scanner | 
 |  | 
 | (*) [X]DECREF can cause the interpreter to be called recursively (for | 
 | __del__ disciplines) -- so list and dict implementation calls doing | 
 | DECREF can cause recursive calls to methods of the object being | 
 | modified.  Other files too. | 
 |  | 
 | (*) if __getattr__ or __repr__ prints something, calling repr(x) from | 
 | cmd line forgets a newline | 
 |  | 
 | (*) C-level coerce() doesn't call __coerce__ when it should (and | 
 | similar for __cmp__) | 
 |  | 
 | (*) struct module assigns unaligned doubles when compiled with -DDEBUG | 
 | on sparc | 
 |  | 
 | (*) memory leak (namebuf) in initmodule2 | 
 |  | 
 | (*) hash() of float values returns bogus values | 
 |  | 
 | (*) pow(int, int, long) does wrong series of DECREF() calls. | 
 |  | 
 | (*) flushline() may clear the exception condition so shouldn't be | 
 | called before print_error() | 
 |  | 
 | (*) Everything else that uses err_get() should use err_fetch() | 
 |  | 
 | (*) sockets aren't thread safe (address of static struct returned, | 
 | some calls aren't thread safe) | 
 |  | 
 | (*) threadmodule.c leaks LOTS of memory at thread exit | 
 |  | 
 | (*) shared install in Modules still doesn't work for empty list | 
 |  | 
 | (*) threadmodule.c leaks 'res' in t_bootstrap | 
 |  | 
 | (*) errors.c shouldn't declare strerror() on NT | 
 |  | 
 | (*) DECREF can cause the interpreter to be called recursively (for | 
 | __del__ disciplines) -- so list and dict implementation calls doing | 
 | DECREF can cause recursive calls to methods of the object being | 
 | modified.  Other files too.  (Only partially fixed.) | 
 |  | 
 | (*) tkinter dereferences NULL if timer callback raises an exception | 
 |  | 
 | (*) must link with -lieee for linux | 
 |  | 
 | (*) if a timer handler routine raises an exception, the interpreter | 
 | dereferences NULL | 
 |  | 
 | (*) __getattr__ doesn't clear error | 
 |  | 
 | (*) '%s' % a, where a is a class instance, fails | 
 |  | 
 | (*) "make test" won't find freshly built dynamically loaded modules -- | 
 | should add ./Modules to TESTPATH | 
 |  | 
 | (*) lshift calls __rshift__ instead of __rlshift__ | 
 |  | 
 | (*) memory leak in creation of sys.builtin_module_names | 
 |  | 
 | (*) Bugs in instance_dealloc(): (a) memory leak for exception | 
 | type+value; (2) should save+restore traceback as well | 
 |  | 
 | (*) modsupport.c(vmkvalue): on systems where va_list is an array, the | 
 | calls to do_mkvalue and do_mktuple don't want an "&" before va. | 
 |  | 
 | ====================================================================== | 
 | BUGS found in 1.1 and fixed in 1.1.1 | 
 | ------------------------------------ | 
 |  | 
 | (*) printing name of lambda in traceback dereferences NULL | 
 |  | 
 | (*) A built-in function using getargs() and expecting >= 1 argument | 
 | may dump core when called without arguments | 
 |  | 
 | (*) newgetargs() dumps core in compat mode when NULL is passed in but | 
 | max is >0 | 
 |  | 
 | (*) pow() should be declared varargs since it uses newgetargs | 
 |  | 
 | (*) newmodule.c doesn't compile on SunOS 4.1.3 due to non-K&R backslashes | 
 |  | 
 | (*) some typos in tut.tex | 
 |  | 
 | (*) test for broken static forward is not strong enough | 
 |  | 
 | (*) Doc/Makefile assumes . is in $PATH in call to whichlibs | 
 |  | 
 | (*) math module misses hypot() function | 
 |  | 
 | (*) structmember.h should include stddef.h (for offsetof macro) | 
 |  | 
 | (*) gdbmmodule.c frees the wrong structures | 
 |  | 
 | (*) makesetup script misses some dollars and backslashes | 
 |  | 
 | (*) getargs.obj missing from NT makefile | 
 |  | 
 | (*) sorting class instances broken if no __cmp__ defined | 
 |  | 
 | ====================================================================== | 
 | BUGS found in 1.0.3 and fixed in 1.1 | 
 | ------------------------------------ | 
 |  | 
 | (*) 2 specific leaks: 1 PYTHONPATH; 2 reading code from .pyc | 
 |  | 
 | (*) If class C doesn't define __cmp__, cmp(a,b) will return -2 and | 
 | [a,b].sort() will fail | 
 |  | 
 | (*) Syntax errors are reported in a silly way if multi-line tokens are | 
 | involved. | 
 |  | 
 | (*) SyntaxError exception for compile('...') are reported wrongly | 
 | (lineno is always zero and offset is offset into the whole string). | 
 |  | 
 | (*) freeze script needs major rewrite to cope with multiple extensions | 
 | (Jack seems to have fixed it now -- where is it?) | 
 |  | 
 | (*) unwanted entries in stack trace if err_clear() clears an error | 
 | that also set a stack trace | 
 |  | 
 | (*) i, x[i] = a, b assigns b to x[a] rather than to x[i] as expected | 
 | (documented with a warning in ref6.tex!) | 
 |  | 
 | (*) etags no longer supports -t flag | 
 |  | 
 | (*) compile.c:com_argdefs() references unalloc'ed memory for def | 
 | f(a=1,): ... | 
 |  | 
 | (*) If you have a python binary in your path like | 
 | /ufs/guido/bin/sgi/python then the default prefix option computed by | 
 | the configure script is bogus! | 
 |  | 
 | (*) Make rule for making lib*.a should remove the lib*.a file first. | 
 |  | 
 | (*) vars() error message is wrong (copied from dir() obviously). | 
 |  | 
 | (*) socket.gethostname() is undocumented. | 
 |  | 
 | (*) rfc822.py: getfirst* dies when multiple headers occur | 
 |  | 
 | (*) urllib caching is wrong (should use date from Expires header) | 
 |  | 
 | (*) On a related matter: regexpr.c still has two malloc()s the results | 
 | of which are not tested for being NULL (lines 1253 and 1530).  There | 
 | are also some in rgbimagemodule.c.  Am I overlooking something or is | 
 | this a crasher? | 
 |  | 
 | (*) strop.rindex('abc', '') returns 0 instead of 3 | 
 |  | 
 | (*) sunaudiodevmodule.o is too long! | 
 |  | 
 | (*) toplevel README needs new text on PC and Mac builds | 
 |  | 
 | (*) long(0x80000000) has wrong value! | 
 |  | 
 | ====================================================================== | 
 | Bugs found in 1.0.2 and not yet fixed | 
 | ------------------------------------- | 
 |  | 
 | (?) compiler warnings about argument type of uname() on ULTRIX | 
 | machines (don't know what to do about it) [could be fixed by fix for | 
 | bitfields in struct uname] | 
 |  | 
 | (?) syntax error for interactive input prints garbage instead of last | 
 | source line on some systems (e.g. AIX) (impossible to test/reproduce) | 
 | [I think I've found this one -- a missing INCREF in print_error] | 
 |  | 
 | (?) (maybe) a bad .pyc file (with old magic number) causes the .py | 
 | file to be ignored [should be fixed by rewrite of import.c] | 
 |  | 
 | (?) Sunos4.0.2 / 386 configure bugs: | 
 | 	- timelocal instead of mktime | 
 | 	- unistd.h doesn't declare some functions | 
 | (don't know what to do about this) | 
 |  | 
 | Bugs found in 1.0.2 and fixed in 1.0.3 | 
 | -------------------------------------- | 
 |  | 
 | (*) nasty bug in string formatting (see test_types.py, search for %) | 
 |  | 
 | (*) if a triple-quoted string ends in a quote followed by a newline | 
 | (followed immediately by the terminating 3 quotes) then a syntax error | 
 | or system error ensues | 
 |  | 
 | (*) bug in socket.listen: clipping backlog to >= 1 doesn't work | 
 |  | 
 | (*) two bogus XDEL's in Modules/regexmodule.reg_dealloc() | 
 |  | 
 | (*) Parser/myreadline.my_fgets: #endif EINTR misplaced | 
 |  | 
 | (*) new IP address for ftp.cwi.nl !!! | 
 |  | 
 | (*) typing vars() to interactive prompt runs into infinite loop | 
 | because of '_' | 
 |  | 
 | (*) tokenizer/tok_nextc() runs into infinite loop when file does not | 
 | end in linefeed | 
 |  | 
 | (*) Sunos4.0.2 / 386 configure bugs: | 
 | (*)	- use size_t at some places without including sys/types.h | 
 | (*)	- missing clock_t | 
 | (*)	- uses SEEK_SET in some places that don't include unistd.h | 
 |  | 
 | ====================================================================== | 
 | Bugs found in 1.0.1 and not yet fixed | 
 | ------------------------------------- | 
 |  | 
 | (?) threads are slow on Solaris 2 | 
 | (so what?) | 
 |  | 
 | (*) threads cause myreadline.c's readline() to think it sees an EOF. | 
 | (I *think* I've fixed this, by testing for EINTR) | 
 |  | 
 | (?) min() on PC version generates wrong result (i.e. same as max()) | 
 |     [this happens on SoftPC -- don't know about other systems] | 
 | (can't find the reason -- may be SoftPC bug) | 
 |  | 
 | (*) flp.py cache bug: if the cache only contains one form, asking for | 
 | all forms returns only the cached form | 
 |  | 
 | Bugs found in 1.0.1 and fixed in 1.0.2 | 
 | -------------------------------------- | 
 |  | 
 | (*) core dump when parser.parsefile() called | 
 |  | 
 | (*) man page contains a mess before -d option | 
 |  | 
 | (*) threads don't work on IRIX 4 | 
 |  | 
 | (*) wrong cast of svideo_getattr in svmodule.c | 
 |  | 
 | (*) bad return value in runpython.c's run_tty_1() | 
 |  | 
 | (*) creating dict of 100,000 objects gets MemoryError or dumps core | 
 |  | 
 | (*) freeze script doesn't work | 
 |  | 
 | ====================================================================== | 
 | BUGS found in 1.0.0 and not yet fixed | 
 | ------------------------------------- | 
 |  | 
 | (*) On NeXT, need to define _POSIX_SOURCE. | 
 |  | 
 | (?) there appears to be something wrong with gcc and -ldl on some | 
 | SunOS 4.1.3 systems | 
 |  | 
 | (?) jredfords reports core dump with float literals | 
 |  | 
 | BUGS found in 1.0.0 and fixed in 1.0.1 | 
 | -------------------------------------- | 
 |  | 
 | (*) On SGI IRIX 4 using cc, compilation errors in md5module.c. | 
 |  | 
 | (*) In cdmodule.c, getattr initialized with (destructor)! | 
 |  | 
 | (*) Lib/tzparse.py runs test() on import | 
 |  | 
 | (*) Lib/filewin.py belongs in Lib/stdwin | 
 |  | 
 | (*) lib and man install targets don't use $(srcdir) | 
 |  | 
 | (*) Modules/rgbimgmodule.c: exception name contains comma instead of dot | 
 |  | 
 | (*) The FAQ still references misc/EXTENDING and misc/DYNLOAD etc | 
 |  | 
 | (*) The FAQ still describes how to work around a problem in 0.9.9 exec() | 
 |  | 
 | (*) Lib/aifc.py, returns float rate, should be int | 
 |  | 
 | (*) Lib/sunau.py, incorrectly cumputes byte count from frame rate | 
 |  | 
 | (*) README should mention possibility of passing OPT=-g to make | 
 |  | 
 | (*) dynamic loading on sunos 4.1.3 must call dlopen(..., 1) | 
 |  | 
 | (*) use of <varargs.h> vs. <stdarg.h> should depend on | 
 |     HAVE_STDARG_PROTOTYPES, not on HAVE_STDARG_H | 
 |  | 
 | (*) Doc/README refers to Misc/FTP which in fact does not exist any more | 
 |  | 
 | (*) filter(None, 'abcdefg') dumps core | 
 |  | 
 | (*) once you interrupt time.sleep(), there is no interrupt handler! | 
 |  | 
 | ====================================================================== | 
 | end of file |