BUGS 11.6 KB
Newer Older
1
THIS LIST DOES NOT CLAIM COMPLETENESS.
2

3
==> Status indicators: (-) not fixed; (*) fixed; (?) not sure.
4

5
======================================================================
6

7 8
Problems that are difficult to solve
------------------------------------
Guido van Rossum's avatar
Guido van Rossum committed
9

10
(-) "f()=0" generates syntax error msg without line number
11 12 13

(-) tkinter seems to leave an exception around sometime which breaks
unmarshalling code objects [hard to reproduce, have added a trap to
Guido van Rossum's avatar
Guido van Rossum committed
14
marshal.c to catch it]
15 16 17 18 19 20 21

(-) 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...]

Guido van Rossum's avatar
Guido van Rossum committed
22 23
(-) doneimport() should be called *before* the Py_AtExit code is
called [problem: what if other threads are still active?]
24

Guido van Rossum's avatar
Guido van Rossum committed
25 26
Known portability problems
--------------------------
27

28 29 30 31 32 33 34 35
(-) 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

36
(-) HP doesn't compile out of the box (needs LIBS=-ldld or
Guido van Rossum's avatar
Guido van Rossum committed
37
LIBS=/usr/lib/libdld.sl) [hard to test without a HP machine handy]
38

39 40 41
======================================================================
BUGS present in 1.1.1 and fixed in 1.2
--------------------------------------
42

43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
(*) 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

81 82 83 84 85 86 87 88 89 90 91 92
(*) 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.

Guido van Rossum's avatar
Guido van Rossum committed
93 94 95 96 97 98
(*) 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__)

99 100
(*) struct module assigns unaligned doubles when compiled with -DDEBUG
on sparc
Guido van Rossum's avatar
Guido van Rossum committed
101

102
(*) memory leak (namebuf) in initmodule2
103

104
(*) hash() of float values returns bogus values
105

106
(*) pow(int, int, long) does wrong series of DECREF() calls.
107

108 109
(*) flushline() may clear the exception condition so shouldn't be
called before print_error()
110

111
(*) Everything else that uses err_get() should use err_fetch()
112

113 114
(*) sockets aren't thread safe (address of static struct returned,
some calls aren't thread safe)
115

116
(*) threadmodule.c leaks LOTS of memory at thread exit
117

118
(*) shared install in Modules still doesn't work for empty list
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152

(*) 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.

153
======================================================================
Guido van Rossum's avatar
Guido van Rossum committed
154 155 156
BUGS found in 1.1 and fixed in 1.1.1
------------------------------------

Guido van Rossum's avatar
Guido van Rossum committed
157 158 159 160 161 162 163 164
(*) 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

Guido van Rossum's avatar
Guido van Rossum committed
165 166
(*) pow() should be declared varargs since it uses newgetargs

Guido van Rossum's avatar
Guido van Rossum committed
167
(*) newmodule.c doesn't compile on SunOS 4.1.3 due to non-K&R backslashes
Guido van Rossum's avatar
Guido van Rossum committed
168

Guido van Rossum's avatar
Guido van Rossum committed
169
(*) some typos in tut.tex
Guido van Rossum's avatar
Guido van Rossum committed
170

Guido van Rossum's avatar
Guido van Rossum committed
171
(*) test for broken static forward is not strong enough
Guido van Rossum's avatar
Guido van Rossum committed
172

Guido van Rossum's avatar
Guido van Rossum committed
173
(*) Doc/Makefile assumes . is in $PATH in call to whichlibs
Guido van Rossum's avatar
Guido van Rossum committed
174

Guido van Rossum's avatar
Guido van Rossum committed
175 176 177
(*) math module misses hypot() function

(*) structmember.h should include stddef.h (for offsetof macro)
Guido van Rossum's avatar
Guido van Rossum committed
178

Guido van Rossum's avatar
Guido van Rossum committed
179
(*) gdbmmodule.c frees the wrong structures
Guido van Rossum's avatar
Guido van Rossum committed
180

Guido van Rossum's avatar
Guido van Rossum committed
181
(*) makesetup script misses some dollars and backslashes
Guido van Rossum's avatar
Guido van Rossum committed
182

Guido van Rossum's avatar
Guido van Rossum committed
183 184 185 186 187
(*) getargs.obj missing from NT makefile

(*) sorting class instances broken if no __cmp__ defined

