home *** CD-ROM | disk | FTP | other *** search
- 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
-