[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gcl-devel] Readline
From: |
Camm Maguire |
Subject: |
[Gcl-devel] Readline |
Date: |
16 Feb 2005 10:02:45 -0500 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 |
Greetings! OK, I think its fixed now in CVS and on the web page -- if
(rl_line_buffer) *rl_line_buffer=0. Any testing/confirmation would be
most appreciated.
Separately, would it not be nice to have paren matching and history
retrieval by complete form rather than line in this mode? I know how
to do the latter, but not really the former yet.
Anyone care about this?
Take care,
Peter Wood <address@hidden> writes:
> Hi again,
>
> As previously reported, the patch fixed the LISTEN bug, however it
> seems to have introduced a new one. When I do (SI::SAVE-SYSTEM
> "test") and run ./test I get a segfault. I commented out one of the
> changes from the patch and that seems to have fixed the problem. Here
> is what it looks when I run ./test
>
> Current directory is ~/Projects/gcl-2.6.6/
> GNU gdb 6.0
> Copyright 2003 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you are
> welcome to change it and/or distribute copies of it under certain conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB. Type "show warranty" for details.
> This GDB was configured as "i686-pc-linux-gnu"...
> (gdb) run
> Starting program: /home/prw/Projects/gcl-2.6.6/test
> GCL (GNU Common Lisp) 2.6.6 ANSI Feb 16 2005 07:24:24
> Source License: LGPL(gcl,gmp), GPL(unexec,bfd)
> Binary License: GPL due to GPL'ed components: (READLINE BFD UNEXEC)
> Modifications of this banner must retain notice of a compatible license
> Dedicated to the memory of W. Schelter
>
> Use (help) to get some basic information on how to use GCL.
>
> >
> Program received signal SIGSEGV, Segmentation fault.
> 0x080d1b91 in rl_getc_em (f=0x401e3540) at gcl_readline.d:286
> (gdb) l
> 281
> 282 if (line[linepos]==0) {
> 283 free(line);
> 284 line = NULL;
> 285 linepos = 0;
> 286 *rl_line_buffer=0;
> 287 return '\n';
> 288 }
> 289
> 290 return line[linepos++];
> (gdb) backtrace
> #0 0x080d1b91 in rl_getc_em (f=0x401e3540) at gcl_readline.d:286
> #1 0x080b7799 in stream_at_end (strm=0x853f4c8) at file.d:1114
> #2 0x08064dae in read_object (in=0x853f45c) at read.d:433
> #3 0x08064b73 in read_object_non_recursive (in=0x853f45c) at read.d:257
> #4 0x080694ba in Lread () at read.d:2002
> #5 0x080aee59 in simple_symlispcall (sym=0x854cdec, base=0x839a424, narg=3)
> at eval.c:658
> #6 0x08171c25 in LI1 () at gcl_top.c:130
> #7 0x080acba8 in quick_call_sfun (fun=0x853c050) at eval.c:117
> #8 0x080ad732 in funcall (fun=0x853c050) at eval.c:178
> #9 0x080518f4 in IapplyVector (fun=0x853c050, nargs=0, base=0x839a3fc)
> at nfunlink.c:239
> #10 0x080afc0c in fLfuncall (fun=0x853c050) at eval.c:1140
> #11 0x080c2cce in c_apply_n (fn=0x80afb7c <fLfuncall>, n=1, x=0x839a3f8)
> at funlink.c:271
> #12 0x080517a7 in IapplyVector (fun=0x853ce4c, nargs=1, base=0x839a3f8)
> at nfunlink.c:229
> #13 0x080ad7c0 in funcall (fun=0x853ce4c) at eval.c:190
> #14 0x080ae1e2 in funcall_no_event (fun=0x853ce4c) at eval.c:381
> #15 0x080af96c in eval (form=0x8521640) at eval.c:1092
> #16 0x080adef7 in funcall (fun=0x91d3fd8) at eval.c:327
> #17 0x080ae1e2 in funcall_no_event (fun=0x930378c) at eval.c:381
> #18 0x080af96c in eval (form=0x8521640) at eval.c:1092
> #19 0x080adef7 in funcall (fun=0x91d3fe0) at eval.c:327
> #20 0x080af0ce in super_funcall (fun=0x9303ff0) at eval.c:743
> #21 0x0804b9f9 in main (argc=1, argv=0xbffff994, envp=0xbffff99c) at
> main.c:369
> (gdb) kill
> Kill the program being debugged? (y or n) y
> (gdb) quit
>
> Debugger finished
>
> I commented out line 286 in gcl_readline.d (rl_line_buffer=0) and
> recompiled and that seems to have fixed things.
>
> Regards,
> Peter
>
> On Tue, Feb 15, 2005 at 04:16:47PM -0500, Camm Maguire wrote:
> > Greetings!
> >
> > Please try this patch, which is now posted to the errata page.
> >
> > =============================================================================
> > diff -ru gcl/h/protoize.h gcl-2.6.6/h/protoize.h
> > --- gcl/h/protoize.h 2005-01-16 00:36:20.000000000 +0000
> > +++ gcl-2.6.6/h/protoize.h 2005-02-15 16:35:37.000000000 +0000
> > @@ -547,6 +547,7 @@
> >
> >
> > /* readline.d */
> > +extern int readline_on;
> > void
> > gcl_init_readline_function(void);
> >
> > diff -ru gcl/o/file.d gcl-2.6.6/o/file.d
> > --- gcl/o/file.d 2004-05-07 21:48:58.000000000 +0000
> > +++ gcl-2.6.6/o/file.d 2005-02-15 17:52:20.000000000 +0000
> > @@ -39,6 +39,7 @@
> > #include "include.h"
> >
> > #ifdef HAVE_READLINE
> > +#include <readline/readline.h>
> > #define kclgetc(FP) rl_getc_em(FP)
> > #define kclungetc(C, FP) rl_ungetc_em(C, FP)
> > #define kclputc(C, FP) rl_putc_em(C, FP)
> > @@ -1210,6 +1211,8 @@
> > case smm_input:
> > case smm_io:
> >
> > + if (readline_on && strm->sm.sm_fp==rl_instream)
> > + return *rl_line_buffer ? TRUE : FALSE;
> >
> > if (strm->sm.sm_fp == NULL)
> > closed_stream(strm);
> > diff -ru gcl/o/gcl_readline.d gcl-2.6.6/o/gcl_readline.d
> > --- gcl/o/gcl_readline.d 2004-03-09 02:15:42.000000000 +0000
> > +++ gcl-2.6.6/o/gcl_readline.d 2005-02-15 17:51:56.000000000 +0000
> > @@ -51,7 +51,7 @@
> > #include <history.h>
> > #endif
> >
> > -static int readline_on = 0; /* On (1) or off (0) */
> > +int readline_on = 0; /* On (1) or off (0) */
> > static int rl_ungetc_em_char = -1;
> > static unsigned char *rl_putc_em_line = NULL;
> >
> > @@ -283,6 +283,7 @@
> > free(line);
> > line = NULL;
> > linepos = 0;
> > + *rl_line_buffer=0;
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
> > return '\n';
> > }
> >
> > =============================================================================
> >
> > Your test functions appear to work under readline with these installed
> > for me at least.
> >
> > Take care,
> >
> > James Amundson <address@hidden> writes:
> >
> > > On Mon, 2005-02-14 at 10:04, Camm Maguire wrote:
> > > > Greetings!
> > >
> > > Thanks for looking into this.
> > >
> > > > I can't reproduce this, but rather get:
> > >
> > > On my system, read-char-no-hang and listen always return nil. I attached
> > > my output from foo and foo2 to the end of this message. I'm afraid it
> > > must be a gcc and/or libc issue. Here are my versions:
> > >
> > > |abacus3>gcc --version
> > > gcc (GCC) 3.2.3 20030502 (Red Hat Linux 3.2.3-42)
> > > Copyright (C) 2002 Free Software Foundation, Inc.
> > > This is free software; see the source for copying conditions. There is
> > > NO
> > > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
> > > PURPOSE.
> > >
> > > |abacus3>/lib/libc.so.6 --version
> > > GNU C Library stable release version 2.3.2, by Roland McGrath et al.
> > > Copyright (C) 2003 Free Software Foundation, Inc.
> > > This is free software; see the source for copying conditions.
> > > There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
> > > PARTICULAR PURPOSE.
> > > Compiled by GNU CC version 3.2.3 20030502 (Red Hat Linux 3.2.3-42).
> > > Compiled on a Linux 2.4.20 system on 2004-12-20.
> > > Available extensions:
> > > GNU libio by Per Bothner
> > > crypt add-on version 2.1 by Michael Glad and others
> > > linuxthreads-0.10 by Xavier Leroy
> > > The C stubs add-on version 2.1.2.
> > > BIND-8.2.3-T5B
> > > NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
> > > Glibc-2.0 compatibility add-on by Cristian Gafton
> > > libthread_db work sponsored by Alpha Processor Inc
> > > Thread-local storage support included.
> > > For bug reporting instructions, please see:
> > > <http://www.gnu.org/software/libc/bugs.html>.
> > >
> > > I'm not sure what debugging steps to try next. I tried to understand how
> > > read-char-no-hang and listen are implemented in the gcl source, but I
> > > couldn't see it. Any pointers?
> > >
> > > Thanks,
> > > Jim
> > >
> > > P.S.
> > >
> > > GCL (GNU Common Lisp) 2.6.6 ANSI Feb 14 2005 21:03:12
> > > Source License: LGPL(gcl,gmp), GPL(unexec,bfd)
> > > Binary License: GPL due to GPL'ed components: (READLINE BFD UNEXEC)
> > > Modifications of this banner must retain notice of a compatible license
> > > Dedicated to the memory of W. Schelter
> > >
> > > Use (help) to get some basic information on how to use GCL.
> > >
> > > >(defun foo ()
> > > (format t "normal: '~a'~%" (read-char))
> > > (format t "normal: '~a'~%" (read-char))
> > > (format t "no-hang: '~a'~%" (read-char-no-hang))
> > > (format t "normal: '~a'~%" (read-char))
> > > (read-line))
> > >
> > > FOO
> > >
> > > >(foo)
> > > normal: '
> > > '
> > > abcde
> > > normal: 'a'
> > > no-hang: 'NIL'
> > > normal: 'b'
> > > "cde"
> > > NIL
> > >
> > > >(defun foo2 ()
> > > (do ()
> > > ((not (listen)))
> > > (read-char-no-hang))
> > > (foo))
> > >
> > > FOO2
> > >
> > > >(foo2)
> > > normal: '
> > > '
> > > abcdef
> > > normal: 'a'
> > > no-hang: 'NIL'
> > > normal: 'b'
> > > "cdef"
> > > NIL
> > >
> > > >
> > >
> > >
> > >
> > >
> > >
> >
> > --
> > Camm Maguire address@hidden
> > ==========================================================================
> > "The earth is but one country, and mankind its citizens." -- Baha'u'llah
>
>
>
--
Camm Maguire address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens." -- Baha'u'llah
- Re: [Gcl-devel] read-char-no-hang, (continued)
Re: [Gcl-devel] read-char-no-hang, Camm Maguire, 2005/02/14
Message not availableRe: [Gcl-devel] read-char-no-hang, Camm Maguire, 2005/02/15
Message not availableRe: [Gcl-devel] read-char-no-hang, Camm Maguire, 2005/02/15
Re: [Gcl-devel] read-char-no-hang, Peter Wood, 2005/02/16
Re: [Gcl-devel] read-char-no-hang, Peter Wood, 2005/02/16
[Gcl-devel] Readline,
Camm Maguire <=
[Gcl-devel] Re: Readline, Peter Wood, 2005/02/22