gcl-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Gcl-devel] Re: Windows ANSI test - universe.lsp


From: Camm Maguire
Subject: Re: [Gcl-devel] Re: Windows ANSI test - universe.lsp
Date: 29 May 2004 13:16:54 -0400
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2

Greetings, and thanks for the helpfule feedback on this!

1) Either the program is egregiously miscompiled, or you've corrupted
   the C stack (or gdb is lying to you).  Suggestions:

        a) compile with same level of opt, no -fomit-frame-pointer,
        and add -g.
        b) continue to the actual location of the segfault and provide
        a backtrace there, unless of course it is at l 268 in
        indirecting p.
        c) print the addresses of local variables in frame 0 and frame
        1, as well a i reg esp.

What is reported here is that your stack pointer has been incremented
by two words too many.  s should have an address in the text region
0x4????? and point to the constant string, num should be 1, and the
word thereafter should be c, which is reported here as s.  Might want
to look at p/x *((int *)&s-4)@8, and print the indirection of the
pointers therein.  What is the minimum optimization level causing
this?  As time permits, you might also want to try -fno..... taking
out specific optimizations, like we did earlier.  In any case, I think
the default optimization flags should be beneath the level triggering
this. 

You might also double check the preprocessing output on read.c,
produced from read.d by dpp, to make sure the prototype of FEerror is
right.  Perhaps this is a vararg specific bug in gcc on this
platform. 

Take care,

Mike Thomas <address@hidden> writes:

