RT RT/krbdev.mit.edu: Ticket #3087 Double free problems with libcom_err. Signed in as guest.
[Logout]

[Home] [Search] [Configuration]

[Display] [History] [Basics] [Dates] [People] [Links] [Jumbo]

 
 

 The Basics  
Id
3087
Status
open
Worked
0 min
Priority
0/0
Queue
krb5
 

 Keyword Selections  
Component
  • krb5-libs
Version_reported
  • 1.4.1
Version_Fixed
Target_Version
Tags
 

 Relationships  
Depends on:
Depended on by:
Parents:
Children:

Refers to:
Referred to by:
 
 Dates  
Created: Mon Jun 6 15:57:55 2005
Starts: Not set
Started: Not set
Last Contact: Wed Jun 8 20:43:24 2005
Due: Not set
Updated: Tue Jul 5 12:17:09 2005 by D.H.Davis@bath.ac.uk
 

 People  
Owner
 raeburn
Requestors
 D.H.Davis@bath.ac.uk
Cc
 
AdminCc
 
 

 More about D.H.Davis@bath.ac.uk  
Comments about this user:
No comment entered about this user
This user's 25 highest priority tickets:
 

History   Display mode: [Brief headers] [Full headers]
      Mon Jun  6 15:57:57 2005  RT_System - Ticket created    
     
From krb5-bugs-incoming-bounces@PCH.mit.edu  Mon Jun  6 15:57:53 2005
Received: from pch.mit.edu (PCH.MIT.EDU [18.7.21.90]) by krbdev.mit.edu (8.9.3p2)
with ESMTP
	id PAA07474; Mon, 6 Jun 2005 15:57:53 -0400 (EDT)
Received: from pch.mit.edu (pch.mit.edu [127.0.0.1])
	by pch.mit.edu (8.12.8p2/8.12.8) with ESMTP id j56JvKWn013471
	for <krb5-send-pr@krbdev.mit.edu>; Mon, 6 Jun 2005 15:57:20 -0400
Received: from pacific-carrier-annex.mit.edu (PACIFIC-CARRIER-ANNEX.MIT.EDU
	[18.7.21.83])
	by pch.mit.edu (8.12.8p2/8.12.8) with ESMTP id j56GEGWn013208
	for <krb5-bugs-incoming@PCH.mit.edu>; Mon, 6 Jun 2005 12:14:16 -0400
Received: from coppi.bath.ac.uk (coppi.bath.ac.uk [138.38.32.23])
	j56GCCOq029684
	for <krb5-bugs@mit.edu>; Mon, 6 Jun 2005 12:12:12 -0400 (EDT)
Received: from ccsdhd by coppi.bath.ac.uk with local  id 1DfKCx-0005Od-Fx;
	Mon, 06 Jun 2005 17:12:11 +0100
To: krb5-bugs@mit.edu
From: Dennis Davis <D.H.Davis@bath.ac.uk>
X-send-pr-version: 3.99
Message-Id: <E1DfKCx-0005Od-Fx@coppi.bath.ac.uk>
Date: Mon, 06 Jun 2005 17:12:11 +0100
X-Spam-Score: -2.599
X-Spam-Flag: NO
X-Scanned-By: MIMEDefang 2.42
X-Mailman-Approved-At: Mon, 06 Jun 2005 15:57:18 -0400
cc: Dennis Davis <d.h.davis@bath.ac.uk>
Subject: Double free problems with libcom_err.
X-BeenThere: krb5-bugs-incoming@mailman.mit.edu
X-Mailman-Version: 2.1
Precedence: list
Reply-To: Dennis Davis <D.H.Davis@bath.ac.uk>
Sender: krb5-bugs-incoming-bounces@PCH.mit.edu
Errors-To: krb5-bugs-incoming-bounces@PCH.mit.edu


>Submitter-Id:	net
>Originator:	Dennis Davis
>Organization:
	University of Bath
>Confidential:
	no
>Synopsis:
	I see double free problems in libcom_err
>Severity:
	non-critical
>Priority:
	medium
>Category:
	krb5-libs
>Class:
	sw-bug
>Release:	1.4.1
>Environment:

	Machine: anquetil.bath.ac.uk
	os: OpenBSD3.7
	Target: Working build of krb5-1.4.1
