Re: recent changes to libc on amd64

From: Giorgos Keramidas <keramida_at_ceid.upatras.gr>
Date: Tue, 17 Jan 2006 23:02:39 +0200
On 2006-01-17 21:52, Goran Gajic <ggajic_at_afrodita.rcub.bg.ac.yu> wrote:
> On Tue, 17 Jan 2006, Steve Kargl wrote:
>
> >
> >The problem with Xorg on amd64 is known, and I believe Jason
> >intends to look into the problem when his hardware arrives.
> >The prolem with joe appears to be new.  Can you build libncurses
> >and joe with debugging symbol to get more information?  Can
> >rebuild joe with electric fence?  Also, read the malloc manpage
> >for setting various flags.
> >
> >
>
> Hi,
>
> I have staticly linked joe with ncurses (both build with -g flag)  and got
> this:
>
> # gdb joe
> GNU gdb 6.1.1 [FreeBSD]
> Copyright 2004 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 "amd64-marcel-freebsd"...
> (gdb) run
> Starting program: /usr/ports/editors/joe/work/joe-3.3/joe
> Processing '/usr/local/etc/joe/joerc'...
> Program received signal SIGSEGV, Segmentation fault.
> 0x0000000000440554 in tgoto (
>     string=0x20028f8 <Error reading address 0x20028f8: Bad address>, x=0,
> y=0)
>     at
> /usr/src/lib/libncurses/../../contrib/ncurses/ncurses/tinfo/lib_tgoto.c:4
> 6
> 46          if (string == 0 || *string == '\0') {
> (gdb) where
> #0  0x0000000000440554 in tgoto (
>     string=0x20028f8 <Error reading address 0x20028f8: Bad address>, x=0, y=0)
>     at /usr/src/lib/libncurses/../../contrib/ncurses/ncurses/tinfo/lib_tgoto.c:46

Address 0x20028f8 looks suspiciously similar to cap=0x802000200 from
stack frame #5 here.

> #1  0x000000000041c808 in texec (cap=0x802000200,
>     s=0x20028f8 <Error reading address 0x20028f8: Bad address>, l=0, a0=0,
>     a1=33564920, a2=0, a3=0) at termcap.c:518
> #2  0x000000000041cc54 in tcompile (cap=0x802000200,
>     s=0x20028f8 <Error reading address 0x20028f8: Bad address>, a0=0, a1=0,
>     a2=0, a3=0) at termcap.c:708
> #3  0x000000000040ba15 in kbuild (cap=0x802000200, kmap=0x802ff6de0,
>     seq=0x7fffffffe706 ".kN", bind=0x8020130e0, err=0x7fffffffe6a4,
>     capseq=0x0, seql=0) at kbd.c:246
> #4  0x000000000040bbb0 in kadd (cap=0x1, kmap=0x20028f8, seq=0x0, bind=0x0)
>     at kbd.c:297

Here, in frame #4, is the first instance of the address that is clipped
from 0x802000200 to something that can fit in an `int'.

> #5  0x0000000000412f3a in procrc (cap=0x802000200,
>     name=0x802002b58 "/usr/local/etc/joe/joerc") at rc.c:1164

It looks like the file that implements procrc() doesn't have a visible
prototype of kadd().

> #6  0x000000000040df06 in main (argc=1, argv=0x7fffffffec58, envv=0x802002b58)
>     at main.c:318
> (gdb)

This looks like a missing prototype somewhere in joe's source tree.
Received on Tue Jan 17 2006 - 20:02:55 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:51 UTC