Hi:

Here is an update. To play with things I have been using the 2.6 branch
from the cvs.

First, let me note that even with the same maple worksheet, from time to
maple loads correctly (this is without any obvious changes to anything). In
that case, I can see all the cores of my CPU spike up for a few seconds,
but then they all settle. When I see the problem, all the cores spike up,
then all except one die down.. that one stays at 100% as described earlier
and it's the fvwm process that is using the cpu. Also, not sure if this is
anecdotal, but it would seem like the more i force fvwm to print debug
info, the more likely maple loads correctly.

Could you place printfs in events.c in the My_XNextEvent() function
> and print out the event type?  That should identify the mass of
> events that are coming in, probably just the PropertyNotify from
> the stack trace, but maybe more.
>
> Then put printfs all over the responsible Handle<Event>()
> functions to print out the exact contents of the events and how
> fvwm reacts to them.  You can find descriptions of the various
> event types in the event union by searching for "X11 event
> structure" on the net.
>

I've added some printfs, in My_XNextEvent(), dispatch_event() and
HandlePropertyNotify(). So the event when the problem occurs, seems to
always be PropertyNotify. The rough output should be self explanatory... So
as I start maple in a case where things break, I see:

....
My_XNextEvent: event type 28
dispatch_event: event type 28
HandlePropertyNotify: beginning
HandlePropertyNotify: switch XA_WM_ICON_NAME
My_XNextEvent: event type 28
dispatch_event: event type 28
HandlePropertyNotify: beginning
HandlePropertyNotify: switch XA_WM_NAME
My_XNextEvent: event type 28
dispatch_event: event type 28
HandlePropertyNotify: beginning
HandlePropertyNotify: switch default
HandlePropertyNotify: ruturn  natural
My_XNextEvent: event type 28
dispatch_event: event type 28
HandlePropertyNotify: beginning
HandlePropertyNotify: switch default

Here the output the ~/.xsession-errors stops (not always on the same
statement)...  I then switch to a different terminal, and kill maple, java,
mserver. Then switch back. Get:

(gnome-settings-daemon:18525): color-plugin-WARNING **: Done switch to new
account, reload devices


Then after a little while, 10s of thousands of events are quickly dumped
like so:


HandlePropertyNotify: ruturn  natural
My_XNextEvent: event type 28
dispatch_event: event type 28
HandlePropertyNotify: beginning
HandlePropertyNotify: return if (XGetGeometry(...
My_XNextEvent: event type 28
dispatch_event: event type 28
HandlePropertyNotify: beginning
HandlePropertyNotify: return if (XGetGeometry(...
My_XNextEvent: event type 28
dispatch_event: event type 28
HandlePropertyNotify: beginning
HandlePropertyNotify: return if (XGetGeometry(...
My_XNextEvent: event type 28

This goes on for a while... what it tells me is that in
HandlePropertyNotify() every event ends up returning in this bit of code:

if (XGetGeometry(
        dpy, FW_W(fw), &JunkRoot, &JunkX, &JunkY,
        (unsigned int*)&JunkWidth, (unsigned int*)&JunkHeight,
        (unsigned int*)&JunkBW, (unsigned int*)&JunkDepth) == 0)
{
    return;
}

When things load correctly I don't see this return path from
HandlePropertyNotify().
Any ideas how to get around this?



> More evidence that the application probably generates too many
> events.  Have you tried sitting the situation out?  Do things go
> back to normal after, say, five minutes?
>
>
Yes, if I leave things alone (and not kill maple), fvwm comes back to life
after 10+ minutes (this is without no debugging turned on). So I suppose
that would be consistent with your theory... at some stage fvwm finishes
"processing" all the events.


thanks

Reply via email to