Hi. I found the keying problem still existed in svnkit-1.7.5-v1. When password 
storage is required in ubuntu, svnkit hangs or jvm crashes.

The test code was listed in the previous mail. Any idea?

------------------------------

Date: Thu, 7 Jun 2012 23:32:57 -0700 (PDT)
From: "[tc]" <zhutian...@baidu.com>
Subject: Gnome Keyring Hangs When Current Thread Is Not the UI Thread
To: svnkit-users@svnkit.com
Message-ID: <33979813.p...@talk.nabble.com>
Content-Type: text/plain; charset=us-ascii


I am using SVNKit 1.7.4-v1. When SVNKit lib runs in ubuntu, I found the
keyring functions hangs in the daemon thread.

NOTE: wincrypt for Windows and keychain for MacOS are not suffered from this
problem.

The main functions I called are:

try {
        boolean isSaved = SVNGnomeKeyring.setPassword("test realm", "test user
name", "test password", false /* nonInteractive */, null /*
keyringPasswordProvider */);
        System.out.println("setPassword = " + isSaved);

        String savedPasswd = SVNGnomeKeyring.getPassword("test realm", "test 
user
name", false /* nonInteractive */, null /* keyringPasswordProvider */);
        System.out.println("getPassword = " + savedPasswd);
} catch (SVNException e) {
        e.printStackTrace();
}

The above code works fine in the command line. But when it is running in the
daemon thread that is NOT the UI thread (IMPORTANT), program always hangs in
native code in SVNMethodCallLogger.

Thread thread = new Thread(new Runnable() {

@Override
public void run() {

        try {
                boolean isSaved = SVNGnomeKeyring.setPassword("test realm", 
"test user
name", "test password", false /* nonInteractive */, null /*
keyringPasswordProvider */);
                System.out.println("setPassword = " + isSaved);

                String savedPasswd = SVNGnomeKeyring.getPassword("test realm", 
"test user
name", false /* nonInteractive */, null /* keyringPasswordProvider */);
                System.out.println("getPassword = " + savedPasswd);
} catch (SVNException e) {
                e.printStackTrace();
}
}});

Shell shell = new Shell();
shell.open();
thread.start();

while (!shell.isDisposed()) {
        try {
                if (!shell.getDisplay().readAndDispatch()) {
                        shell.getDisplay().sleep();
                }
        } catch (Throwable e) {
                if (e instanceof ThreadDeath) {
                        // Don't catch ThreadDeath as this is a normal
                        // occurrence when the thread dies
                        throw (ThreadDeath) e;
                }
        }
}
                
try {
        thread.join();
} catch (InterruptedException e) {
        e.printStackTrace();
}

When program hangs in the daemon thread, the UI also hangs. So I believe the
problem is relative to the message loop. I do not have the source code of
the native code, so I cannot trace the problem deeper.

Any suggestions?
-- 
View this message in context: 
http://old.nabble.com/Gnome-Keyring-Hangs-When-Current-Thread-Is-Not-the-UI-Thread-tp33979813p33979813.html
Sent from the SVNKit - Users mailing list archive at Nabble.com.




------------------------------

_______________________________________________
svnkit-users mailing list
svnkit-users@svnkit.com
http://lists.tmatesoft.com/mailman/listinfo/svnkit-users

End of svnkit-users Digest, Vol 17, Issue 5
*******************************************

Reply via email to