gcl-devel
[Top][All Lists]
Advanced

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

Re: [Gcl-devel] Re: possible GCL/Windows compiler bug


From: Camm Maguire
Subject: Re: [Gcl-devel] Re: possible GCL/Windows compiler bug
Date: 14 Oct 2004 17:09:50 -0400
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2

Greetings, and thanks again for the feedback!

Matt Kaufmann <address@hidden> writes:

> Hi, Camm --
> 
> OK, I've tried to carry out your additional instructions, and had limited
> success.  Please see below.
> 
>    Cc: address@hidden, address@hidden
>    From: Camm Maguire <address@hidden>
>    Date: 14 Oct 2004 10:10:38 -0400
>    User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2
>    Content-Type: text/plain; charset=us-ascii
>    X-SpamAssassin-Status: No, hits=-2.6 required=5.0
>    X-UTCS-Spam-Status: No, hits=-342 required=180
> 
>    Greetings, and thanks Matt for the very useful debugging info.  We
>    should be close now.
> 
>    I can correlate your assembler outputs just fine.  Unfortunately, gdb
>    truncated the bit of the output we need to see what is going on:
> 
>    Program received signal SIGSEGV, Segmentation fault.
>    0x102dcbbc in ?? ()
>    (gdb) p/x *(char *)address@hidden
>    $1 = {0x55, 0x89, 0xe5, 0x57, 0x56, 0x53, 0x83, 0xec, 0xc, 0x8b, 0x35, 
> 0x0, 
>      0x68, 0x5a, 0x0, 0x8d, 0x5e, 0xc, 0x3b, 0x1d, 0x50, 0x6d, 0x5a, 0x0, 
> 0x8b, 
>      0x7d, 0xc, 0x89, 0x1d, 0x0, 0x68, 0x5a, 0x0, 0xf, 0x83, 0xcd, 0x0, 0x0, 
> 0x0, 
>      0x8b, 0x15, 0x40, 0xcc, 0x2d, 0x10, 0x81, 0x7a, 0x4, 0x50, 0x2, 0x54, 
> 0x0, 
>      0xf, 0x84, 0x8e, 0x0, 0x0, 0x0, 0x68, 0x50, 0x2, 0x54, 0x0, 0x68, 0x50, 
> 0x2, 
>      0x54, 0x0, 0x57, 0xff, 0x75, 0x8, 0xff, 0x15, 0x6c, 0xcc, 0x2d, 0x10, 
> 0x89, 
>      0x4, 0x24, 0x89, 0xc3, 0x8b, 0x3d, 0x84, 0x5, 0x63, 0x0, 0xff, 0x15, 
> 0x68, 
>      0xcc, 0x2d, 0x10, 0x83, 0xc4, 0x10, 0x3d, 0x50, 0x2, 0x54, 0x0, 0xc7, 
> 0x45, 
>      0xf0, 0x90, 0x6b, 0x5a, 0x0, 0x74, 0x38, 0x83, 0xec, 0xc, 0x57, 0xff, 
> 0x15, 
>      0x64, 0xcc, 0x2d, 0x10, 0xff, 0x75, 0x10, 0x50, 0xff, 0x35, 0x48, 0xcc, 
>      0x2d, 0x10, 0x6a, 0x3, 0xe8, 0x19, 0x92, 0x15, 0xf0, 0x83, 0xc4, 0x1c, 
> 0x50, 
>      0xff, 0x75, 0xf0, 0x6a, 0x2, 0xe8, 0x7, 0x91, 0x15, 0xf0, 0x89, 0x35, 
> 0x0, 
>      0x68, 0x5a, 0x0, 0x8d, 0x65, 0xf4, 0x5b, 0x5e, 0x5f, 0xc9, 0xc3, 0x90, 
> 0x83, 
>      0xec, 0xc, 0x53, 0xff, 0x15, 0x64, 0xcc, 0x2d, 0x10, 0x5a, 0x59, 0x50, 
> 0xff, 
>      0x35, 0x44, 0xcc, 0x2d, 0x10, 0xe8, 0x70, 0x7b, 0x12, 0xf0, 0x89, 0x45, 
>      0xf0, 0x83, 0xc4, 0x10, 0xeb, 0xa8...}
> 
>    The ... at the end hides the location of the possible corruption.
>    0x102dcbbc-0x102dcaa0=0x11c=284, so 'p/x *((char *)0x102dcbbc-16)@32'
>    here should do the trick.
> 
> Here is a log.  I think it gives you ask for above.
> 
> gdb ./custom-gcl-saved_acl2.gcl.exe
> GNU gdb 5.2.1
> Copyright 2002 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-mingw32"...
> (gdb) r
> Starting program: C:\matt\acl2\v2-9/./custom-gcl-saved_acl2.gcl.exe 
> 
> Program received signal SIGSEGV, Segmentation fault.
> 0x102dcbbc in ?? ()
> (gdb) p/x *(char *)address@hidden
> $1 = {0x55, 0x89, 0xe5, 0x57, 0x56, 0x53, 0x83, 0xec, 0xc, 0x8b, 0x35, 0x0, 
>   0x68, 0x5a, 0x0, 0x8d, 0x5e, 0xc, 0x3b, 0x1d, 0x50, 0x6d, 0x5a, 0x0, 0x8b, 
>   0x7d, 0xc, 0x89, 0x1d, 0x0, 0x68, 0x5a, 0x0, 0xf, 0x83, 0xcd, 0x0, 0x0, 
> 0x0, 
>   0x8b, 0x15, 0x40, 0xcc, 0x2d, 0x10, 0x81, 0x7a, 0x4, 0x50, 0x2, 0x54, 0x0, 
>   0xf, 0x84, 0x8e, 0x0, 0x0, 0x0, 0x68, 0x50, 0x2, 0x54, 0x0, 0x68, 0x50, 
> 0x2, 
>   0x54, 0x0, 0x57, 0xff, 0x75, 0x8, 0xff, 0x15, 0x6c, 0xcc, 0x2d, 0x10, 0x89, 
>   0x4, 0x24, 0x89, 0xc3, 0x8b, 0x3d, 0x84, 0x5, 0x63, 0x0, 0xff, 0x15, 0x68, 
>   0xcc, 0x2d, 0x10, 0x83, 0xc4, 0x10, 0x3d, 0x50, 0x2, 0x54, 0x0, 0xc7, 0x45, 
>   0xf0, 0x90, 0x6b, 0x5a, 0x0, 0x74, 0x38, 0x83, 0xec, 0xc, 0x57, 0xff, 0x15, 
>   0x64, 0xcc, 0x2d, 0x10, 0xff, 0x75, 0x10, 0x50, 0xff, 0x35, 0x48, 0xcc, 
>   0x2d, 0x10, 0x6a, 0x3, 0xe8, 0x19, 0x92, 0x15, 0xf0, 0x83, 0xc4, 0x1c, 
> 0x50, 
>   0xff, 0x75, 0xf0, 0x6a, 0x2, 0xe8, 0x7, 0x91, 0x15, 0xf0, 0x89, 0x35, 0x0, 
>   0x68, 0x5a, 0x0, 0x8d, 0x65, 0xf4, 0x5b, 0x5e, 0x5f, 0xc9, 0xc3, 0x90, 
> 0x83, 
>   0xec, 0xc, 0x53, 0xff, 0x15, 0x64, 0xcc, 0x2d, 0x10, 0x5a, 0x59, 0x50, 
> 0xff, 
>   0x35, 0x44, 0xcc, 0x2d, 0x10, 0xe8, 0x70, 0x7b, 0x12, 0xf0, 0x89, 0x45, 
>   0xf0, 0x83, 0xc4, 0x10, 0xeb, 0xa8...}
> (gdb) p/x *((char *)0x102dcbbc-16)@32
> $2 = {0x8, 0x6a, 0x1, 0x68, 0x64, 0xcc, 0x2d, 0x10, 0xff, 0x35, 0x54, 0xcc, 
>   0x2d, 0x10, 0xe8, 0xe9, 0x2, 0x15, 0xf0, 0xc9, 0xc3, 0x8d, 0x76, 0x0, 0x55, 
>   0x89, 0xe5, 0x8d, 0x55, 0xc, 0x83, 0xec}

