2011-07-29 16 views
1

我的測試程序正常工作。我可以創建一個客戶端和一個服務器,並針對彼此運行它們。我可以設置我的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 - 儘管將該選項放入我的測試程序的鏈接命令中並未破壞它。

任何幫助?

感謝 - 理查德

+1

如果您運行程序爲'dtrace -n「syscall :: open *:entry/copyinstr(arg0)== \」/ krb5/krb.conf \「/ {ustack();}」-c '它會給你codepath/stacktrace誰打開不正確的配置文件。不幸的是,你的問題聽起來很複雜,可能與構建/設置有關,所以這只是一個潛在的起點;我們需要一個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'主+ 0x34 program'_start + 0x17c –

+0

看起來像甲骨文擁有自己的GSS_API實現。在Oracle庫之前放置-lgss正在幫助 - 但我想知道它會對Oracle產生什麼影響。 Oracle的實現名稱也以zt開頭。 –

回答

0

我發現Oracle庫包含GSS的實現。爲了使我的代碼工作,我確保在鏈接任何Oracle庫之前鏈接「-lgss」。

我還沒有測試過,看看這是否會讓Oracle在單點登錄中出現問題,因爲我們使用的是Oracle用戶名和密碼。這工作正常。

1

這個固定似乎是我們的一個類似的問題:

export KRB5_CONFIG=/etc/krb5.conf 

它似乎可能是甲骨文錯誤地設置這種的環境變量,如果它尚未設置。

$ 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甲骨文11.2.0.4.0非常相同的問題,浪費了幾乎一整天了點。事實上,蹩腳的Oracle lib執行putenv/opt/krb5/krb.conf,理查德科菲爾德的提示使應用程序甚至崩潰。唯一的解決方法是創建一個符號鏈接。我已經爲此問題與Oracle建立了一項服務請求。

更新(2014-06-02):我收到了Oracle的更新。他們證實了這個錯誤。似乎有一個私人GSS-API正在重新定義符號。

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

此問題已於2010-10-10開放。可怕。

+0

我的評論是很老了,我還沒有在該項目(或該公司),一會的工作。事情可能發生了變化。 –

+0

@RichardCorfield,他們不是這就是我在這裏發佈這個答案的原因。 –

相關問題