由於公司開發是屬於software dev,只持有 vendor 提供的 toolchain ...
很多設定檔案看不到...debug真的每次都很困難...只要新機器的設定環境初始跟以前不同,
或者沒有開啟所需的功能..我根本不知道...唯一知道的是"為什麼 service 不能跑 !!!"
於是開始瞎子摸象...查了一天發現是 應該vendor build uClibc 時候沒有開啟某項flag!!!!!
問題如下: 用個測試程式來跑看看!!
可以看到 main function , errno 都是正常的!
一旦pthread_create() , 進入thread_func 時候 , errno 就會是 nil !!!
<<< MAIN SECTION connect part 1 start >>> << Error: Connect port Failed (2047),errno (150) << Error: check errno (150) <<< server connect ok (2047)! >>> <<< MAIN SECTION connect part 1 end >>> main thread errno pointer 0x96 main thread errno pointer@value 0 <<< THREAD SECTION ON >>> check errno pointer (nil) and value 0 input main errno pointer@value 4 in Thread << Error: Connect port Failed (2048),errno (0) << Error: check errno (0) <<< server connect failed (2048)! >>> input main errno pointer@value 150 in Thread <<< THREAD SECTION END >>> <<< MAIN SECTION connect part 2 start >>> << Error: Connect port Failed (2048),errno (150) << Error: check errno (150) <<< server connect ok (2048)! >>> <<< MAIN SECTION connect part 2 end >>>
How to check :
只能去看一下vendor提供的toolchain檔案
查看一下 usr/include/bits/uClibc_config.h
90 #undef __UCLIBC_HAS_THREADS_NATIVE__
91 #define __UCLIBC_HAS_THREADS__ 1
因此得請vendor重新 build uClibc libaray!
行之有年的問題...再做新機器時候也得注意一下...
REF:
uclibc-has-threads-is-not-defined
connect error 0 running on ARM platform
Re: errno is not thread-safe in uClibc-0.9.30?
errno thread-safe

0 意見:
張貼留言