Serious Bonobo Problem for Sun



Bonobo Maintainers:

Here at Sun we have serious problems running programs which use the
Bonobo architecture (like Evolution and Nautilus).  When a program
that uses Bonobo exits (either by exiting normally or by crashing),
oaf-processes are left running in the background.  This may not be
a serious problem for single user machines, but on multi-user servers
this quickly becomes critical.   We have seen multi-user servers with
hundreds and sometimes thousands of oaf processes left behind,
creating obvious performance problems.  The fact that Bonobo does
not support multi-user servers effectively is a serious problem
that especially impacts running Gnome on Solaris.

We notice that when programs that use the Bonobo architecture crash,
the oaf processes are sometimes left in a unusable state.  Trying to
re-run the program causes the program to immediately crash or behave
strangely.  Running oaf-slay and then restarting corrects this problem.

In both cases, the Bonobo architecture should be robust enough to
handle the situation.  When the program that launched the oaf process
exits (whether by choice or by crash), the oaf processes should recognize
this and quit.

It would be very useful if we could ship a version of Bonobo without this
problem with the Sun version of Gnome 1.4.  If it is possible to correct
this problem in the very near future, then perhaps we could explore the
possibility of doing this.  Any other ideas/suggestions would be
appreciated.

This problem can be demonstrated using the Bonobo test program 
test-container which is found in the Bonobo source tree under tests.
First I run oaf-slay to make sure no oaf processes are running (and
then I verify this by running "ps -ef | grep oaf | grep -v "grep oaf")
Then I follow these steps:

$ test-container

Then I select "text/plain -> Add a new text/plain component" and a text area
shows up in the window.
Then I select "Canvas-based -> Add a new Simple-Canvas item on the AA canvas"
and a graphic shows up in the window.

Then I run "ps -ef | grep oaf | grep -v "grep oaf" and sure enough I see the
following oaf processes:

 bc99092 28993     1  1 13:02:32 ?        0:00 bonobo-sample-canvas-item 
--oaf-activate-iid=OAFIID:Bonobo_Sample_CanvasItem_Fa
 bc99092 28989     1  1 13:02:30 ?        0:00 bonobo-text-plain 
--oaf-activate-iid=OAFIID:Bonobo_Sample_Text_Factory --oaf-io
 bc99092 28985     1  3 13:02:29 ?        0:01 oafd --ac-activate 
--ior-output-fd=10

Regardless if I exit this test program by selecting "File->Exit" or by
sending a SIGV to the test-container processes, I notice that the
above three processes are still active.

This is the exact same behavior that is seen when running programs that
use the Bonobo infrastructure like Evolution or Nautilus.

Brian





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