我的測試程序正常工作。我可以創建一個客戶端和一個服務器,並針對彼此運行它們。我可以設置我的KRB5_CONFIG環境變量並使用本地配置進行測試。由於某些原因,當我鏈接到Oracle GSS開始表現不同時(Solaris)
由於某些原因,當我將代碼放入我們的生產軟件時,它失敗了。即使我將我們的main()函數剝離爲僅使用硬編碼名稱調用gss_import_name(),我最終會收到消息「無法打開配置文件」。
如果我運行truss,那麼我會看到很多Oracle正在進行。它試圖打開大量不同的Oracle跟蹤文件。它也試圖打開
/krb5/krb.conf
而不是我指定的文件。
就好像Oracle給我們錯誤的gss,或者在我們龐大而複雜的構建系統中可能有其他選項。我注意到-L/usr/lib/sparcv9,雖然現在在我的-lgss之後,如果這很重要的話(自從我定期在C工作以來太久了!)。該目錄中的libgss.so.1大於/ usr/lib中的libgss.so.1 - 儘管將該選項放入我的測試程序的鏈接命令中並未破壞它。
任何幫助?
感謝 - 理查德
如果您運行程序爲'dtrace -n「syscall :: open *:entry/copyinstr(arg0)== \」/ krb5/krb.conf \「/ {ustack();}」-c'它會給你codepath/stacktrace誰打開不正確的配置文件。不幸的是,你的問題聽起來很複雜,可能與構建/設置有關,所以這只是一個潛在的起點;我們需要一個stackoverflow聊天;-) –
我將不得不解決如何聊天。 我們的代碼靜態鏈接到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'主+ 0x34 program'_start + 0x17c –
看起來像甲骨文擁有自己的GSS_API實現。在Oracle庫之前放置-lgss正在幫助 - 但我想知道它會對Oracle產生什麼影響。 Oracle的實現名稱也以zt開頭。 –