System: OpenBSD anquetil.bath.ac.uk 3.7 EXIM_SERVER#0 i386


>Description:

I've configured and built krb5-1.4.1 with:

LDFLAGS=-lpthread \
CC=cc CFLAGS="-O2 -g -fPIC" \
           ./configure --prefix=/kerberosV \
            --enable-dns-for-realm --with-krb4 \
            --with-tcl=/usr/local --disable-shared \
            --enable-static --disable-ipv6 \
            --enable-thread-support

Running kinit, klist, kadmin, telnet etc all produce messages
similar to:

klist in free(): error: chunk is already free
Abort trap

Turning the abort into a warning gives:

anquetil.bath.ac.uk ?// MALLOC_OPTIONS=a /kerberosV/bin/klist
klist: No credentials cache found (ticket cache FILE:/tmp/krb5cc_526)


Kerberos 4 ticket cache: /tmp/tkt526
klist: You have no tickets cached
klist in free(): warning: chunk is already free
klist in free(): warning: chunk is already free
klist in free(): warning: chunk is already free
klist in free(): warning: chunk is already free
klist in free(): warning: chunk is already free
klist in free(): warning: chunk is already free
anquetil.bath.ac.uk ?//

Note that the command always seems to work OK and the error seems to
occur as part of the cleanup before the command exits.  This is most
noticable with the telnet command.  The failure occurs after the
connection to the remote site has been closed.

Running a simple program under gdb gives:


a.out in free(): error: chunk is already free

Program received signal SIGABRT, Aborted.
0x0e16b71d in kill () from /usr/lib/libc.so.34.2
(gdb) bt
#0  0x0e16b71d in kill () from /usr/lib/libc.so.34.2
#1  0x0e19830f in abort () from /usr/lib/libc.so.34.2
#2  0x0e16fb71 in execve () from /usr/lib/libc.so.34.2
#3  0x00000002 in ?? ()
#4  0xcfbf82bc in ?? ()
#5  0x00000004 in ?? ()
#6  0x0a680027 in fsync () from /usr/lib/libpthread.so.6.1
#7  0x0e16fc1f in execve () from /usr/lib/libc.so.34.2
#8  0x2e126f80 in _des_bits8 () from /usr/lib/libc.so.34.2
#9  0x2e130ec8 in optopt () from /usr/lib/libc.so.34.2
#10 0xcfbf8334 in ?? ()
#11 0x0e16fb82 in execve () from /usr/lib/libc.so.34.2
#12 0xcfbf8324 in ?? ()
#13 0x0e156e44 in __errno () from /usr/lib/libc.so.34.2
#14 0x0e17072c in execve () from /usr/lib/libc.so.34.2
#15 0x2e126f80 in _des_bits8 () from /usr/lib/libc.so.34.2
#16 0x0000000f in ?? ()
#17 0x3c018000 in ?? ()
#18 0x0e1706c1 in execve () from /usr/lib/libc.so.34.2
#19 0x00000000 in ?? ()
#20 0x2e133f1c in ?? () from /usr/lib/libc.so.34.2
#21 0xcfbf83a4 in ?? ()
#22 0x0e1708a9 in free () from /usr/lib/libc.so.34.2
#23 0x0e1708a9 in free () from /usr/lib/libc.so.34.2
#24 0x1c05d9b7 in remove_error_table (et=0x3c0110e0) at error_message.c:340
#25 0x1c0240e3 in profile_library_finalizer () at prof_file.c:63
#26 0x1c0027c8 in __register_frame_info ()
#27 0x1c05eb85 in __fini ()
#28 0x0e17116a in exit () from /usr/lib/libc.so.34.2
#29 0x1c002759 in ___start ()
#30 0x1c0026bf in _start ()

So the problem appears to be in lines 334 to 342 of
utils/et/error_message.c:

  334       /* Remove the first occurrance we can find.  Prefer dynamic
  335          entries, but if there are none, check for a static one too.  */
  336       for (del = &et_list_dynamic; *del; del = &(*del)->next)
  337           if ((*del)->table->base == et->base) {
  338               /*@only@*/ struct dynamic_et_list *old = *del;
  339               *del = old->next;
  340               free (old);
  341               return k5_mutex_unlock(&et_list_lock);
  342           }