Great, so this does look like a bogus address.

> (gdb) c
> Continuing.
> 
> Program received signal SIGSEGV, Segmentation fault.
> 0x102dcbbc in ?? ()
> (gdb) 
> 
>    After printing this out, try the following:
>    (gdb) c
>    >>:q
>    >(load "gazonk520.o")
>    >l
>    (gdb) 'p/x *((char *)<new_start_address_output_above>+284-16)@32'
> 
> Unfortunately, all that "c" did above was throw me back into gdb.  I couldn't
> submit ":q" to the running ACL2:
> 

So please rerun from gdb ('r'), and load the .o before trigerring the
error sequence, which as your previous email indicated, should make
the error go away.  Find the start address of the .o, Control-C l at
the lisp prompt to return to gdb, and print out the correct code with
'p/x *((char *)<new_start_address_output_above>+284-16)@32'.

>    >From your dumps, we see there is a problem in the code doing the call
>    to the external function reverse:
> 
>    static object  LnkTLI5(object first,...){object V1;va_list 
> ap;va_start(ap,first);V1=call_proc_new(VV[5],(void **)(void 
> *)&LnkLI5,1,first,ap);va_end(ap);return V1;} /* REVERSE */
> 
>    00000100 <_LnkTLI5>:
>     100:      55                      push   %ebp
>     101:      89 e5                   mov    %esp,%ebp
>     103:      8d 55 0c                lea    0xc(%ebp),%edx
>     106:      83 ec 14                sub    $0x14,%esp
>     109:      52                      push   %edx
>     10a:      ff 75 08                pushl  0x8(%ebp)
>     10d:      6a 01                   push   $0x1
>     10f:      68 24 00 00 00          push   $0x24
>     114:      ff 35 14 00 00 00       pushl  0x14
>     11a:      e8 00 00 00 00          call   11f <_LnkTLI5+0x1f>
>     11f:      c9                      leave  
>     120:      c3                      ret    
>     121:      8d 76 00                lea    0x0(%esi),%esi
> 
>    The above disassembly is not yet relocated.  The 'p/x' gdb command
>    above will show how it has been relocated.
> 
>    The lack of idempotency tells me that it is likely that the loader
>    itself is ok, but that something later on is trashing the code at this
>    point.  So what we eventually want to do is run the (presumably acl2
>    build sequence) steps that first loaded this file under gdb, breaking
>    at fasload, and conditionalizing this break to only stop at
>    gazonk520.  We'll step through the function, 'p/x *((char
>    *)0x102dcbbc-16)@32' the code after it is first relocated to make sure
>    it is correct, then set a hardware watchpoint to stop when this
>    location is written to.  This should let us know definitively what is
>    going on.
> 
> So at this point, is it looking like it's not an ACL2 issue?  It would be good
> not to hold up the ACL2 release this Saturday if ACL2 isn't broken here.

