GNOME Bugzilla – Bug 365206
regression in detection of broken connection
Last modified: 2007-12-02 16:54:33 UTC
1) Disable /apps/nautilus/preferences/show_desktop and make sure nautilus is not running. 2) Start nautilus. 3) Quit it gently by closing the window. 4) Start bonobo-browser and observe that the "Nautilus factory" server is listed as active even though Nautilus is no longer running. 5) Start nautilus again; since the server is still considered active, bad things occur: the server cannot be activated and several nautilus processes are forked until the activation can finally happen. 6) Kill all the nautilus processes. 7) Start nautilus. 8) Send nautilus a SIGTERM. 9) Start bonobo-browser and observe that the "Nautilus factory" is this time properly listed as inactive. 10) Conclude that libbonobo no longer detects a connection drop unless the server process is killed. Regression introduced by: http://cvs.gnome.org/viewcvs/libbonobo/activation-server/object-directory-corba.c?r1=1.81&r2=1.82 Fix attached.
Created attachment 75426 [details] [review] fix
Sounds really bad - and thanks for the fix. On the other hand I'm confused: * why does b-a-s ever exit on Linux ? - I am assuming it does of course ;-) * why is connecting to "broken" different to using the ORBit_small_listen_for_broken ? The latter is I think preferable for threading reasons - the 'broken' signal is not public API (or not intended to be), and [AFAIR] the 'broken' signal gets emitted in the I/O thread(?) (or somesuch) which can cause serious grief. So - it'd be great to get a better understanding of your change & why it's necessary. Is it really the case that b-a-s never exits for a default desktop ? Can you compile with BONOBO_ACTIVATION_DEBUG enabled, [ read the debugging tips in activation-server/README ]. Thanks again.
It might also be worth compiling ORBit2/linc2 with debugging information too.
By "server process" I mean the process that provides the server (in my example nautilus), not b-a-s. I have no idea why the broken signal is different.
Could you get us the debugging information that Michael asked for?
Ping?
Closing this since we don't have enough information to go on. Feel free to reopen if you can provide the information Michael asked for.