>How-To-Repeat:

	Happens every time I use klist, kinit, etc.
>Fix:

For the moment I'm using a very Quick'N'Dirty fix.  I've just removed
the above lines from utils/et/error_message.c.  I appreciate that
this is hardly ideal.  But it seems to work for now.


Download (untitled) 5.4k
      Mon Jun  6 15:58:01 2005  RT_System - Component component added    
      Wed Jun  8 19:18:55 2005  raeburn - Component component changed to krb5-libs    
      Wed Jun  8 19:18:56 2005  raeburn - Version_reported 1.4.1 added    
      Wed Jun  8 20:43:21 2005  raeburn - Given to raeburn    
      Wed Jun  8 20:43:22 2005  raeburn - Correspondence added    
     
> Running kinit, klist, kadmin, telnet etc all produce messages
> similar to:
>
> klist in free(): error: chunk is already free
> Abort trap

I've tried static builds on x86-linux, and can't find any problems using valgrind or
electric
fence.  I've also tried alpha-netbsd2.0 with shared libraries and enabled debugging
options
in the native malloc, still no hints.

> anquetil.bath.ac.uk ?// MALLOC_OPTIONS=a /kerberosV/bin/klist
> klist: No credentials cache found (ticket cache FILE:/tmp/krb5cc_526)
>
>
> Kerberos 4 ticket cache: /tmp/tkt526
> klist: You have no tickets cached
> klist in free(): warning: chunk is already free
> klist in free(): warning: chunk is already free
> klist in free(): warning: chunk is already free
> klist in free(): warning: chunk is already free
> klist in free(): warning: chunk is already free
> klist in free(): warning: chunk is already free
> anquetil.bath.ac.uk ?//
>
> Note that the command always seems to work OK and the error seems to
> occur as part of the cleanup before the command exits.  This is most
> noticable with the telnet command.  The failure occurs after the
> connection to the remote site has been closed.
>
> Running a simple program under gdb gives:
>
>
> a.out in free(): error: chunk is already free
>
> Program received signal SIGABRT, Aborted.
> 0x0e16b71d in kill () from /usr/lib/libc.so.34.2
> (gdb) bt
> #0  0x0e16b71d in kill () from /usr/lib/libc.so.34.2
> #1  0x0e19830f in abort () from /usr/lib/libc.so.34.2
> #2  0x0e16fb71 in execve () from /usr/lib/libc.so.34.2
> #3  0x00000002 in ?? ()
> #4  0xcfbf82bc in ?? ()

This stack trace is pretty clearly corrupted.

Could you try running the program under GDB, with a breakpoint in remove_error_table,
and
each time it's hit, print out the argument passed in and the stack trace?

I'd also be interested in seeing the order in which profile_library_finalizer and
com_err_terminate get called (profile_library_finalizer should be first), and the
value of the
variable 'terminated' in error_message.c when the problem happens.


Download (untitled) 2k
      Wed Jun  8 21:04:52 2005  raeburn - Subject changed from to Double free problems with libcom_err.    
      Tue Jul  5 12:17:06 2005  D.H.Davis@bath.ac.uk - Comments added    
     
