perforce 是一個商業公司所出的 VCS ,有不少公司採用(雖然我覺得很不順手...),包括我目前待的公司,在 Linux 上安裝其圖形操作介面後,一執行居然吐出 abort...WTF?!
由於它們只提供 binary 檔,無法確認問題。根據經驗,很多開源軟體都要讀取設定檔,但往往在檔案不存在的情況下用錯誤的模式而無法開啟,然後又不檢查是否開啟成功就使用 file descriptor,所以就會掛點。不過 perforce 是一家那麼久的軟體公司耶!應該不會犯這種低級錯誤吧?不管了,死馬當活馬醫,用 strace 觀察一下,結果真的看到:
stat64("/home/mars/.p4qt/ApplicationSettings.xml", 0xa547e6c) = -1 ENOENT (No such file or directory)
lstat64("/home/mars/.p4qt/ApplicationSettings.xml", 0xbf983a30) = -1 ENOENT (No such file or directory)
open("/home/mars/.p4qt/log.config", O_RDONLY|O_LARGEFILE|0x80000) = -1 ENOENT (No such file or directory)
futex(0x7458a88, FUTEX_WAKE_PRIVATE, 2147483647) = 0
rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0
tgkill(30326, 30326, SIGABRT) = 0
--- SIGABRT (Aborted) @ 0 (0) ---
+++ killed by SIGABRT +++
好像是真的這種白癡錯耶...手動生出這兩個空白檔,開起來了,運作正常... -_-
由於它們只提供 binary 檔,無法確認問題。根據經驗,很多開源軟體都要讀取設定檔,但往往在檔案不存在的情況下用錯誤的模式而無法開啟,然後又不檢查是否開啟成功就使用 file descriptor,所以就會掛點。不過 perforce 是一家那麼久的軟體公司耶!應該不會犯這種低級錯誤吧?不管了,死馬當活馬醫,用 strace 觀察一下,結果真的看到:
stat64("/home/mars/.p4qt/ApplicationSettings.xml", 0xa547e6c) = -1 ENOENT (No such file or directory)
lstat64("/home/mars/.p4qt/ApplicationSettings.xml", 0xbf983a30) = -1 ENOENT (No such file or directory)
open("/home/mars/.p4qt/log.config", O_RDONLY|O_LARGEFILE|0x80000) = -1 ENOENT (No such file or directory)
futex(0x7458a88, FUTEX_WAKE_PRIVATE, 2147483647) = 0
rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0
tgkill(30326, 30326, SIGABRT) = 0
--- SIGABRT (Aborted) @ 0 (0) ---
+++ killed by SIGABRT +++
好像是真的這種白癡錯耶...手動生出這兩個空白檔,開起來了,運作正常... -_-
留言
張貼留言