heads up on 84897 and dependencies



Hi Folks:

(I am not supposed to be on the air today, must be brief).

We have a stopper/crasher when using the accessibility features which
has a root cause in the ORB blowing its stack.

Michael and I have look at this in some length; Michael thinks it's
technically unsolvable or at least intractable.  I am not so sure, but
it's certainly a hard problem.

One workaround/solution, depending on your viewpoint, and one that is
readily achievable, involves removing the "oneway" specifier from an
at-spi method.  IDL change, but binary compatible.  Because the oneways
don't return synchronously we have to do a (synchronous) ref() of
objects passed in the client call before dispatch, and an unref in the
server after the oneway (finally) is serviced.  This sort of defeats any
performance gain from the oneway, and causes the server to blow its
stack after re-entering 1000 times or so.  Also, the resulting
reordering of events is breaking our assistive technologies (though they
have been warned that event reordering is possible, they can't deal very
well with reordering of the same event type from a single client, e.g.
focus events should come in the 'right' order 99.9% of the time). 
Making the notify call synchronous would also fix this.

If you want the gory details, see bugs:

84897, 84898, 84900, 84908

discussion on linc/ORBit2 issues 85039, 85040

After some soul-searching, I think we should remove the oneway
directive.  Since we should then remove the ref() and the requirement
for the called server to unref() after servicing the call, this will
require changes to apps using our API (currently only apps under our
direct control, and GOK and gnopernicus).  However this means that.
despite bincompatibility, if we do this we should do it at 2.0.0 (i.e.
*now*) and not 2.0.1.

A small worry; we padded our IDL with extra epv calls for expansion, but
forgot to pad the EventListener IDL, which is the one that needs
changing.  So if we might someday want to restore a notifyAsync() call
or something, we should pad the IDL now too.

As I keep saying, magic bullets are welcome, but in the absence of one,
it seems that this change is required.

-Bill




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]