mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 20:00:19 +02:00
*** empty log message ***
This commit is contained in:
parent
42030fb275
commit
c44b6ec0d3
1 changed files with 0 additions and 430 deletions
430
BUGS
430
BUGS
|
@ -1,430 +0,0 @@
|
|||
BUGS
|
||||
|
||||
This file contains bugs we haven't fixed yet, and some we have.
|
||||
The format is very simple (one bug per page):
|
||||
|
||||
# line regexp
|
||||
|
||||
1 bug NUMBER -- ONE-LINE-DESCRIPTION ^bug ([0-9]+) -- (.+)$
|
||||
2 reported-by: SOMEONE / DATE ^reported-by: ([^/]) */ *(.+)$
|
||||
3 fixed: DATE (for guile VERSION) ^fixed: (.+) .for guile (.+).$
|
||||
4+ OTHER-NOTES
|
||||
|
||||
DATE is formatted YYYY-MM-DD, or "not-yet". Line numbering is zero-origin;
|
||||
line 0 is empty (newline always follows newpage (recognizable w/ "\f\n")).
|
||||
The suggested regexps can be used in a line-oriented parser.
|
||||
|
||||
You can use "fixed: no-need (EXPLANATION)" if the bug doesn't need to be
|
||||
fixed. EXPLANATION might be "not a bug", "user error", etc.
|
||||
|
||||
|
||||
bug 0 -- no BUGS file
|
||||
reported-by: ttn / 2001-09-25
|
||||
fixed: 2001-09-30 (1.5.x, 1.7.x)
|
||||
|
||||
bugs are good.
|
||||
|
||||
|
||||
bug 1 -- (debug-disable 'debug) has no effect if first form in ~/.guile
|
||||
reported-by: Sven.Hartrumpf@fernuni-hagen.de / 2001-08-31
|
||||
fixed: 2001-11-07 (1.7.x)
|
||||
|
||||
ttn sez:
|
||||
buggy behavior confirmed on both 1.5.x and 1.7.x.
|
||||
|
||||
on the other hand, when second or later, the expected effect (disabling use of
|
||||
debugging evaluator) seems to be reflected when viewing the debug options. it
|
||||
could be that the bug is in display and not the actual setting.
|
||||
|
||||
NJ 2002-03-08:
|
||||
|
||||
Problem was caused by (top-repl)'s loading of (ice-9 debug), which
|
||||
ended with unconditional `(debug-enable 'debug)'. Fixed by removing
|
||||
the offending lines.
|
||||
|
||||
|
||||
bug 2 -- documentation mirroring not complete
|
||||
reported-by: lord@regexps.com / 2001-08
|
||||
fixed: 2002-03-17
|
||||
|
||||
ttn sez:
|
||||
uncollated mirroring is already available:
|
||||
http://savannah.gnu.org/cgi-bin/viewcvs/guile/
|
||||
http://mail.gnu.org/pipermail/guile-devel/
|
||||
|
||||
collated snapshots: http://www.glug.org/snap/ (user initiative)
|
||||
|
||||
|
||||
bug 3 -- design decisions not recorded
|
||||
reported-by: lord@regexps.com / 2001-08
|
||||
fixed: not-yet
|
||||
|
||||
changes are made w/ little documentation on their motivation, design and
|
||||
consequences. past initiatives and current maintainer discipline to support
|
||||
them need shoring up.
|
||||
|
||||
ttn sez:
|
||||
someone also mentioned that process and product are orthogonal; nastiness can
|
||||
result in/from either, and for different reasons. i tend to believe this up
|
||||
until a certain point, when the process becomes self-aware and includes its own
|
||||
improvement in its considerations. then, hopefully it becomes light.
|
||||
|
||||
to change people is difficult, but that's why we have guile...
|
||||
|
||||
|
||||
bug 4 -- named-let transform evaluates initvalue in the wrong scope
|
||||
reported-by: agj@alum.mit.edu / 2001-09-21
|
||||
fixed: 2001-11-17 (1.7.x)
|
||||
|
||||
currently:
|
||||
> (let name ((var init) ...) body ...)
|
||||
>
|
||||
> to
|
||||
>
|
||||
> (letrec ((name (lambda (var ...) body ...)))
|
||||
> (name init ...))
|
||||
|
||||
should be:
|
||||
> ((letrec ((name (lambda (var ...) body ...))) name) init ...)
|
||||
|
||||
Dirk Herrmann sez:
|
||||
I will do it - no big deal (I hope). But, I won't have time to do it
|
||||
before next week. What about adding this code as a test case to the test
|
||||
suite? Until it is fixed, it can be tagged as expected to fail.
|
||||
|
||||
|
||||
bug 5 -- uniform vector read-hash "e" clashes w/ exactness specification
|
||||
reported-by: kwright@gis.net / 2001-10-07
|
||||
fixed: 2001-10-14 (1.5.x, 1.7.x)
|
||||
|
||||
Keith Wright sez:
|
||||
> Before getting into philosophy, I want to mention that while poking
|
||||
> around and rethinking I found the following Bug.
|
||||
>
|
||||
> guile> (version)
|
||||
> "1.5.2"
|
||||
> guile> #E3
|
||||
> 3
|
||||
> guile> #e3
|
||||
> ERROR: read:uniform-vector list not found
|
||||
> ABORT: (misc-error)
|
||||
> guile> 3
|
||||
>
|
||||
> This violates both R5RS 7.1 ``Case is insignificant'' and
|
||||
>
|
||||
> > From: guile-1.5.2/doc/ref/guile.info-3 Line 568
|
||||
> >
|
||||
> > The codes for indicating exactness (which can, incidentally, be
|
||||
> > applied to all numerical values) are:
|
||||
> >
|
||||
> > * `#e', `#E' -- the number is exact
|
||||
|
||||
2001-10-14 Mikael Djurfeldt <mdj@linnaeus>
|
||||
|
||||
* read.c (scm_lreadr): When user-defined hash procedure returns
|
||||
SCM_UNSPECIFIED: Fall back to standard handling instead of raising
|
||||
an exception. (This prevents parsing of uniform vectors from
|
||||
interfering with parsing of numbers.)
|
||||
|
||||
|
||||
bug 6 -- exactness prefix doesn't do nothing gracefully
|
||||
reported-by: kwright@gis.net / 2001-10-09
|
||||
fixed: 2001-10-14 (1.5.x, 1.7.x) (see bug 5)
|
||||
|
||||
[this may be related to bug 5. --ttn]
|
||||
|
||||
Keith Wright sez:
|
||||
> The saga continues...
|
||||
>
|
||||
> > > The codes for indicating exactness (which can, incidentally, be
|
||||
> > > applied to all numerical values) are:
|
||||
> > >
|
||||
> > > * `#e', `#E' -- the number is exact
|
||||
>
|
||||
> guile> #E3 ==> 3
|
||||
> guile> #E3.0
|
||||
> ERROR: In procedure scm_lreadr:
|
||||
> ERROR: unknown # object
|
||||
>
|
||||
> Better change the reference manual s/, incidentally,/'t/.
|
||||
>
|
||||
> (That's a joke son. The Scheme language requires #e in front
|
||||
> of any number to at least do nothing successfully.)
|
||||
|
||||
|
||||
bug 7 -- readline configuration anomolies not handled gracefully
|
||||
reported-by: kwright@gis.net / 2001-10-17
|
||||
fixed: not-yet
|
||||
|
||||
|
||||
bug 8 -- install requires makeinfo
|
||||
reported-by: kwright@gis.net / 2001-10-17
|
||||
fixed: not-yet
|
||||
|
||||
Keith Wright sez:
|
||||
> I got guile-1.5.4 and installed it on one machine with no problem.
|
||||
> On another I did ./configure;make as before and it died with:
|
||||
>
|
||||
> > ...
|
||||
> > on.doc vports.doc weaks.doc symbols-deprecated.doc regex-posix.doc ramap.doc unif.doc filesys.doc posix.doc net_db.doc socket.doc | ./guile-snarf-docs-texi > guile.texi \
|
||||
> > || { rm guile.texi; false; }
|
||||
> > rm -f guile-procedures.txt
|
||||
> > makeinfo --force -o guile-procedures.txt guile.texi || test -f guile-procedures.txt
|
||||
> > /bin/sh: makeinfo: command not found
|
||||
> > make[1]: *** [guile-procedures.txt] Error 1
|
||||
> > make[1]: Leaving directory `/home/kwright/build/guile-1.5.4/libguile'
|
||||
> > make: *** [all-recursive] Error 1
|
||||
>
|
||||
> I get the impression that it is supposed to build without 'makeinfo',
|
||||
> if this is not so it should be mentioned in the README or INSTALL.
|
||||
|
||||
NJ 2002-03-08:
|
||||
|
||||
Addressed partially in Makefile.am, by copying guile-procedures.texi
|
||||
to guile-procedures.txt if makeinfo is not available.
|
||||
|
||||
However, a better IMO fix would be to include a prebuilt
|
||||
guile-procedures.txt in the distribution.
|
||||
|
||||
|
||||
bug 9 -- sibling threads not infinite looping
|
||||
reported-by: giraud@tif.inria.fr / 2001-09-24
|
||||
fixed: not-yet
|
||||
|
||||
Manuel Giraud sez:
|
||||
> I've configure guile-1.5.4 '--with-threads' and '--with-modules' on a
|
||||
> "classical" Linux box and used this code that crash silently :
|
||||
>
|
||||
> (use-modules (ice-9 threads))
|
||||
>
|
||||
> (begin-thread
|
||||
> (let loop ()
|
||||
> (display "a")
|
||||
> (newline)
|
||||
> (loop)))
|
||||
>
|
||||
> (begin-thread
|
||||
> (let loop ()
|
||||
> (display "b")
|
||||
> (newline)
|
||||
> (loop)))
|
||||
|
||||
mdj sez:
|
||||
+ 2001-10-06 Mikael Djurfeldt <mdj@linnaeus>
|
||||
+
|
||||
+ These changes fixes a race condition in the Guile coop - pthread
|
||||
+ compatibility code.
|
||||
+
|
||||
+ * coop.c (mother_awake_p): New variable.
|
||||
+ (coop_create): Set mother_awake_p before creating or signalling
|
||||
+ mother; wait until mother is going to sleep before returning.
|
||||
+ (mother): Reset mother_awake_p before going to sleep.
|
||||
+
|
||||
|
||||
ttn sez:
|
||||
crash still occurs w/ "guile -s bug.scm" (cvs checkout on 2001/11/06).
|
||||
however, "guile -l bug.scm" works as expected.
|
||||
|
||||
|
||||
bug 10 -- embedded libltdl masks system version unconditionally
|
||||
reported-by: grib@linuxdevel.com / 2001-11-04
|
||||
fixed: not-yet
|
||||
|
||||
Bill Gribble sez:
|
||||
> The guideline for when to use the convenience version of libltdl is
|
||||
> this:
|
||||
>
|
||||
> > In general you can safely use the convenience library in
|
||||
> > programs which don't depend on other libraries that might
|
||||
> > use libltdl too.
|
||||
>
|
||||
> So guile's use of the convenience library embodies an assumption about
|
||||
> programs which use guile: that they will not use libltdl except through
|
||||
> guile's wrapper (dynamic-link and friends).
|
||||
>
|
||||
> It seems like this is a bad assumption for guile to make, since it is
|
||||
> intended to be used as an extension language for many different kinds of
|
||||
> programs and not to put a priori restrictions on what they can do.
|
||||
> Especially when those restrictions are not documented.
|
||||
>
|
||||
> I would suggest that prior to the guile-1.6 release the use of the
|
||||
> convenience ltdl library be removed, instead depending on an installed
|
||||
> version of libltdl.
|
||||
|
||||
|
||||
bug 11 -- (ice-9 optargs) #:rest arg polluted by keys/values
|
||||
reported-by: ttn / 2001-11-09
|
||||
fixed: no-need (behavior consistent w/ Common Lisp, user error)
|
||||
|
||||
ttn sez:
|
||||
> the following code displays
|
||||
>
|
||||
> (#<procedure good x> ())
|
||||
> (#<procedure good x> (1))
|
||||
> (#<procedure good x> ((1 2 3)))
|
||||
> (#<procedure blah x> JAY KAY (#:j JAY #:k KAY))
|
||||
> (#<procedure blah x> JAY KAY (#:j JAY #:k KAY 1))
|
||||
> (#<procedure blah x> JAY KAY (#:j JAY #:k KAY (1 2 3)))
|
||||
>
|
||||
> but `x' should be the same for both `good' and `blah':
|
||||
>
|
||||
> (use-modules (ice-9 optargs) (ice-9 rdelim))
|
||||
>
|
||||
> (define* (good #:rest x)
|
||||
> (write-line (list good x)))
|
||||
>
|
||||
> (good)
|
||||
> (good 1)
|
||||
> (good '(1 2 3))
|
||||
>
|
||||
> (define* (blah #:key (j 'j) (k 'k) #:rest x)
|
||||
> (write-line (list blah j k x)))
|
||||
>
|
||||
> (blah #:j 'JAY #:k 'KAY)
|
||||
> (blah #:j 'JAY #:k 'KAY 1)
|
||||
> (blah #:j 'JAY #:k 'KAY '(1 2 3))
|
||||
|
||||
mvo sez:
|
||||
> In Common Lisp, there are no non-key rest-args when you have keyword
|
||||
> parameters. After the required and optional arguments, there must
|
||||
> follow an even number of additional arguments, and every two of them
|
||||
> are treated as a keyword/value pair.
|
||||
>
|
||||
> I think it makes sense the way CL specifies this. Anything beyond
|
||||
> this would lead to confusion. If you want to go beyond what (ice-9
|
||||
> optargs) offers, yo are probably best off writing your own argument
|
||||
> parser.
|
||||
|
||||
|
||||
bug 12 -- goops class redefinition not signalling "no such accessor" error
|
||||
reported-by: wawrzin@cs.tu-berlin.de / 2001-12-04
|
||||
fixed: not-yet
|
||||
|
||||
Thomas Wawrzinek sez:
|
||||
> Running the following script produces some guile output which confueses me:
|
||||
>
|
||||
> ;;; script.scm
|
||||
> (use-modules (oop goops))
|
||||
>
|
||||
> (define-class <root> ())
|
||||
>
|
||||
> (define-class <foo> (<root>)
|
||||
> (a #:init-value #f #:accessor a-value #:init-keyword #:a-value)
|
||||
> (b #:init-value #f #:accessor b-value #:init-keyword #:b-value))
|
||||
>
|
||||
> (define-class <bar> (<foo>))
|
||||
>
|
||||
> (define-method (initialize (o <bar>) . args)
|
||||
> (set! (a-value o) "BAR")
|
||||
> (next-method))
|
||||
>
|
||||
> (define-generic print)
|
||||
>
|
||||
> (define-method (print (o <bar>))
|
||||
> (display (a-value o)) (newline)
|
||||
> (display (b-value o)) (newline))
|
||||
>
|
||||
> ;;; OK, this is very *wrong*!
|
||||
> (define-class <bar> (<root>))
|
||||
>
|
||||
> (define baz (make <bar> #:b-value "BAZ"))
|
||||
>
|
||||
> (print baz)
|
||||
>
|
||||
> $ guile -s script.scm
|
||||
> BAR
|
||||
> #<unknown-immediate 0x69746163>
|
||||
> $ guile -v
|
||||
> Guile 1.5.4
|
||||
> Copyright (c) 1995, 1996, 1997, 2000, 2001 Free Software Foundation
|
||||
> Guile may be distributed under the terms of the GNU General Public Licence;
|
||||
> certain other uses are permitted as well. For details, see the file
|
||||
> `COPYING', which is included in the Guile distribution.
|
||||
> There is no warranty, to the extent permitted by law.
|
||||
>
|
||||
> I'm running on a SuSE Linux 7.2 box ...
|
||||
>
|
||||
> I expected that because of the second (define-class <bar> ...) I would get
|
||||
> some sensible error message (at least about the usage of (a-value ...) in
|
||||
> the (print ...) generic function call).
|
||||
>
|
||||
> Maybe I'm mistaken here, I know that GOOPS has a class redefinition
|
||||
> protocol, but does it go with the define-class macro?
|
||||
>
|
||||
> I accidently had such a second (define-class ...) with an already
|
||||
> used class-name. In a much more complex program than the above, this
|
||||
> resulted in a segmentation fault (backtrace told me it was GC related).
|
||||
>
|
||||
> To avoid such behavior, would it be sensible to have guile indicate
|
||||
> a wrong usage error or something?
|
||||
|
||||
|
||||
bug 13 -- incorrect error reporting after stack overflow
|
||||
reported-by: Panagiotis Vossos <jacbre@internet.gr> / 2002-02-19
|
||||
fixed: not-yet
|
||||
|
||||
Panagiotis Vossos sez:
|
||||
|
||||
I have guile 1.5.4 installed and I discovered something strange.
|
||||
|
||||
guile> (define (foo n) (+ n (foo n)))
|
||||
guile> (foo 10)
|
||||
ERROR: Stack overflow
|
||||
ABORT: (stack-overflow)
|
||||
guile> thisisabug
|
||||
<unnamed port>: In expression thisisabug:
|
||||
<unnamed port>: Unbound variable: thisisabug
|
||||
ABORT: (unbound-variable)
|
||||
guile> (foo 10)
|
||||
<unnamed port>: In expression thisisabug:
|
||||
<unnamed port>: Stack overflow
|
||||
ABORT: (stack-overflow)
|
||||
|
||||
The last message shows the previous unbound variable 'thisisabug'.
|
||||
'foo' is just an example, this seems to happen for every function that
|
||||
causes overflow. It's not serious, but it sure looks misleading..
|
||||
|
||||
Neil Jerram sez:
|
||||
|
||||
It's something to do with the way that debug info frames cope with
|
||||
stack overflow.
|
||||
|
||||
|
||||
bug 14 -- strange gc loop caused by trap misuse
|
||||
reported-by: Neil Jerram <neil@ossau.uklinux.net> / 2002-02-03
|
||||
fixed: not-yet
|
||||
|
||||
Neil Jerram sez:
|
||||
|
||||
Using the current unstable CVS Guile...
|
||||
|
||||
Running under gdb, type in the following:
|
||||
|
||||
(gdb) run -q
|
||||
Starting program: /usr/local/bin/guile -q
|
||||
guile> (trap-set! enter-frame-handler (lambda () 1))
|
||||
(exit-frame-handler #f apply-frame-handler #f enter-frame-handler #<procedure #f ()> traps)
|
||||
guile> (trap-enable 'enter-frame)
|
||||
|
||||
There is no response. Wait a few seconds, and then C-c to send an
|
||||
interrupt. You'll find that the call stack shows a huge number of
|
||||
recursive calls to scm_gc_mark (about 4000 per second waited on my
|
||||
box). (If you don't see scm_gc_mark immediately, you may have
|
||||
interrupted too quickly: let it run for another second and then C-c
|
||||
again.)
|
||||
|
||||
Here's as much of an explanation as I can offer... The intended
|
||||
effect of the two `trap' lines above is that the evaluator calls the
|
||||
specified procedure every time it enters a new evaluation frame or is
|
||||
about to perform an application. However, the procedure above doesn't
|
||||
accept the right number of arguments, so the attempt to call it gives
|
||||
rise to a wrong-num-args error, which (I presume) jumps us out of that
|
||||
level of the evaluator and is caught by the usual REPL machinery in
|
||||
boot-9.scm.
|
||||
|
||||
Then, the next time that we need to GC, we hit this scm_gc_mark loop.
|
||||
My guess is that something about the trap+error scenario has left data
|
||||
or the stack in a state which exposes a bug in the GC.
|
||||
|
||||
|
||||
[BUGS ends here]
|
Loading…
Add table
Add a link
Reference in a new issue