Same problem here.

Eclipse is locked everytime a browser window needs to be created
(javadoc, javadoc tooltips, browser, etc...).

Of course the problem is due to the use of MOZILLA_FIVE_HOME which
require that xulrunner be registered. If that's not the case, XPCOM does
not initialize.

So the solution would be that users ( or /usr/bin/eclipse ) call
"xulrunner-1.9.2 --register-user", right? Well yes, except that this
command is broken. A little strace gives me :

(...)
[pid 16693] open("/usr/lib/xulrunner-1.9.2.3/user.reginfo", O_RDWR|O_CREAT, 
0664) = -1 EACCES (Permission denied)
[pid 16693] exit_group(2)               = ?
Process 16693 detached
[pid 16689] <... wait4 resumed> [{WIFEXITED(s) && WEXITSTATUS(s) == 2}], 0, 
NULL) = 16693
[pid 16689] --- SIGCHLD (Child exited) @ 0 (0) ---
[pid 16689] exit_group(2)               = ?
Process 16689 detached
<... wait4 resumed> [{WIFEXITED(s) && WEXITSTATUS(s) == 2}], 0, NULL) = 16689
--- SIGCHLD (Child exited) @ 0 (0) ---
exit_group(2)

Even when called as a regular user, xulrunner --register-user tries to
open "/usr/lib/xulrunner-1.9.2.3/user.reginfo" in Read-Write, which of
course is not permitted (either the file exists but the permission does
not allow write or it does not and we don't have write access to
/usr/lib/xulrunner-1.9.2.3 to create the file).

So to move to use this MOZILLA_FIVE_HOME env and remove completely the
use of org.eclipse.swt.browser.XULRunnerPath we can add a few line to
/usr/bin/eclipse :

Instead of "export MOZILLA_FIVE_HOME" :

if [ -e "/usr/bin/xulrunner-1.9.2" ]; then
    GRE_VERSION="$(/usr/bin/xulrunner-1.9.2 --gre-version)"
    if [ ! -e "/etc/gre.d/$GRE_VERSION.conf" ] ; then
        if [ ! -e "$HOME/.gre.d/$GRE_VERSION.conf" ] ; then
            /usr/bin/xulrunner-1.9.2 --register-user
            if [ ! -e "$HOME/.gre.d/$GRE_VERSION.conf" ] ; then
                if [ ! -d "$HOME/.gre.d" ] ; then
                    mkdir "$HOME/.gre.d"
                fi
                cp "/etc/gre.d/$GRE_VERSION.system.conf" 
"$HOME/.gre.d/$GRE_VERSION.conf"
            fi
        fi
        if [ -e "$HOME/.gre.d/$GRE_VERSION.conf" ] ; then
            export MOZILLA_FIVE_HOME="/usr/lib/xulrunner-${GRE_VERSION}"
        fi
    else
        export MOZILLA_FIVE_HOME="/usr/lib/xulrunner-${GRE_VERSION}"
    fi
fi


For example for /usr/bin/xulrunner-1.9.2 --gre-version == 1.9.2.3 :
 -  if the global registry /etc/gre.d/1.9.2.3.conf and user registry 
$HOME/.gre.d/1.9.2.3.conf do not exist, call /usr/bin/xulrunner-1.9.2 
--register-user
 - if $HOME/.gre.d/1.9.2.3.conf still does not exist , create it by copying 
/etc/gre.d/1.9.2.3.system.conf
If finally this file exists export MOZILLA_FIVE_HOME.

Why not export MOZILLA_FIVE_HOME by default? Well because xulrunner may not be 
installed. 
eclipse can be launched anyway, in this case it will use its internal browser 
(which is a bit ugly).

-- 
Eclipse locks in org.eclipse.swt.internal.mozilla.XPCOM._Call
https://bugs.launchpad.net/bugs/562555
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to