> Oh alright then - just one run through the debugger - the value of the
> type below '\r' is interesting:
> 
>  >(load "gclload1.lsp")(compile-and-load "random-int-form.lsp")
> 
> Loading gclload1.lsp
> Loading compile-and-load.lsp
> Finished loading compile-and-load.lsp
> Loading rt-package.lsp
> Finished loading rt-package.lsp
> Loading rt.o
> start address -T 10881000 Finished loading rt.o
> Loading cl-test-package.lsp
> Finished loading cl-test-package.lsp
> Loading ansi-aux-macros.o
> start address -T 10884680 Finished loading ansi-aux-macros.o
> Loading universe.lsp
> 
> Breakpoint 1, FEerror (s=0x10100f60 "\r", num=269543680) at error.c:260
> 260     {
> (gdb) n
> 268       while (*p) {    if (*p=='~' && last != '~')
> (gdb) p *p
> Cannot access memory at address 0x4
> (gdb) bt
> #0  FEerror (s=0x10100f60 "\r", num=269543680) at error.c:268
> #1  0x0045a73b in Lsharp_backslash_reader () at read.d:1226
> #2  0x0045a4c0 in Lsharp_C_reader ()
> #3  0x10100f60 in ?? ()
> #4  0x1010e900 in ?? ()
> #5  0x006c8960 in ihs_stack ()
> #6  0x1010e900 in ?? ()
> #7  0x006d1864 in value_stack ()
> #8  0x00417c54 in funcall (fun=0x106b4fa4) at eval.c:173
> #9  0x1035f354 in ?? ()
> #10 0x006c62f0 in small_fixnum_table ()
> #11 0x00000001 in ?? ()
> #12 0x10111c00 in ?? ()
> #13 0x006c3ae0 in character_table1 ()
> #14 0x006d1864 in value_stack ()
> #15 0x10377af8 in ?? ()
> #16 0x0045a04c in Ldispatch_reader () at read.d:1077
> #17 0x1010e900 in ?? ()
> #18 0x0000000a in ?? ()
> #19 0x00000001 in ?? ()
> #20 0x106b4fa4 in ?? ()
> #21 0x006c8958 in ihs_stack ()
> #22 0x1010e980 in ?? ()
> #23 0x006c3918 in character_table1 ()
> #24 0x00417c54 in funcall (fun=0x10281fa4) at eval.c:173
> #25 0x00000008 in ?? ()
> #26 0x00000002 in ?? ()
> #27 0x006c6160 in small_fixnum_table ()
> #28 0x006d1860 in value_stack ()
> #29 0x10111000 in ?? ()
> ---Type <return> to continue, or q <return> to quit---
> #30 0x006c3918 in character_table1 ()
> #31 0x10377af8 in ?? ()
> #32 0x00455962 in read_object (in=0x4556d9) at read.d:451
> #33 0x10281fa4 in ?? ()
> #34 0x006d19c0 in value_stack ()
> #35 0x006c8940 in ihs_stack ()
> #36 0x006d185c in value_stack ()
> (gdb)
> (gdb) up
> #1  0x0045a73b in Lsharp_backslash_reader () at read.d:1226
> 1226                    FEerror("~S is an illegal character name.", 1, c);
> (gdb) l
> 1221                                    FEerror("Octal digit expected.", 0);
> 1222                            else
> 1223                                    n = 8*n + c->s.s_self[i] - '0';
> 1224                    vs_base[0] = code_char(n & 0377);
> 1225            } else
> 1226                    FEerror("~S is an illegal character name.", 1, c);
> 1227    }
> 1228
> 1229    static void
> 1230    Lsharp_single_quote_reader()
> (gdb) p c
> $1 = 0x10100f60
> (gdb) p c->d.t
> $2 = 13 '\r'
> (gdb) p c->d
> $3 = {t = 13 '\r', flag = 0 '\0', s = 0 '\0', m = 0 '\0'}
> (gdb) p c
> $4 = 0x10100f60
> (gdb) pp c
> Undefined command: "pp".  Try "help".
> (gdb) p *c
> $5 = {FIX = {t = 13 '\r', flag = 0 '\0', s = 0 '\0', m = 0 '\0',
>      FIXVAL = 6691680}, big = {t = 13 '\r', flag = 0 '\0', s = 0 '\0',
>      m = 0 '\0', big_mpz_t = {_mp_alloc = 6691680, _mp_size = 65537,
>        _mp_d = 0x10189388}}, rat = {t = 13 '\r', flag = 0 '\0', s = 0 '\0',
>      m = 0 '\0', rat_den = 0x661b60, rat_num = 0x10001}, SF = {t = 13 '\r',
>      flag = 0 '\0', s = 0 '\0', m = 0 '\0', SFVAL = 9.37704091e-039}, LF = {
>      t = 13 '\r', flag = 0 '\0', s = 0 '\0', m = 0 '\0',
>      LFVAL = 3.9574891377151702e-231}, cmp = {t = 13 '\r', flag = 0 '\0',
>      s = 0 '\0', m = 0 '\0', cmp_real = 0x661b60, cmp_imag = 0x10001},
> ch = {
>      t = 13 '\r', flag = 0 '\0', s = 0 '\0', m = 0 '\0', ch_code = 7008,
>      ch_font = 102 'f', ch_bits = 0 '\0'}, s = {t = 13 '\r', flag = 0 '\0',
>      s = 0 '\0', m = 0 '\0', s_dbind = 0x661b60, s_sfdef = 0x10001,
>      st_self = 0x10189388
> "NULLFEEDEAD-CHARS3786123/12346781234876123478961234678
> 51234671234 associated compiled file is out of date.-march=i386
> ongfloat||\ntype
> _of(#0)==t_complexe ; rm -f XXX~a XXexp XXXfsave fsavres.oames star"...,
>      st_fillp = 4, s_gfdef = 0x800, s_plist = 0xd, s_hpack = 0x661b60,
>      s_stype = 0, s_mflag = 0}, p = {t = 13 '\r', flag = 0 '\0', s = 0 '\0',
>      m = 0 '\0', p_name = 0x661b60, p_nicknames = 0x10001,
>      p_shadowings = 0x10189388, p_uselist = 0x4, p_usedbylist = 0x800,
>      p_internal = 0xd, p_external = 0x661b60, p_internal_size = 0,
>      p_external_size = 277316700, p_internal_fp = 1, p_external_fp = 1,
>      p_link = 0xd}, c = {t = 13 '\r', flag = 0 '\0', s = 0 '\0', m = 0 '\0',
>      c_cdr = 0x661b60, c_car = 0x10001}, ht = {t = 13 '\r', flag = 0 '\0',
>      s = 0 '\0', m = 0 '\0', ht_self = 0x661b60, ht_rhsize = 0x10001,
>      ht_rhthresh = 0x10189388, ht_nent = 4, ht_size = 2048, ht_test =
> 13}, a = {
>      t = 13 '\r', flag = 0 '\0', s = 0 '\0', m = 0 '\0',
>      a_displaced = 0x661b60, a_rank = 1, a_elttype = 1, a_self = 0x10189388,
>      a_adjustable = 4, a_offset = 0, a_dim = 2048, a_dims = 0xd}, v = {
>      t = 13 '\r', flag = 0 '\0', s = 0 '\0', m = 0 '\0',
>      v_displaced = 0x661b60, v_hasfillp = 1, v_elttype = 1,
> ---Type <return> to continue, or q <return> to quit---
>      v_self = 0x10189388, v_fillp = 4, v_dim = 2048, v_adjustable = 13,
>      v_offset = 0}, st = {t = 13 '\r', flag = 0 '\0', s = 0 '\0', m =
> 0 '\0',
>      st_displaced = 0x661b60, st_hasfillp = 1, st_adjustable = 1,
>      st_self = 0x10189388
> "NULLFEEDEAD-CHARS3786123/12346781234876123478961234678
> 51234671234 associated compiled file is out of date.-march=i386
> ongfloat||\ntype
> _of(#0)==t_complexe ; rm -f XXX~a XXexp XXXfsave fsavres.oames star"...,
>      st_fillp = 4, st_dim = 2048}, ust = {t = 13 '\r', flag = 0 '\0',
>      s = 0 '\0', m = 0 '\0', ust_displaced = 0x661b60, ust_hasfillp = 1,
>      ust_adjustable = 1,
>      ust_self = 0x10189388
> "NULLFEEDEAD-CHARS3786123/1234678123487612347896123467
> 851234671234 associated compiled file is out of date.-march=i386
> ongfloat||\ntyp
> e_of(#0)==t_complexe ; rm -f XXX~a XXexp XXXfsave fsavres.oames star"...,
>      ust_fillp = 4, ust_dim = 2048}, bv = {t = 13 '\r', flag = 0 '\0',
>      s = 0 '\0', m = 0 '\0', bv_displaced = 0x661b60, bv_hasfillp = 1,
>      bv_elttype = 1,
>      bv_self = 0x10189388
> "NULLFEEDEAD-CHARS3786123/12346781234876123478961234678
> 51234671234 associated compiled file is out of date.-march=i386
> ongfloat||\ntype
> _of(#0)==t_complexe ; rm -f XXX~a XXexp XXXfsave fsavres.oames star"...,
>      bv_fillp = 4, bv_dim = 2048, bv_adjustable = 13, bv_offset = 0},
> str = {
>      t = 13 '\r', flag = 0 '\0', s = 0 '\0', m = 0 '\0', str_def = 0x661b60,
>      str_self = 0x10001}, sm = {t = 13 '\r', flag = 0 '\0', s = 0 '\0',
>      m = 0 '\0', sm_fp = 0x661b60, sm_object0 = 0x10001,
>      sm_object1 = 0x10189388, sm_int0 = 4, sm_int1 = 2048,
>      sm_buffer = 0xd <Address 0xd out of bounds>, sm_mode = 96 '`',
>      sm_flags = 27 '\e', sm_fd = 102}, rnd = {t = 13 '\r', flag = 0 '\0',
>      s = 0 '\0', m = 0 '\0', rnd_value = 6691680}, rt = {t = 13 '\r',
>      flag = 0 '\0', s = 0 '\0', m = 0 '\0', rt_self = 0x661b60}, pn = {
>      t = 13 '\r', flag = 0 '\0', s = 0 '\0', m = 0 '\0', pn_host = 0x661b60,
>      pn_device = 0x10001, pn_directory = 0x10189388, pn_name = 0x4,
>      pn_type = 0x800, pn_version = 0xd}, cf = {t = 13 '\r', flag = 0 '\0',
> ---Type <return> to continue, or q <return> to quit---
>      s = 0 '\0', m = 0 '\0', cf_name = 0x661b60, cf_self = 0x10001,
>      cf_data = 0x10189388}, cc = {t = 13 '\r', flag = 0 '\0', s = 0 '\0',
>      m = 0 '\0', cc_name = 0x661b60, cc_self = 0x10001, cc_env = 0x10189388,
>      cc_data = 0x4, cc_envdim = 2048, cc_turbo = 0xd}, cl = {t = 13 '\r',
>      flag = 0 '\0', s = 0 '\0', m = 0 '\0', cl_name = 0x661b60,
>      cl_self = 0x10001, cl_data = 0x10189388, cl_argd = 4, cl_envdim = 2048,
>      cl_env = 0xd}, sfn = {t = 13 '\r', flag = 0 '\0', s = 0 '\0', m =
> 0 '\0',
>      sfn_name = 0x661b60, sfn_self = 0x10001, sfn_data = 0x10189388,
>      sfn_argd = 4}, vfn = {t = 13 '\r', flag = 0 '\0', s = 0 '\0', m =
> 0 '\0',
>      vfn_name = 0x661b60, vfn_self = 0x10001, vfn_data = 0x10189388,
>      vfn_minargs = 4, vfn_maxargs = 0}, cfd = {t = 13 '\r', flag = 0 '\0',
>      s = 0 '\0', m = 0 '\0', cfd_start = 0x661b60 "\b", cfd_size = 65537,
>      cfd_fillp = 270046088, cfd_self = 0x4}, spc = {t = 13 '\r', flag
> = 0 '\0',
>      s = 0 '\0', m = 0 '\0', spc_dummy = 6691680}, d = {t = 13 '\r',
>      flag = 0 '\0', s = 0 '\0', m = 0 '\0'}, fixa = {t = 13 '\r',
>      flag = 0 '\0', s = 0 '\0', m = 0 '\0', fixa_displaced = 0x661b60,
>      fixa_rank = 1, fixa_elttype = 1, fixa_self = 0x10189388,
>      fixa_adjustable = 4, fixa_offset = 0, fixa_dim = 2048, fixa_dims
> = 0xd},
>    sfa = {t = 13 '\r', flag = 0 '\0', s = 0 '\0', m = 0 '\0',
>      sfa_displaced = 0x661b60, sfa_rank = 1, sfa_elttype = 1,
>      sfa_self = 0x10189388, sfa_adjustable = 4, sfa_offset = 0,
> sfa_dim = 2048,
>      sfa_dims = 0xd}, lfa = {t = 13 '\r', flag = 0 '\0', s = 0 '\0',
>      m = 0 '\0', lfa_displaced = 0x661b60, lfa_rank = 1, lfa_elttype = 1,
>      lfa_self = 0x10189388, lfa_adjustable = 4, lfa_offset = 0,
> lfa_dim = 2048,
>      lfa_dims = 0xd}}
> (gdb)
> 
> 
> 
> 
> Mike Thomas wrote:
> 
> > Hi all.
> > Dave and I have each had trouble in the ANSI test with universe.lsp
> > on high optimisation.
> > By a process of elimination I found the site of the problem in the
> > defparameter *characters* declaration at the error call which, when
> > replaced with (print "error") (and supplemented with a print of the
> > loop parameter) actually does print an error message rather than
> > barfing:
> > ================================================
> > (defun try-to-read-chars (&rest namelist)
> >   (loop
> >     for name in namelist append
> >     (handler-case
> >         (list (read-from-string
> >            (concatenate 'string "\#\\" name)))
> >       (error () nil))))
> > (defparameter *characters*
> >     (remove-duplicates
> >      `(#\Newline
> >        #\Space
> >        ,@(try-to-read-chars "Rubout"
> >                 "Page"
> >                 "Tab"
> >                 "Backspace"
> >                 "Return"
> >                 "Linefeed"
> >                 "Null")
> >        #\a #\A #\0 #\9 #\. #\( #\) #\[ #\]
> >        )))
> > ================================================
> > The error message:
> > ================================================
> > Loading ansi-aux-macros.o
> > start address -T 107f2680 Finished loading ansi-aux-macros.o
> > Loading universe.lsp
> > "#\\Rubout"
> > "#\\Page"
> > "#\\Tab"
> > "#\\Backspace"
> > "#\\Return"
> > "#\\Linefeed"
> > "#\\Null"
> > Error in READ-FROM-STRING [or a callee]: "NULL" is an illegal
> > character name.
> > ================================================
> > It's 9.30 at night and I've been going since 3.30 this morning (not
> > all on programming of course) so I don't propose to chase this
> > problem now or tomorrow, but if someone can take the baton it would
> > be appreciated.
> > There are really two problems here:
> > 1. the Null character error message and
> > 2. the fact that error barfs in that location (it doesn't if just
> > typed on the command line).
> > Cheers
> > Mike Thomas.
> >
> 
> 
> 
> _______________________________________________
> Gcl-devel mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/gcl-devel
> 
> 
> 

-- 
Camm Maguire                                            address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens."  --  Baha'u'llah




reply via email to

[Prev in Thread] Current Thread [Next in Thread]