[comp.windows.x] core dump in XtRemoveTimeOut

sue@kossy.jhuapl.edu (Sue Borchardt) (11/14/90)

I've been getting the following core dump on and off when 
clicking on the Xw scrollbar arrow. I can't tell if it's an
Xw problem or an Xt problem. I'm running on a Sun4 with 
patches 1-18. 

Also... I thought that bringing everything up to patch level 18
would fix my _XtGetPerWidgetInput core dump problem but I 
have reports that it's still going on in my application.

Any ideas?


XtRemoveTimeOut(id = 171300), line 411 in "/X/R4/mit/lib/Xt/NextEvent.c"
XwArrowReleaseCallback(aw = 0x1f2470, closure = (nil), call_data = (nil)), line 10 83 in "/X/R4/contrib/widgets/Xhp/Xw/ScrollBar.c"
_XtCallCallbacks() at 0x693f8
XtCallCallbacks() at 0x695e8
`Arrow`Release(aw = 0x1f2470, event = 0xf7fffa00), line 534 in "/X/R4/contrib/widg
ets/Xhp/Xw/Arrow.c"
_XtTranslateEvent() at 0x889f0
DispatchEvent() at 0x716dc
DecideToDispatch() at 0x71ddc
XtDispatchEvent() at 0x71e90
AppMainLoop(app = 0x141258), line 577 in "arg.c"
mainloop(), line 566 in "arg.c"
main(argc = 1, argv = 0xf7fffba4), line 548 in "arg.c"

Sue Borchardt
sue@aplvax.jhuapl.edu
JohnsHopkinsUniversityAppliedPhysicsLaboratory
Johns Hopkins Rd.
Laurel, Maryland, 20707
301-953-6814

etaylor@wilkins.iaims.bcm.tmc.edu (Eric Taylor) (11/16/90)

We had this happen too and were able to conclude that it was the fault of Xw.  They were not completely correct in handling TimeOuts correctly.  i.e.  They either removed the IntervalId twice or they forgot to remove it when the widget was destroyed.  I can't remember which.

	I use the XtAddTimeOut and RemoveTimeOut with no problems.
--
					Eric Taylor
					Baylor College of Medicine
					etaylor@wilkins.bmc.tmc.edu
					(713) 798-3776

rick@ut-emx.uucp (Rick Watson) (11/21/90)

In article <1990Nov13.202552.25425@aplcen.apl.jhu.edu>, sue@kossy.jhuapl.edu (Sue Borchardt) writes:
> 
> I've been getting the following core dump on and off when 
> clicking on the Xw scrollbar arrow. I can't tell if it's an
> Xw problem or an Xt problem. I'm running on a Sun4 with 
> patches 1-18. 
> 

The following very unofficial patch attempts to fix the scrollbar
timer problem but also (for reasons I don't entirely remember)
disables the timer entirely.  You can try changing the "#ifdef notdef"
to see if the other fixes work for you.  No guarantees. 

Rick Watson 
The University of Texas Computation Center, 512/471-3241
   internet: rick@digate.cc.utexas.edu       bitnet: watson@utadnx
   uucp:     ...!cs.utexas.edu!ut-emx!rick   span:   utspan::utadnx::watson

*** ScrollBar.c.ORIG	Thu Feb 23 02:05:08 1989
--- ScrollBar.c	Tue Jun  5 17:57:40 1990
***************
*** 1053,1058
     /*  If the orgin was changed, set up the repeat timer and   */
     /*  invoke the application supplied slider moved callbacks  */
  
     if (flag)
     {
        sbw -> scrollbar.timerProcessing = True;

--- 1053,1059 -----
     /*  If the orgin was changed, set up the repeat timer and   */
     /*  invoke the application supplied slider moved callbacks  */
  
+ #ifdef notdef	/* timers are screwed, don't use them */
     if (flag)
     {
        sbw -> scrollbar.timerProcessing = True;
***************
*** 1063,1068
           XtAddTimeOut ((unsigned long) sbw->scrollbar.initial_delay,
                         (XtTimerCallbackProc) XwTimerEvent, (caddr_t) sbw); 
     }
  }
  
  

--- 1064,1072 -----
           XtAddTimeOut ((unsigned long) sbw->scrollbar.initial_delay,
                         (XtTimerCallbackProc) XwTimerEvent, (caddr_t) sbw); 
     }
+ #else
+    XtCallCallbacks (sbw, XtNsliderMoved, (caddr_t) origin);      
+ #endif
  }
  
  
***************
*** 1081,1086
  
     if (sbw -> scrollbar.timerProcessing)
        XtRemoveTimeOut (sbw -> scrollbar.timer);
  }
  
  

--- 1085,1091 -----
  
     if (sbw -> scrollbar.timerProcessing)
        XtRemoveTimeOut (sbw -> scrollbar.timer);
+       sbw -> scrollbar.timerProcessing = False;
  }
  
  
***************
*** 1113,1118
        XtRemoveTimeOut (sbw -> scrollbar.timer); 
     }
  
  
     /*  Get the current origin, extent, min, and max of the  */
     /*  slider in the valuator                               */

--- 1118,1128 -----
        XtRemoveTimeOut (sbw -> scrollbar.timer); 
     }
  
+ 
+    /*  get out if we're no longer processing timers */
+ 
+    if (!sbw -> scrollbar.timerProcessing)
+        return;
  
     /*  Get the current origin, extent, min, and max of the  */
     /*  slider in the valuator                               */