This is the mail archive of the
insight@sources.redhat.com
mailing list for the Insight project.
Re: [macgregorsoftware@worldnet.att.net: [Fwd: Insight problem]]
- To: Chris Faylor <cgf at redhat dot com>
- Subject: Re: [macgregorsoftware@worldnet.att.net: [Fwd: Insight problem]]
- From: Fernando Nasser <fnasser at cygnus dot com>
- Date: Mon, 13 Nov 2000 17:31:42 +0000
- CC: insight at sources dot redhat dot com, macgregorsoftware at worldnet dot att dot net
- Organization: Red Hat Canada Ltd. - Toronto
- References: <20001113114617.G7424@redhat.com>
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" <micrio@mv.com>
> To: "Jim McGreggor" <jamesm@macraigor.com>
> 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