======================================================================
Guido van Rossum's avatar
Guido van Rossum committed
188 189 190
BUGS found in 1.0.3 and fixed in 1.1
------------------------------------

191 192
(*) 2 specific leaks: 1 PYTHONPATH; 2 reading code from .pyc

Guido van Rossum's avatar
Guido van Rossum committed
193 194 195
(*) If class C doesn't define __cmp__, cmp(a,b) will return -2 and
[a,b].sort() will fail

196
(*) Syntax errors are reported in a silly way if multi-line tokens are
Guido van Rossum's avatar
Guido van Rossum committed
197 198
involved.

199
(*) SyntaxError exception for compile('...') are reported wrongly
Guido van Rossum's avatar
Guido van Rossum committed
200 201
(lineno is always zero and offset is offset into the whole string).

202
(*) freeze script needs major rewrite to cope with multiple extensions
Guido van Rossum's avatar
Guido van Rossum committed
203 204 205 206 207 208 209 210 211 212 213 214 215 216
(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
Guido van Rossum's avatar
Guido van Rossum committed
217 218 219
/ufs/guido/bin/sgi/python then the default prefix option computed by
the configure script is bogus!

Guido van Rossum's avatar
Guido van Rossum committed
220
(*) Make rule for making lib*.a should remove the lib*.a file first.
Guido van Rossum's avatar
Guido van Rossum committed
221

222 223 224 225 226 227
(*) vars() error message is wrong (copied from dir() obviously).

(*) socket.gethostname() is undocumented.

(*) rfc822.py: getfirst* dies when multiple headers occur

Guido van Rossum's avatar
Guido van Rossum committed
228
(*) urllib caching is wrong (should use date from Expires header)
229 230

(*) On a related matter: regexpr.c still has two malloc()s the results
Guido van Rossum's avatar
Guido van Rossum committed
231 232
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
Guido van Rossum's avatar
Guido van Rossum committed
233
this a crasher?
234 235 236 237 238

(*) strop.rindex('abc', '') returns 0 instead of 3

(*) sunaudiodevmodule.o is too long!

Guido van Rossum's avatar
Guido van Rossum committed
239
(*) toplevel README needs new text on PC and Mac builds
240 241 242 243 244 245 246

(*) long(0x80000000) has wrong value!

======================================================================
Bugs found in 1.0.2 and not yet fixed
-------------------------------------

Guido van Rossum's avatar
Guido van Rossum committed
247
(?) compiler warnings about argument type of uname() on ULTRIX
248 249
machines (don't know what to do about it) [could be fixed by fix for
bitfields in struct uname]
250

Guido van Rossum's avatar
Guido van Rossum committed
251 252
(?) syntax error for interactive input prints garbage instead of last
source line on some systems (e.g. AIX) (impossible to test/reproduce)
253
[I think I've found this one -- a missing INCREF in print_error]
254 255

(?) (maybe) a bad .pyc file (with old magic number) causes the .py
256
file to be ignored [should be fixed by rewrite of import.c]
257

Guido van Rossum's avatar
Guido van Rossum committed
258
(?) Sunos4.0.2 / 386 configure bugs:
259 260
	- timelocal instead of mktime
	- unistd.h doesn't declare some functions
Guido van Rossum's avatar
Guido van Rossum committed
261
(don't know what to do about this)
262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295

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
Guido van Rossum's avatar
Guido van Rossum committed
296
(so what?)
297

Guido van Rossum's avatar
Guido van Rossum committed
298 299
(*) threads cause myreadline.c's readline() to think it sees an EOF.
(I *think* I've fixed this, by testing for EINTR)
300

Guido van Rossum's avatar
Guido van Rossum committed
301
(?) min() on PC version generates wrong result (i.e. same as max())
302
    [this happens on SoftPC -- don't know about other systems]
Guido van Rossum's avatar
Guido van Rossum committed
303
(can't find the reason -- may be SoftPC bug)
304

Guido van Rossum's avatar
Guido van Rossum committed
305 306
(*) flp.py cache bug: if the cache only contains one form, asking for
all forms returns only the cached form
307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328

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
-------------------------------------

329
(*) On NeXT, need to define _POSIX_SOURCE.
330 331 332 333

(?) there appears to be something wrong with gcc and -ldl on some
SunOS 4.1.3 systems

Guido van Rossum's avatar
Guido van Rossum committed
334
(?) jredfords reports core dump with float literals
335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373

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