Subject: Re: FVWM: Oddities in 2.4.16 - UPDATE

From: Dominik Vogt <[email-masked]>
Date: Thu, 15 Jul 2004 15:08:30 +0200

On Thu, Aug 28, 2003 at 09:25:40AM +0200, fvwm-workers wrote:
> On Wed, Aug 27, 2003 at 11:33:31AM -0600, Dameron, Gregg wrote:
> > > > > Setup:  fvwm 2.4.16, fvwm-themes 0.6.2 on Solaris 8,
> > > > > dual-head non-Xinerama.
> > > > >
> > > > > Since upgrading from 2.4.7, and with no substantial changes to
> > > > > my config (other than converting deprecated single-letter
> > > > > variables to their longer counterparts), I am seeing two
> > > > > intermittent startup problems.
> > [...]
> > > > > 2)  Failure to execute the StartFunction and InitFunction on
> > > > > *one* of the displays.  Fvwm2 and FvwmTheme are running, my Key
> > > > > and Mouse bindings are all fine, but none of the Modules started
> > > > > in StartFunction are running, nor is the process I "Exec" in
> > > > > InitFunction.  Happens on about one-in-ten logins.
> > > > > Ctrl-Alt-Escape doesn't help; restarting is required.  (On the
> > > > > opposite display, everything is fine.)  Any help is appreciated.
> > > 
> > > Experimenting has given more info on this second problem:
> > > 
> > > a)  The problem is much more likely to occur when the CPU and disk are
> > > under load.  Under heavy load, it happens *every* login.
> > > b)  When the problem occurs, it's always on the fvwm instance that is
> > > started first (I start each instance separately with -s and -d).
> > > c)  No one Module is the culprit.
> > > d)  Running fvwm with -debug doesn't help, and doesn't reveal any
> > > errors.
> > > e)  When the problem occurs, I always get at least one beep (but no
> > > error).
> > > f)  The problem *never* occurs if I delay the start of the second
> > > instance (either with a short sleep, or wait until one of the first
> > > instance's Modules [in StartFunction] has a PID).  This suggests the
> > > possibility that there is a concurrence problem [...]
> > 
> > 
> > Found it.  The failure is at line 1726 of fvwm/functions.c, in routine
> > execute_complex_function:
> > 
> >   if (!GrabEm(CRS_NONE, GRAB_NORMAL))
> > 
> > so StartFunction and/or InitFunction fails.  I'm guessing both fvwm
> > instances are trying to grab the pointer, but one of them can't.  I see
> > the comment above it, so I understand the reasoning.  I'm just wondering
> > - should StartFunction and InitFunction perhaps be immune from pointer
> > grab failures?
> 
> At least they should wait until the pointer can be grabbed.

I've committed a patch that protects startup/shutdown function
execution with a pointer grab.

Ciao

Dominik ^_^  ^_^

 --
Dominik Vogt, [email-masked]
Reply-To: [email-masked]