It could very well be a gcl issue.  But until we find what is stepping
on the code, it is always possible that some bit of compiled lisp
assumes some arg is of one type, writes to it without an explicit type
check, which when compiled with safety 0 (the default) and passed say
a fixnum can write pretty much anywhere in memory.

This brings to mind a possible gcl improvement.  Binary code loaded
like this should be mprotected read-only regardless of the state of
sgc.  Then we'd get a simple fault when the offending code attempts to
trash the instructions.

> 
>    If you don't have gcl compiled with debugging yet, we won't be able to
>    conditionalize a fasload break, so we'll set the hardware watchpoint
>    up front, stopping once when the code is first loaded, and then a
>    second time when it is trashed.  This watchpoint can only be set when
>    the memory area in question is first allocated.  We might be so lucky
>    that this is so when gcl is first fired up.  We know we can set the
>    watch when heap_end > 0x102dcbbc.  So in the absence of gcl
>    --enable-debug, perhaps the following will do the trick.
> 
>    gdb saved_gcl
>    (gdb) b main
>    (gdb) r
>    (breakpoint 1)
>    (gdb) p/x heap_end
>    (gdb) watch heap_end
>    (gdb) cond 2 heap_end > 0x102dcbbc
>    (gdb) c
>    > (do the acl2 build sequence)
>    (breakpoint 2)
>    (gdb) disable 2
>    (gdb) p/x *(char *)address@hidden
>    (gdb) watch *(int *)0x102dcbbc
>    (gdb) p/x *((char *)0x102dcbbc-16)@32
>    (gdb) display/x *((char *)0x102dcbbc-16)@32
>    (gdb) c
>    (breakpoint 3)
>    (gdb) (code displayed on first load, send me this)
>    (gdb) c
>    (breakpoint 3)
>    (gdb) (code displayed when trashed, send me this)
>    (gdb) bt (send me this, as well as lisp output right above this)
> 
> I tried the above, but it seemed that the break happened way too early (ACL2
> wasn't even out of axioms.lisp yet, and the problem occurs when processing
> the next source file, basis.lisp).  Here is a log, perhaps with more
> information than you wanted.
> 
> gdb gcl/my-gcl.exe
> GNU gdb 5.2.1
> Copyright 2002 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-mingw32"...
> (gdb) b main
> Breakpoint 1 at 0x402342
> (gdb) r
> Starting program: C:\matt\acl2\v2-9/gcl/my-gcl.exe 
> 
> Breakpoint 1, 0x00402342 in main ()
> (gdb) p/x heap_end
> $1 = 0x0
> (gdb) watch heap_end
> Hardware watchpoint 2: {<data variable, no debug info>} 5508064
> (gdb) cond 2 heap_end > 0x102dcbbc
> (gdb) c
> Continuing.
> Hardware watchpoint 2: {<data variable, no debug info>} 5508064
> 
> Old value = 271314944
> New value = 271437824
> 0x00404022 in alloc_page ()
> (gdb) disable 2
> (gdb) p/x *(char *)address@hidden
> $2 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}
> (gdb) watch *(int *)0x102dcbbc
> Hardware watchpoint 3: *(int *) 271436732
> (gdb) p/x *((char *)0x102dcbbc-16)@32
> $3 = {0x0 <repeats 32 times>}
> (gdb) display/x *((char *)0x102dcbbc-16)@32
> 1: /x *((char *) 271436732 - 16) @ 32 = {0x0 <repeats 32 times>}
> (gdb) c
> Continuing.
> Hardware watchpoint 3: *(int *) 271436732
> 
> Old value = 0
> New value = 99
> 0x77c3dc94 in _libwsock32_a_iname ()
> 1: /x *((char *) 271436732 - 16) @ 32 = {0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 
>   0x20, 0x56, 0x56, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 
>   0x0 <repeats 15 times>}
> (gdb) c
> Continuing.
> Hardware watchpoint 3: *(int *) 271436732
> 
> Old value = 99
> New value = 29795
> 0x77c3dc94 in _libwsock32_a_iname ()
> 1: /x *((char *) 271436732 - 16) @ 32 = {0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 
>   0x20, 0x56, 0x56, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 
>   0x0 <repeats 14 times>}
> (gdb) bt
> #0  0x77c3dc94 in _libwsock32_a_iname ()
> #1  0x106d8ccc in ?? ()
> #2  0x0041fd8e in writec_stream ()
> #3  0x00421562 in writestr_stream ()
> #4  0x004546ef in princ_str ()
> #5  0x0048458b in LI6 ()
> #6  0x0041acab in quick_call_sfun ()
> #7  0x00419953 in eval ()
> #8  0x00455d39 in Fprogn ()
> #9  0x0041129a in Fcatch ()
> #10 0x00419a4e in eval ()
> #11 0x00455d39 in Fprogn ()
> #12 0x00419a4e in eval ()
> #13 0x00411476 in Funwind_protect ()
> #14 0x00419a4e in eval ()
> #15 0x00455d39 in Fprogn ()
> #16 0x004344ca in Flet ()
> #17 0x00419a4e in eval ()
> #18 0x00455d39 in Fprogn ()
> #19 0x004344ca in Flet ()
> #20 0x00419a4e in eval ()
> #21 0x00455d39 in Fprogn ()
> #22 0x00419a4e in eval ()
> #23 0x00411476 in Funwind_protect ()
> #24 0x00419a4e in eval ()
> #25 0x00455d39 in Fprogn ()
> #26 0x004344ca in Flet ()
> #27 0x00419a4e in eval ()
> #28 0x004184c3 in funcall ()
> #29 0x00419953 in eval ()
> #30 0x00415785 in Fwhen ()
> #31 0x00419a4e in eval ()
> #32 0x00455d39 in Fprogn ()
> #33 0x00419a4e in eval ()
> #34 0x00411476 in Funwind_protect ()
> #35 0x00419a4e in eval ()
> #36 0x00455d39 in Fprogn ()
> #37 0x004344ca in Flet ()
> #38 0x00419a4e in eval ()
> #39 0x00455d39 in Fprogn ()
> #40 0x0043462e in FletA ()
> #41 0x00419a4e in eval ()
> #42 0x00455d39 in Fprogn ()
> #43 0x00419a4e in eval ()
> #44 0x00411476 in Funwind_protect ()
> #45 0x00419a4e in eval ()
> #46 0x00455d39 in Fprogn ()
> #47 0x004344ca in Flet ()
> #48 0x00419a4e in eval ()
> #49 0x004184c3 in funcall ()
> #50 0x00442329 in IapplyVector ()
> #51 0x00419f35 in fLapply ()
> #52 0x0042c4aa in c_apply_n ()
> #53 0x004421c1 in IapplyVector ()
> #54 0x0041897a in funcall ()
> #55 0x00419953 in eval ()
> #56 0x0041a83e in Ieval ()
> #57 0x0040b5c5 in Fsetq ()
> #58 0x00419a4e in eval ()
> #59 0x00455d39 in Fprogn ()
> #60 0x00419a4e in eval ()
> #61 0x00455bbf in Ftagbody ()
> #62 0x00419a4e in eval ()
> #63 0x0041085d in Fblock ()
> #64 0x00419a4e in eval ()
> #65 0x004184c3 in funcall ()
> #66 0x00419953 in eval ()
> #67 0x004102df in let_bind ()
> #68 0x004344b6 in Flet ()
> #69 0x00419a4e in eval ()
> #70 0x00415995 in Funless ()
> #71 0x00419a4e in eval ()
> #72 0x00455d39 in Fprogn ()
> #73 0x004344ca in Flet ()
> #74 0x00419a4e in eval ()
> #75 0x004151c8 in Fcond ()
> #76 0x00419a4e in eval ()
> #77 0x004184c3 in funcall ()
> #78 0x00419953 in eval ()
> #79 0x0041a93d in fLeval ()
> #80 0x0042c4aa in c_apply_n ()
> #81 0x0044246f in Iinvoke_c_function_from_value_stack ()
> #82 0x0041a8f5 in Leval ()
> #83 0x1051a392 in ?? ()
> #84 0x1051a955 in ?? ()
> #85 0x0041acc0 in quick_call_sfun ()
> #86 0x00418912 in funcall ()
> #87 0x102b0ee6 in ?? ()
> #88 0x102a5624 in ?? ()
> #89 0x103d77f1 in ?? ()
> #90 0x1043163b in ?? ()
> #91 0x10436e21 in ?? ()
> #92 0x0041acab in quick_call_sfun ()
> #93 0x102ec9b7 in ?? ()
> #94 0x102ee171 in ?? ()
> #95 0x102ee381 in ?? ()
> #96 0x102eef45 in ?? ()
> #97 0x102f5743 in ?? ()
> #98 0x104be86a in ?? ()
> #99 0x104be954 in ?? ()
> #100 0x0042d094 in call_proc_new ()
> #101 0x104c71ef in ?? ()
> #102 0x104bec0c in ?? ()
> #103 0x0042d094 in call_proc_new ()
> #104 0x104c7183 in ?? ()
> #105 0x104c014e in ?? ()
> #106 0x0042d094 in call_proc_new ()
> #107 0x105223d7 in ?? ()
> #108 0x1051dbd3 in ?? ()
> #109 0x00419968 in eval ()
> #110 0x0041a93d in fLeval ()
> #111 0x0042c4aa in c_apply_n ()
> #112 0x004421c1 in IapplyVector ()
> #113 0x0041897a in funcall ()
> #114 0x00419953 in eval ()
> #115 0x004184c3 in funcall ()
> #116 0x00419953 in eval ()
> #117 0x0041a93d in fLeval ()
> #118 0x0042c4aa in c_apply_n ()
> #119 0x004421c1 in IapplyVector ()
> #120 0x0041897a in funcall ()
> #121 0x0051e95e in LI1 ()
> #122 0x0041ac32 in quick_call_sfun ()
> #123 0x00418912 in funcall ()
> #124 0x00442329 in IapplyVector ()
> #125 0x00419e3d in fLfuncall ()
> #126 0x0042c4aa in c_apply_n ()
> #127 0x004421c1 in IapplyVector ()
> #128 0x0041897a in funcall ()
> #129 0x00419953 in eval ()
> #130 0x004184c3 in funcall ()
> #131 0x00419953 in eval ()
> #132 0x004184c3 in funcall ()
> #133 0x004027a1 in main ()
> (gdb) c
> Continuing.
> Hardware watchpoint 3: *(int *) 271436732
> 
> Old value = 29795
> New value = 2126947
> 0x77c3dc94 in _libwsock32_a_iname ()
> 1: /x *((char *) 271436732 - 16) @ 32 = {0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 
>   0x20, 0x56, 0x56, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 
>   0x20, 0x0 <repeats 13 times>}
> (gdb) bt
> #0  0x77c3dc94 in _libwsock32_a_iname ()
> #1  0x106d8ccc in ?? ()
> #2  0x0041fd8e in writec_stream ()
> #3  0x00421562 in writestr_stream ()
> #4  0x004546ef in princ_str ()
> #5  0x0048458b in LI6 ()
> #6  0x0041acab in quick_call_sfun ()
> #7  0x00419953 in eval ()
> #8  0x00455d39 in Fprogn ()
> #9  0x0041129a in Fcatch ()
> #10 0x00419a4e in eval ()
> #11 0x00455d39 in Fprogn ()
> #12 0x00419a4e in eval ()
> #13 0x00411476 in Funwind_protect ()
> #14 0x00419a4e in eval ()
> #15 0x00455d39 in Fprogn ()
> #16 0x004344ca in Flet ()
> #17 0x00419a4e in eval ()
> #18 0x00455d39 in Fprogn ()
> #19 0x004344ca in Flet ()
> #20 0x00419a4e in eval ()
> #21 0x00455d39 in Fprogn ()
> #22 0x00419a4e in eval ()
> #23 0x00411476 in Funwind_protect ()
> #24 0x00419a4e in eval ()
> #25 0x00455d39 in Fprogn ()
> #26 0x004344ca in Flet ()
> #27 0x00419a4e in eval ()
> #28 0x004184c3 in funcall ()
> #29 0x00419953 in eval ()
> #30 0x00415785 in Fwhen ()
> #31 0x00419a4e in eval ()
> #32 0x00455d39 in Fprogn ()
> #33 0x00419a4e in eval ()
> #34 0x00411476 in Funwind_protect ()
> #35 0x00419a4e in eval ()
> #36 0x00455d39 in Fprogn ()
> #37 0x004344ca in Flet ()
> #38 0x00419a4e in eval ()
> #39 0x00455d39 in Fprogn ()
> #40 0x0043462e in FletA ()
> #41 0x00419a4e in eval ()
> #42 0x00455d39 in Fprogn ()
> #43 0x00419a4e in eval ()
> #44 0x00411476 in Funwind_protect ()
> #45 0x00419a4e in eval ()
> #46 0x00455d39 in Fprogn ()
> #47 0x004344ca in Flet ()
> #48 0x00419a4e in eval ()
> #49 0x004184c3 in funcall ()
> #50 0x00442329 in IapplyVector ()
> #51 0x00419f35 in fLapply ()
> #52 0x0042c4aa in c_apply_n ()
> #53 0x004421c1 in IapplyVector ()
> #54 0x0041897a in funcall ()
> #55 0x00419953 in eval ()
> #56 0x0041a83e in Ieval ()
> #57 0x0040b5c5 in Fsetq ()
> #58 0x00419a4e in eval ()
> #59 0x00455d39 in Fprogn ()
> #60 0x00419a4e in eval ()
> #61 0x00455bbf in Ftagbody ()
> #62 0x00419a4e in eval ()
> #63 0x0041085d in Fblock ()
> #64 0x00419a4e in eval ()
> #65 0x004184c3 in funcall ()
> #66 0x00419953 in eval ()
> #67 0x004102df in let_bind ()
> #68 0x004344b6 in Flet ()
> #69 0x00419a4e in eval ()
> #70 0x00415995 in Funless ()
> #71 0x00419a4e in eval ()
> #72 0x00455d39 in Fprogn ()
> #73 0x004344ca in Flet ()
> #74 0x00419a4e in eval ()
> #75 0x004151c8 in Fcond ()
> #76 0x00419a4e in eval ()
> #77 0x004184c3 in funcall ()
> #78 0x00419953 in eval ()
> #79 0x0041a93d in fLeval ()
> #80 0x0042c4aa in c_apply_n ()
> #81 0x0044246f in Iinvoke_c_function_from_value_stack ()
> #82 0x0041a8f5 in Leval ()
> #83 0x1051a392 in ?? ()
> #84 0x1051a955 in ?? ()
> #85 0x0041acc0 in quick_call_sfun ()
> #86 0x00418912 in funcall ()
> #87 0x102b0ee6 in ?? ()
> #88 0x102a5624 in ?? ()
> #89 0x103d77f1 in ?? ()
> #90 0x1043163b in ?? ()
> #91 0x10436e21 in ?? ()
> #92 0x0041acab in quick_call_sfun ()
> #93 0x102ec9b7 in ?? ()
> #94 0x102ee171 in ?? ()
> #95 0x102ee381 in ?? ()
> #96 0x102eef45 in ?? ()
> #97 0x102f5743 in ?? ()
> #98 0x104be86a in ?? ()
> #99 0x104be954 in ?? ()
> #100 0x0042d094 in call_proc_new ()
> #101 0x104c71ef in ?? ()
> #102 0x104bec0c in ?? ()
> #103 0x0042d094 in call_proc_new ()
> #104 0x104c7183 in ?? ()
> #105 0x104c014e in ?? ()
> #106 0x0042d094 in call_proc_new ()
> #107 0x105223d7 in ?? ()
> #108 0x1051dbd3 in ?? ()
> #109 0x00419968 in eval ()
> #110 0x0041a93d in fLeval ()
> #111 0x0042c4aa in c_apply_n ()
> #112 0x004421c1 in IapplyVector ()
> #113 0x0041897a in funcall ()
> #114 0x00419953 in eval ()
> #115 0x004184c3 in funcall ()
> #116 0x00419953 in eval ()
> #117 0x0041a93d in fLeval ()
> #118 0x0042c4aa in c_apply_n ()
> #119 0x004421c1 in IapplyVector ()
> #120 0x0041897a in funcall ()
> #121 0x0051e95e in LI1 ()
> #122 0x0041ac32 in quick_call_sfun ()
> #123 0x00418912 in funcall ()
> #124 0x00442329 in IapplyVector ()
> #125 0x00419e3d in fLfuncall ()
> #126 0x0042c4aa in c_apply_n ()
> #127 0x004421c1 in IapplyVector ()
> #128 0x0041897a in funcall ()
> #129 0x00419953 in eval ()
> #130 0x004184c3 in funcall ()
> #131 0x00419953 in eval ()
> #132 0x004184c3 in funcall ()
> #133 0x004027a1 in main ()
> (gdb) 

