2011-07-29 13 views
1

私のテストプログラムは正常に動作します。私はクライアントとサーバーを作成し、それらをお互いに実行することができます。私はKRB5_CONFIG環境変数を設定し、テストのためにローカル設定を使用することができます。Oracle GSSとリンクして何らかの理由で動作が異なる(Solaris)

プロダクションソフトウェアに何らかの理由でコードを挿入すると失敗します。 main()関数をgss_import_name()を呼び出してハードコードされた名前で呼び出すだけでも、 "設定ファイルを開けません"というメッセージが表示されます。

私がトラスを実行すると、多くのオラクルが進化しています。さまざまなOracleトレースファイルを多数開こうとします。また、私が指定したファイルの代わりに、開こうとします。

/krb5/krb.conf 

Oracleが誤ったgssを提供しているかのように、または巨大で複雑なビルド・システムでは別のオプションを与えているかのようです。私は-L/usr/lib/sparcv9に注意しますが、これは私が定期的にCで作業して以来、長すぎます。そのディレクトリ内のlibgss.so.1は、/ usr/lib内のlibgss.so.1より大きいですが、そのオプションを私のテストプログラムのlinkコマンドに入れても、それを壊すことはありません。

助けが必要ですか?

おかげ - リチャード

+1

プログラムを 'dtrace -n 'として実行すると、syscall :: open *:/ copyinstr(arg0)== \"/krb5/krb.conf \ "/ {ustack();}" -c 'それは、間違った設定ファイルを開く人のためのcodepath/stacktraceを与えるでしょう。残念ながら、あなたの問題は複雑に聞こえ、おそらくビルド/セットアップに関連しているので、これは潜在的な出発点の1つに過ぎません。私たちはstackoverflowチャットが必要です;-) –

+0

私はチャットの仕方を工夫しなければなりません。 コードは静的にgssにリンクされています。 libc.so.1'__open + 0x4 libc.so.1'_endopen + 0xa8 libc.so.1'fopen + 0x1cに program'profile_update_file_data + 0x1f8 program'profile_open_file + 0x528 program'profile_init + 0x60 program'os_init_paths + 0x20の program'krb5_os_init_context + 0x20の program'init_common + 0x10c program'krb5_gss_import_name + 0x18の program' main + 0x34 program'_start + 0x17c –

+0

Oracleには独自のgss_api実装が含まれているようです。 Oracleライブラリーが役立つ前に-lgssを置いていますが、Oracleにとって何ができるのだろうかと思います。オラクル社では、ztから始まる実装名も持っています。 –

答えて

0

私は、Oracleライブラリは、GSSの実装が含まれていることを発見しました。私のコードを動作させるために、Oracleライブラリのいずれかをリンクする前に "-lgss"をリンクしていました。

Oracleでユーザー名とパスワードを使用しているため、これがシングルサインオンでOracleに影響を与えるかどうかはテストされていません。それはうまく動作します。

1

これが私たちのために、同様の問題のように見えるものの固定:

export KRB5_CONFIG=/etc/krb5.conf 

それはまだ設定されていない場合、Oracleは間違ってこのENVのVARを設定している可能性が表示されません。

$ grep -r KRB5_CONFIG $ORACLE_HOME 
Binary file /usr/lib/oracle/11.1.0.1/client64/lib/libclntsh.so matches 
Binary file /usr/lib/oracle/11.1.0.1/client64/lib/libclntsh.so.11.1 matches 
$ grep -r '/krb5/krb.conf' $ORACLE_HOME 
Binary file /usr/lib/oracle/11.1.0.1/client64/lib/libclntsh.so matches 
Binary file /usr/lib/oracle/11.1.0.1/client64/lib/libclntsh.so.11.1 matches 
0

HP-UX 11.31でOracle 11.2.0.4.0と同じ問題が発生していましたが、ほぼ1日で無駄になりました。確かに、厄介なOracleのlibはputenv/opt/krb5/krb.confであり、Richard Corfieldのヒントはアプリケーションをクラッシュさせます。唯一の回避策は、シンボリックリンクを作成することです。私はその問題についてOracleとのサービス要求を作成しました。

更新(2014-06-02):Oracleからの更新を受け取りました。彼らはバグを確認した。シンボルを再定義するプライベートGSS-APIがあるようです。

Bug 10184681 - ORACLE NEEDS TO USE VERSIONED SYMBOLS TO AVOID EXTERNAL SYMBOL CONFLICTS 

この問題は2010-10年以降に公開されています。恐ろしい。

+0

私のコメントは今ではかなり古く、私はそのプロジェクト(またはその会社)でしばらくは取り組んでいません。物事が変わった可能性があります。 –

+0

@リチャードコーフィールド、彼らは私がここでこの答えを投稿した理由ではありません。 –

関連する問題