- 2009-05-13 (Wed) 21:37
- Google OSS

どうもgflagsからglogのMutexが呼ばれるのは何かおかしいと思っていたのだが、readelfで確認したところ、シンボルが競合しているようだ。
ソースコードからは競合しても問題無いようにコーディングしたいという意図が見えるが、glogからgflagsのMutexを使用しても問題が起こらないが、gflagsからglogのMutexを使用した場合に問題が起こるようだ。
id:nobu-q先生による解決策はこうですが、adhoc臭が漂いまくり(笑)
--- glog-0.2.1-orig/src/base/mutex.h 2009-01-22 07:17:01.000000000 +0900
+++ glog-0.2.1/src/base/mutex.h 2009-05-13 21:34:36.000000000 +0900
@@ -99,6 +99,8 @@
# error Need to implement mutex.h for your architecture, or #define NO_THREADS
#endif
+namespace hoge {
+
class Mutex {
public:
// Create a Mutex that is not held by anybody. This constructor is
@@ -246,9 +248,13 @@
void operator=(const WriterMutexLock&);
};
+};
+using namespace hoge;
でも本質的に解決するためには名前空間作るしか無いと思うのですがいかがでしょう? > shinhせんせい
googleのコードは必ず名前空間を作る雰囲気がしてたんですが、Mutexだけそうなってるのは歴史的事情かなんかなのかな。usingが禁止されてて面倒くさいのとstatic linkを使用しているので、よく使うものだけは例外的にglobalに有ったりするんだろうか。
Similar Posts:
- Newer: CCGRID 2009 参加中
- Older: gflags + glogでdeadlock?
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://kzk9.net/blog/2009/05/deadlock_with_gflags_and_glog_2.html/trackback
- Listed below are links to weblogs that reference
- gflags + glogでdeadlock? (2) from moratorium