I think you might be able to keep going.  The watch will be triggered
4 times for each write if its being done 1 char at a time.  You should
be able to eventually get to a break between the start and finish of
the gazonk520.o load.  This piece of memory is apparently used for
some other intermediate memory malloced by winsock.  My guess is that
it is subsequently freed, after which it is later reused for the load
of gazonk520.o.

If you have to manually continue too many times, you can 'ignore 3
500', or something to skip over 500 triggers.  If there are truly too
many of these, we'd likely be better off trying with gcl
--enable-debug, *in a separate location -- not overwriting this
build*, and making sure the error still exists in same.  More likely
than not, though, this will move the location of the error.  While we
have it somewhat cornered, it would be great to pinpoint.

Take care,


> 
>    If you can reproduce with gcl built with --enable-debug, then
> 
> I don't seem to have the gcl sources yet....
> 
>    gdb saved_gcl
>    (gdb) b main
>    (gdb) r
>    (breakpoint 1)
>    (gdb) b sfasl.c:365
>    (gdb) cond 2 strstr(filename,"gazonk520")
>    (gdb) c
>    > (do acl2 build sequence)
>    (breakpoint 2)
>    (gdb) p/x *((char *)0x102dcbbc-16)@32
>    (gdb) display/x *((char *)0x102dcbbc-16)@32
>    (gdb) watch *(int *)0x102dcbbc
>    (gdb) c
>    (breakpoint 3)
>    (gdb) (code displayed when trashed, send me this)
>    (gdb) bt (send me this, as well as lisp output right above this)
> 
>    Thanks for your help with this.  And please excuse the tedium -- I
>    don't have access to one of these machines myself.
> 
>    Take care,
> 
>    -- 
>    Camm Maguire                                               address@hidden
>    ==========================================================================
>    "The earth is but one country, and mankind its citizens."  --  Baha'u'llah
> 
> Feel free to send further instructions.  I'm heading into work shortly, but I
> can do some more tonight.
> 
> -- Matt
> 
> 
> _______________________________________________
> 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]