Home > Google OSS > gflags + glogでdeadlock? (2)

gflags + glogでdeadlock? (2)

どうも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:

Comments:0

Comment Form
Remember personal info

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

Home > Google OSS > gflags + glogでdeadlock? (2)

お薦め本
広告
Archives
Categories

Return to page top