Date: Tue, 5 Jul 2005 17:16:37 +0100 (BST)
From: Dennis Davis <D.H.Davis@bath.ac.uk>
To: Ken Raeburn via RT <rt-comment@krbdev.mit.edu>
Cc: D.H.Davis@bath.ac.uk
Subject: Re: [krbdev.mit.edu #3087] 
RT-Send-Cc: 

>Date: Wed, 8 Jun 2005 20:43:23 -0400 (EDT)
>Message-Id: <rt-3087-14175.17.5894218187344@krbdev.mit.edu>
>Subject: [krbdev.mit.edu #3087]
>In-Reply-To: <rt-3087@krbdev.mit.edu>
>From: Ken Raeburn via RT <rt-comment@krbdev.mit.edu>
>RT-Ticket: krbdev.mit.edu #3087
>Reply-To: rt-comment@krbdev.mit.edu
>To: D.H.Davis@bath.ac.uk
>
>> Running kinit, klist, kadmin, telnet etc all produce messages
>> similar to:
>>
>> klist in free(): error: chunk is already free
>> Abort trap
>
>I've tried static builds on x86-linux, and can't find any problems
>using valgrind or electric fence.  I've also tried alpha-netbsd2.0
>with shared libraries and enabled debugging options in the native
>malloc, still no hints.
>
>> anquetil.bath.ac.uk ?// MALLOC_OPTIONS=a /kerberosV/bin/klist
>> klist: No credentials cache found (ticket cache FILE:/tmp/krb5cc_526)
>>
>>
>> Kerberos 4 ticket cache: /tmp/tkt526
>> klist: You have no tickets cached
>> klist in free(): warning: chunk is already free
>> klist in free(): warning: chunk is already free
>> klist in free(): warning: chunk is already free
>> klist in free(): warning: chunk is already free
>> klist in free(): warning: chunk is already free
>> klist in free(): warning: chunk is already free
>> anquetil.bath.ac.uk ?//
>>
>> Note that the command always seems to work OK and the error seems to
>> occur as part of the cleanup before the command exits.  This is most
>> noticable with the telnet command.  The failure occurs after the
>> connection to the remote site has been closed.
>>
>> Running a simple program under gdb gives:
>>
>>
>> a.out in free(): error: chunk is already free
>>
>> Program received signal SIGABRT, Aborted.
>> 0x0e16b71d in kill () from /usr/lib/libc.so.34.2
>> (gdb) bt
>> #0  0x0e16b71d in kill () from /usr/lib/libc.so.34.2
>> #1  0x0e19830f in abort () from /usr/lib/libc.so.34.2
>> #2  0x0e16fb71 in execve () from /usr/lib/libc.so.34.2
>> #3  0x00000002 in ?? ()
>> #4  0xcfbf82bc in ?? ()

Apologies for the *long* delay in replying.  I've been sidetracked
by looking at email issues.

>This stack trace is pretty clearly corrupted.
>
>Could you try running the program under GDB, with a breakpoint in
>remove_error_table, and each time it's hit, print out the argument
>passed in and the stack trace?

Done.  The results are appended below.  It's pretty obvious that
I'm getting stack trace corruption.

I note that the last five calls to remove_error_table correspond
to lines 83 to 87 of lib/krb5/krb5_libinit.c:


#if !USE_BUNDLE_ERROR_STRINGS
    remove_error_table(&et_krb5_error_table);
    remove_error_table(&et_kv5m_error_table);
    remove_error_table(&et_kdb5_error_table);
    remove_error_table(&et_asn1_error_table);
    remove_error_table(&et_k524_error_table);
#endif


*but* the pointer passed as the argument appears to be the same
in each case:


#0  remove_error_table (et=0x3c010770) at error_message.c:322
                           ^^^^^^^^^^
                           |||||||||| same pointer in the last 5 calls


Is this reasonable?

>I'd also be interested in seeing the order in which
>profile_library_finalizer and com_err_terminate get called
>(profile_library_finalizer should be first), and the value of the
>variable 'terminated' in error_message.c when the problem happens.

I've printed out the value of 'terminated' whenever it seems
possible.  The order in which profile_library_finalizer and
com_err_terminate are called seems reversed.  It's com_err_terminate
that's called first and then profile_library_finalizer.

I note that I can circumvent this problem by configuring with:


LDFLAGS=-lpthread \
CC=cc CFLAGS="-O2 -g -fPIC -DUSE_BUNDLE_ERROR_STRINGS=1" \

...


Is this a reasonable thing to do?  It certainly seems to work!


Script started on Tue Jul  5 14:36:39 2005
merckx.bath.ac.uk ?// MALLOC_OPTIONS=a gdb a.out
GNU gdb 6.3
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 "i386-unknown-openbsd3.7"...
(gdb) break remove_error_table
Breakpoint 1 at 0x1c05d78d: file error_message.c, line 322.
(gdb) break com_err_terminate
Breakpoint 2 at 0x1c05cf3d: file error_message.c, line 64.
(gdb) break profile_library_finalizer
Breakpoint 3 at 0x1c02401d: file prof_file.c, line 59.
(gdb) run
Starting program: /home/ccsdhd/k5login/a.out

Enter username: ccsdhd

Enter password:
Password for ccsdhd looks OK.

Breakpoint 2, com_err_terminate () at error_message.c:64
64          if (! INITIALIZER_RAN(com_err_initialize) || PROGRAM_EXITING())
(gdb) print terminated
$1 = 0
(gdb) bt
#0  com_err_terminate () at error_message.c:64
#1  0x1c0027c8 in __register_frame_info ()
#2  0x1c05eb85 in __fini ()
#3  0x0c82616a in exit () from /usr/lib/libc.so.34.2
#4  0x1c002759 in ___start ()
#5  0x1c0026bf in _start ()
#6  0x00000000 in ?? ()
#7  0xcfbfdff0 in ?? ()
#8  0x00000000 in ?? ()
#9  0x00000001 in ?? ()
#10 0xcfbf6984 in ?? ()
#11 0x00000000 in ?? ()
#12 0xcfbf699f in ?? ()
#13 0xcfbf69d4 in ?? ()
#14 0xcfbf69ee in ?? ()
#15 0xcfbf6a09 in ?? ()
#16 0xcfbf6a1a in ?? ()
#17 0xcfbf6a24 in ?? ()
#18 0xcfbf6a2d in ?? ()
#19 0xcfbf6a4e in ?? ()
#20 0xcfbf6a61 in ?? ()
#21 0xcfbf6a72 in ?? ()
#22 0xcfbf6a85 in ?? ()
---Type <return> to continue, or q <return> to quit---q
Quit
(gdb) c
Continuing.

Breakpoint 3, profile_library_finalizer () at prof_file.c:59
59          if (! INITIALIZER_RAN(profile_library_initializer) || PROGRAM_EXITING())
(gdb) bt
#0  profile_library_finalizer () at prof_file.c:59
#1  0x1c0027c8 in __register_frame_info ()
#2  0x1c05eb85 in __fini ()
#3  0x0c82616a in exit () from /usr/lib/libc.so.34.2
#4  0x1c002759 in ___start ()
#5  0x1c0026bf in _start ()
#6  0x00000000 in ?? ()
#7  0xcfbfdff0 in ?? ()
#8  0x00000000 in ?? ()
#9  0x00000001 in ?? ()
#10 0xcfbf6984 in ?? ()
#11 0x00000000 in ?? ()
#12 0xcfbf699f in ?? ()
#13 0xcfbf69d4 in ?? ()
#14 0xcfbf69ee in ?? ()
#15 0xcfbf6a09 in ?? ()
#16 0xcfbf6a1a in ?? ()
#17 0xcfbf6a24 in ?? ()
#18 0xcfbf6a2d in ?? ()
#19 0xcfbf6a4e in ?? ()
#20 0xcfbf6a61 in ?? ()
#21 0xcfbf6a72 in ?? ()
#22 0xcfbf6a85 in ?? ()
---Type <return> to continue, or q <return> to quit---q
Quit
(gdb) c
Continuing.

Breakpoint 1, remove_error_table (et=0x3c005c07) at error_message.c:322
322         if (CALL_INIT_FUNCTION(com_err_initialize))
(gdb) print terminated
$2 = 1
(gdb) bt
#0  remove_error_table (et=0x3c005c07) at error_message.c:322
#1  0x1c0240e3 in profile_library_finalizer () at prof_file.c:63
#2  0x1c0027c8 in __register_frame_info ()
#3  0x1c05eb85 in __fini ()
#4  0x0c82616a in exit () from /usr/lib/libc.so.34.2
#5  0x1c002759 in ___start ()
#6  0x1c0026bf in _start ()
#7  0x00000000 in ?? ()
#8  0xcfbfdff0 in ?? ()
#9  0x00000000 in ?? ()
#10 0x00000001 in ?? ()
#11 0xcfbf6984 in ?? ()
#12 0x00000000 in ?? ()
#13 0xcfbf699f in ?? ()
#14 0xcfbf69d4 in ?? ()
#15 0xcfbf69ee in ?? ()
#16 0xcfbf6a09 in ?? ()
#17 0xcfbf6a1a in ?? ()
#18 0xcfbf6a24 in ?? ()
#19 0xcfbf6a2d in ?? ()
#20 0xcfbf6a4e in ?? ()
#21 0xcfbf6a61 in ?? ()
#22 0xcfbf6a72 in ?? ()
---Type <return> to continue, or q <return> to quit---q
Quit
(gdb) c
Continuing.
a.out in free(): warning: chunk is already free

Breakpoint 1, remove_error_table (et=0x3c010770) at error_message.c:322
322         if (CALL_INIT_FUNCTION(com_err_initialize))
(gdb) print terminated
$3 = 1
(gdb) bt
#0  remove_error_table (et=0x3c010770) at error_message.c:322
#1  0x1c017701 in krb5int_lib_fini () at krb5_libinit.c:83
#2  0x1c0027c8 in __register_frame_info ()
#3  0x1c05eb85 in __fini ()
#4  0x0c82616a in exit () from /usr/lib/libc.so.34.2
#5  0x1c002759 in ___start ()
#6  0x1c0026bf in _start ()
#7  0x00000000 in ?? ()
#8  0xcfbfdff0 in ?? ()
#9  0x00000000 in ?? ()
#10 0x00000001 in ?? ()
#11 0xcfbf6984 in ?? ()
#12 0x00000000 in ?? ()
#13 0xcfbf699f in ?? ()
#14 0xcfbf69d4 in ?? ()
#15 0xcfbf69ee in ?? ()
#16 0xcfbf6a09 in ?? ()
#17 0xcfbf6a1a in ?? ()
#18 0xcfbf6a24 in ?? ()
#19 0xcfbf6a2d in ?? ()
#20 0xcfbf6a4e in ?? ()
#21 0xcfbf6a61 in ?? ()
#22 0xcfbf6a72 in ?? ()
---Type <return> to continue, or q <return> to quit---q
Quit
(gdb) c
Continuing.
a.out in free(): warning: chunk is already free

Breakpoint 1, remove_error_table (et=0x3c010770) at error_message.c:322
322         if (CALL_INIT_FUNCTION(com_err_initialize))
(gdb) print terminated
$4 = 1
(gdb) bt
#0  remove_error_table (et=0x3c010770) at error_message.c:322
#1  0x1c01770d in krb5int_lib_fini () at krb5_libinit.c:84
#2  0x1c0027c8 in __register_frame_info ()
#3  0x1c05eb85 in __fini ()
#4  0x0c82616a in exit () from /usr/lib/libc.so.34.2
#5  0x1c002759 in ___start ()
#6  0x1c0026bf in _start ()
#7  0x00000000 in ?? ()
#8  0xcfbfdff0 in ?? ()
#9  0x00000000 in ?? ()
#10 0x00000001 in ?? ()
#11 0xcfbf6984 in ?? ()
#12 0x00000000 in ?? ()
#13 0xcfbf699f in ?? ()
#14 0xcfbf69d4 in ?? ()
#15 0xcfbf69ee in ?? ()
#16 0xcfbf6a09 in ?? ()
#17 0xcfbf6a1a in ?? ()
#18 0xcfbf6a24 in ?? ()
#19 0xcfbf6a2d in ?? ()
#20 0xcfbf6a4e in ?? ()
#21 0xcfbf6a61 in ?? ()
#22 0xcfbf6a72 in ?? ()
---Type <return> to continue, or q <return> to quit---q
Quit
(gdb) c
Continuing.
a.out in free(): warning: chunk is already free

Breakpoint 1, remove_error_table (et=0x3c010770) at error_message.c:322
322         if (CALL_INIT_FUNCTION(com_err_initialize))
(gdb) print terminated
$5 = 1
(gdb) bt
#0  remove_error_table (et=0x3c010770) at error_message.c:322
#1  0x1c017719 in krb5int_lib_fini () at krb5_libinit.c:85
#2  0x1c0027c8 in __register_frame_info ()
#3  0x1c05eb85 in __fini ()
#4  0x0c82616a in exit () from /usr/lib/libc.so.34.2
#5  0x1c002759 in ___start ()
#6  0x1c0026bf in _start ()
#7  0x00000000 in ?? ()
#8  0xcfbfdff0 in ?? ()
#9  0x00000000 in ?? ()
#10 0x00000001 in ?? ()
#11 0xcfbf6984 in ?? ()
#12 0x00000000 in ?? ()
#13 0xcfbf699f in ?? ()
#14 0xcfbf69d4 in ?? ()
#15 0xcfbf69ee in ?? ()
#16 0xcfbf6a09 in ?? ()
#17 0xcfbf6a1a in ?? ()
#18 0xcfbf6a24 in ?? ()
#19 0xcfbf6a2d in ?? ()
#20 0xcfbf6a4e in ?? ()
#21 0xcfbf6a61 in ?? ()
#22 0xcfbf6a72 in ?? ()
---Type <return> to continue, or q <return> to quit---q
Quit
(gdb) c
Continuing.
a.out in free(): warning: chunk is already free

Breakpoint 1, remove_error_table (et=0x3c010770) at error_message.c:322
322         if (CALL_INIT_FUNCTION(com_err_initialize))
(gdb) print terminated
$6 = 1
(gdb) bt
#0  remove_error_table (et=0x3c010770) at error_message.c:322
#1  0x1c017725 in krb5int_lib_fini () at krb5_libinit.c:86
#2  0x1c0027c8 in __register_frame_info ()
#3  0x1c05eb85 in __fini ()
#4  0x0c82616a in exit () from /usr/lib/libc.so.34.2
#5  0x1c002759 in ___start ()
#6  0x1c0026bf in _start ()
#7  0x00000000 in ?? ()
#8  0xcfbfdff0 in ?? ()
#9  0x00000000 in ?? ()
#10 0x00000001 in ?? ()
#11 0xcfbf6984 in ?? ()
#12 0x00000000 in ?? ()
#13 0xcfbf699f in ?? ()
#14 0xcfbf69d4 in ?? ()
#15 0xcfbf69ee in ?? ()
#16 0xcfbf6a09 in ?? ()
#17 0xcfbf6a1a in ?? ()
#18 0xcfbf6a24 in ?? ()
#19 0xcfbf6a2d in ?? ()
#20 0xcfbf6a4e in ?? ()
#21 0xcfbf6a61 in ?? ()
#22 0xcfbf6a72 in ?? ()
---Type <return> to continue, or q <return> to quit---q
Quit
(gdb) c
Continuing.
a.out in free(): warning: chunk is already free

Breakpoint 1, remove_error_table (et=0x3c010770) at error_message.c:322
322         if (CALL_INIT_FUNCTION(com_err_initialize))
(gdb) print terminated
$7 = 1
(gdb) bt
#0  remove_error_table (et=0x3c010770) at error_message.c:322
#1  0x1c017731 in krb5int_lib_fini () at krb5_libinit.c:87
#2  0x1c0027c8 in __register_frame_info ()
#3  0x1c05eb85 in __fini ()
#4  0x0c82616a in exit () from /usr/lib/libc.so.34.2
#5  0x1c002759 in ___start ()
#6  0x1c0026bf in _start ()
#7  0x00000000 in ?? ()
#8  0xcfbfdff0 in ?? ()
#9  0x00000000 in ?? ()
#10 0x00000001 in ?? ()
#11 0xcfbf6984 in ?? ()
#12 0x00000000 in ?? ()
#13 0xcfbf699f in ?? ()
#14 0xcfbf69d4 in ?? ()
#15 0xcfbf69ee in ?? ()
#16 0xcfbf6a09 in ?? ()
#17 0xcfbf6a1a in ?? ()
#18 0xcfbf6a24 in ?? ()
#19 0xcfbf6a2d in ?? ()
#20 0xcfbf6a4e in ?? ()
#21 0xcfbf6a61 in ?? ()
#22 0xcfbf6a72 in ?? ()
---Type <return> to continue, or q <return> to quit---q
Quit
(gdb) c
Continuing.
a.out in free(): warning: chunk is already free

Program exited with code 036.
(gdb) q
merckx.bath.ac.uk ?// exit

Script done on Tue Jul  5 14:39:38 2005
--
Dennis Davis, BUCS, University of Bath, Bath, BA2 7AY, UK
D.H.Davis@bath.ac.uk               Phone: +44 1225 386101


Download (untitled) 12.2k