Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Apr 2004 00:05:20 -0400
From:      Kaarthik Sivakumar <kaarthik@comcast.net>
To:        ports@freebsd.org, krion@FreeBSD.org
Subject:   devel/libidn: warning when freeing memory
Message-ID:  <86u0zgipdr.fsf@comcast.net>

next in thread | raw e-mail | index | archive | help
When idn is run, it prints the following message for any string given
to it:

  idn in free(): error: junk pointer, too high to make sense

After setting MALLOC_OPTIONS to A and compiling libidn with '-g', I
got the following backtrace:

,----
| (gdb) run
| Starting program: /usr/home/programs/libidn-0.4.2/src/.libs/idn
| libidn 0.4.2
| Copyright 2002, 2003, 2004 Simon Josefsson.
| GNU Libidn comes with NO WARRANTY, to the extent permitted by law.
| You may redistribute copies of GNU Libidn under the terms of
| the GNU Lesser General Public License.  For more information
| about these matters, see the file named COPYING.LIB.
| Type each input string on a line by itself, terminated by a newline character.
| test this string
| idn in free(): error: junk pointer, too high to make sense
| 
| Program received signal SIGABRT, Aborted.
| 0x281f1d4f in kill () from /lib/libc.so.5
| (gdb) bt
| #0  0x281f1d4f in kill () from /lib/libc.so.5
| #1  0x281e67f8 in raise () from /lib/libc.so.5
| #2  0x2825ef02 in abort () from /lib/libc.so.5
| #3  0x2825d67e in tcflow () from /lib/libc.so.5
| #4  0x2825d6ab in tcflow () from /lib/libc.so.5
| #5  0x2825e1d8 in tcflow () from /lib/libc.so.5
| #6  0x2825e420 in free () from /lib/libc.so.5
| #7  0x08049c1f in main (argc=1, argv=0xbfbfe9f0) at idn.c:381
| #8  0x08048c62 in _start ()
| (gdb) fr 7
| #7  0x08049c1f in main (argc=1, argv=0xbfbfe9f0) at idn.c:381
| 381                   free (r);
| (gdb) l
| 376                                argv[0], rc);
| 377                       free (q);
| 378                       return 1;
| 379                     }
| 380
| 381                   free (r);
| 382                 }
| 383     #endif
| 384
| 385               if (args_info.debug_given)
| (gdb) p r
| $1 = 0x6f732e <Error reading address 0x6f732e: Bad address>
| (gdb) 
`----

I tried debugging but I couldnt figure out what was wrong. The address
seems low for stack addresses, but it is obviously high for a heap
address.

Thanks

kaarthik




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?86u0zgipdr.fsf>