Db4o.openClientはスレッドセイフではない?

db4o(リモート)サーバに接続するための同メソッドだが、どうやらスレッドセイフではないらしく

ObjectContainer oc = Db4o.openClient("localhost", 0xdb40, "db4o", "db4o");

同一仮想マシンからマルチスレッドで同メソッドを呼び出すと、ログインに失敗することがある。(version 6.2.501で実行。.NET版ではまだ検証していない)
以下のようにクラスで同期するように書き直すと問題は全く発生しなくなる。

synchronized(Db4o.class) {
    ObjectContainer oc = Db4o.openClient("localhost", 0xdb40, "db4o", "db4o");
}

そもそも同一クライアントから複数の接続要求を出すことを考慮していないのか? フォーラムにも同様な問題がポストされているが、今ひとつはっきりしない。

今回の事に限ったことではないが、db4oは「何か解らなければソース見れ」的な雰囲気が強い。OSSだということを考えると悪いことではないが商用ライセンスだとこうはいかないはず。
商用ライセンスを購入する場合と差別化する意味もあるのでこれで良いのかもしれん。