1

トラフィックが非常に多いときに、segfault ダンプに頻繁に遭遇しました。ここで何が問題なのかわかりませんか?

誰でも私たちと共有する経験がありますか?

(gdb) bt

#0 ... in tcmalloc::ThreadCache::ReleaseToCentralCache(tcmalloc::ThreadCache::FreeList*, unsigned long, int) () from /usr/lib64/libtcmalloc.so
#1 ... in tcmalloc::ThreadCache::ListTooLong(tcmalloc::ThreadCache::FreeList*, unsigned  long) () from /usr/lib64/libtcmalloc.so
#2 ... in tc_delete () from /usr/lib64/libtcmalloc.so
#3 ... in boost::detail::sp_counted_impl_p<OutputObject>::dispose() () at /opt/rh/devtoolset-2/root/usr/include/c++/4.8.2/bits/unique_ptr.h:67

ありがとう、

4

1 に答える 1

3

ほとんどの場合、プログラムでメモリが破損しています。たとえば、ダブルフリー。負荷が高いときにセグメンテーション違反が発生していると言っているので、おそらく競合状態です。

スレッドセーフでないオブジェクトを (Singleton パターンを介して) 同時に使用したときにこの問題が発生し、メモリの脅威に関するさまざまな問題が発生しました。スタックトレースを調べて、すべてのフレームでそのようなバグを調べることで、おそらく問題の場所を見つけることができます。それは私にとってはうまくいきました.segfaultはstd::stringデストラクタによって引き起こされました.std::stringはスレッドセーフでないオブジェクト構造の一部でした.

于 2015-12-24T10:19:31.550 に答える