From mboxrd@z Thu Jan 1 00:00:00 1970 From: Fernando Nasser To: Chris Faylor Cc: insight@sources.redhat.com, macgregorsoftware@worldnet.att.net Subject: Re: [macgregorsoftware@worldnet.att.net: [Fwd: Insight problem]] Date: Mon, 13 Nov 2000 09:32:00 -0000 Message-id: <3A10257E.FAC44971@cygnus.com> References: <20001113114617.G7424@redhat.com> X-SW-Source: 2000-q4/msg00199.html Although IMO Tk should not core dump, it probably did because some bad argument was passed. The information below is not very useful A stack trace could help, but I guess we should start with another approach. Please set the following environment variables: GDBTK_DEBUG 2 GDBTK_DEBUGFILE /dev/tty (or whatever the console is called) Then start gdb without the -nw switch (i.e., Insight). And post the last two pages or so of trace information. Fernando > > Mr Faylor: > > We built Insight with the cvs version. We are still seeing the > problem ie :: > - only in power pc builds > - insight generates an exception when run without the -nw option > > - runs fine with the -nw option. > > is still there. > Are we doing something wrong? > > Jim MacGregor > Macraigor Systems LLC > > From: "Peter Reilley" > To: "Jim McGreggor" > Subject: Insight problem > Date: Sun, 12 Nov 2000 17:31:46 -0500 > > Running insight results in the following exception. > If I run insight --nw everything works fine. > > Pete. > > ---------------------------------------------------- > > This is the Win98 exception report > > GDB caused an invalid page fault in > module CYGTK80.DLL at 0167:6633c554. > Registers: > EAX=02fff798 CS=0167 EIP=6633c554 EFLGS=00010202 > EBX=0527bb28 SS=016f ESP=0f03f4d8 EBP=0f03f4f0 > ECX=61083de4 DS=016f ESI=0527bb28 FS=3d9f > EDX=05285138 ES=016f EDI=0506ede8 GS=0000 > Bytes at CS:EIP: > 39 50 08 75 07 c7 40 08 00 00 00 00 39 58 04 75 > Stack dump: > 05249aa8 0527bb28 0f03f590 6637c07f 05249aa8 0527bb28 > 0f03f590 6637c0a1 0527bb28 0527bb28 0f03f590 6637c098 > 0527bb28 05367448 818eece4 6104477f > > ------------------------------------------------------- > > Here is the offending routine. The exception occured at: 6633c554. > > 6633c528 <_TkEventDeadWindow>: > 6633c528: 55 push %ebp > 6633c529: 89 e5 mov %esp,%ebp > 6633c52b: 83 ec 14 sub $0x14,%esp > 6633c52e: 53 push %ebx > 6633c52f: 8b 5d 08 mov 0x8(%ebp),%ebx > 6633c532: 83 bb 9c 00 00 00 00 cmpl $0x0,0x9c(%ebx) > 6633c539: 74 4d je 6633c588 <_TkEventDeadWindow+0x60> > 6633c53b: 90 nop > 6633c53c: 8b 93 9c 00 00 00 mov 0x9c(%ebx),%edx > 6633c542: 8b 42 0c mov 0xc(%edx),%eax > 6633c545: 89 83 9c 00 00 00 mov %eax,0x9c(%ebx) > 6633c54b: a1 d8 3e 38 66 mov 0x66383ed8,%eax > 6633c550: 85 c0 test %eax,%eax > 6633c552: 74 1f je 6633c573 <_TkEventDeadWindow+0x4b> > > Offending code: > 6633c554: 39 50 08 cmp %edx,0x8(%eax) > 6633c557: 75 07 jne 6633c560 <_TkEventDeadWindow+0x38> > 6633c559: c7 40 08 00 00 00 00 movl $0x0,0x8(%eax) > 6633c560: 39 58 04 cmp %ebx,0x4(%eax) > 6633c563: 75 07 jne 6633c56c <_TkEventDeadWindow+0x44> > 6633c565: c7 40 04 00 00 00 00 movl $0x0,0x4(%eax) > 6633c56c: 8b 40 0c mov 0xc(%eax),%eax > 6633c56f: 85 c0 test %eax,%eax > 6633c571: 75 e1 jne 6633c554 <_TkEventDeadWindow+0x2c> > 6633c573: 83 c4 f4 add $0xfffffff4,%esp > 6633c576: 52 push %edx > 6633c577: e8 0c 0f 04 00 call 6637d488 <_Tcl_Free> > 6633c57c: 83 c4 10 add $0x10,%esp > 6633c57f: 83 bb 9c 00 00 00 00 cmpl $0x0,0x9c(%ebx) > 6633c586: 75 b4 jne 6633c53c <_TkEventDeadWindow+0x14> > 6633c588: 8b 5d e8 mov 0xffffffe8(%ebp),%ebx > 6633c58b: 89 ec mov %ebp,%esp > 6633c58d: 5d pop %ebp > 6633c58e: c3 ret > 6633c58f: 90 nop > > -------------------------------------------------------------- > > Here is the C code from tkEvent.c > If I read my assembly correctly the offending code is > marked with >>>> > > /* > *-------------------------------------------------------------- > * > * TkEventDeadWindow -- > * > * This procedure is invoked when it is determined that > * a window is dead. It cleans up event-related information > * about the window. > * > * Results: > * None. > * > * Side effects: > * Various things get cleaned up and recycled. > * > *-------------------------------------------------------------- > */ > > void > TkEventDeadWindow(winPtr) > TkWindow *winPtr; /* Information about the window > * that is being deleted. */ > { > register TkEventHandler *handlerPtr; > register InProgress *ipPtr; > > /* > * While deleting all the handlers, be careful to check for > * Tk_HandleEvent being about to process one of the deleted > * handlers. If it is, tell it to quit (all of the handlers > * are being deleted). > */ > > while (winPtr->handlerList != NULL) { > handlerPtr = winPtr->handlerList; > winPtr->handlerList = handlerPtr->nextPtr; > for (ipPtr = pendingPtr; ipPtr != NULL; ipPtr = ipPtr->nextPtr) { > >>>> if (ipPtr->nextHandler == handlerPtr) { > ipPtr->nextHandler = NULL; > } > if (ipPtr->winPtr == winPtr) { > ipPtr->winPtr = None; > } > } > ckfree((char *) handlerPtr); > } > } > > ----- End forwarded message ----- -- Fernando Nasser Red Hat Canada Ltd. E-Mail: fnasser@redhat.com 2323 Yonge Street, Suite #300 Toronto, Ontario M4P 2C9