問題タブ [glibc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
qt - qtconcurrentで生成され、QTime:currentTimeを呼び出す例外
Qtconcurrent::runで作成されたスレッドでのみ例外が生成されているようです
メインスレッドと他の3つのスレッド(2つのQThreadsと1つはQtConcurrent :: run()で作成)によって呼び出されるFPSengine :: getData()という名前のメソッドを持つFPSengineという名前のクラスがあります。FPSengine :: getData()の内部でQTime :: currentTime()を呼び出します。メインスレッドまたはQThreadsの1つからFPSengine::getData()を呼び出すと問題は発生しませんが、Qtconcurrent :: run()で作成されたスレッドからFPSengine :: getData()を呼び出すと例外が発生することがあります。QtconcurrentまたはQTime:currentTime()、あるいはtzset(gdbスタックが示すものからQTime :: currentTimeによって呼び出される)に何か問題がありますか?または、私のコードに何か問題がありますか。失敗したスレッドのスタック情報は次のとおりです
。0raise /lib/libc.so.60
1 abort /lib/libc.so.6 0
2 ?? /lib/libc.so.6 0
3 ?? /lib/libc.so.604
無料/lib/libc.so.605
?? /lib/libc.so.6 0
6 tzset /lib/libc.so.6 0
7 QTime :: currentTime()/usr/lib/libQtCore.so.4 0
8 FPSengine :: xmitData FPSengine2.cpp 93
9 FPSengine: :getData FPSengine2.cpp 21
10 threadDatalog :: run threaddatalog.cpp 109
11 ?? /usr/lib/libQtCore.so.4 0
12 start_thread /lib/libpthread.so.0 0
13 clone /lib/libc.so.6 0 14 ?? 0
multithreading - *** glibcが検出されました***ダブルフリーまたは破損(ファストトップ):
QByteArrayでclearを呼び出すと、次の例外が生成されます。
*glibcが検出されました* /home / yan / FPS2 / FPS2:ダブルフリーまたは破損(ファストトップ):
0 ?? 1 ??
2無料
3QByteArray:: clear()
4 FPSengine :: getDatagrams
5 FPSengine :: xmitData
6 FPSengine :: getData
7 threadDatalog :: run
8 ??
9 start_thread
10 clone
11 ?? 0
これはqtのバグですか、それとも私のコードと関係がありますか?QObjectsがスレッドセーフではないことは知っていますが(QT定義は、同じオブジェクトインスタンスの同じ関数を呼び出す複数のスレッドではありません)、私の関数にはミューテックスがあります。また、同じ関数が頻繁に呼び出されても、このエラーが発生することはめったにありません。PSこれを防ぐ方法は、env varMALLOC_CHECK_0です。
このURLは同様の問題に関連しており、一部の投稿は、互換性のないバージョンのglibcが原因であると示唆しているようです。
free - malloc の実装は解放されたメモリをシステムに返しますか?
メモリの割り当てと割り当て解除が頻繁に行われる、寿命の長いアプリケーションがあります。malloc
解放されたメモリをシステムに返す実装はありますか?
この点で、次の動作は何ですか。
- ptmalloc 1、2 (glibc のデフォルト) または 3
- dlmalloc
- tcmalloc (Google スレッドの malloc)
- solaris 10-11 のデフォルトの malloc および mtmalloc
- FreeBSD 8 デフォルトの malloc (jemalloc)
- 買いだめマロック?
アップデート
malloc
日中と夜間でメモリ消費量が大きく異なるアプリケーションがある場合 (例)、解放されたメモリをシステムに戻すよう強制できますか?
そのような戻りがなければ、解放されたメモリは何度もスワップアウトされますが、そのようなメモリにはゴミしか含まれていません。
ruby - Ruby / Glibcコアダンプ(ダブルフリーまたは破損)
私はRubyで自分で書いた分散型継続的インテグレーションツールを使用しています。タスクの分散には、MikePerhamの「政治」のフォークを使用します。「政治」モジュールは、mDNS部分にスレッドを使用しています。
時々、私は理解できないコアダンプに遭遇します:
私はGentooで実行しており、「-gdbg」を使用してRubyとGlibcを再構築し、意味のあるコアを取得するためにストライピングをオフにしました。
うーん???私にとって、これは完全にRubyのインターンのように見えます。ここstackoverflowでの他の「ダブルフリーまたは破損」の問題については、おそらくスレッドが問題の一部であることがわかりました。
また、問題はまったく同じ位置では発生しません。はるかに長い別のバックトレースがありますが、クラッシュも発生してgarbage_collect
いますが、パスが少し異なります。
誰かがこの問題を切り分けて解決する方法を提案していますか?
posix - pthread 関数の「_np」サフィックス
ここでの「_np」サフィックスの意味は次のとおりです。
またはマクロで
更新:
glibc2.2 から
__USE_UNIX98
_NP 関数/マクロの移植性を定義すると変更されますか?
pthreads - futexベースのミューテックスをglibc-2.2linuxthreadsミューテックスと混合できますか?
futexとlinuxthreads-0.9が何であるかわからない場合は、返信しないでください。
1つのプログラムfutexベースのミューテックスとlinuxthreads-0.8または-0.9(すべてのglibc <= 2.2およびすべてのuClibcで使用された)のミューテックスを混在させることはできますか?
プロセス間ミューテックス(pshared one、PTHREAD_PROCESS_SHARED)が必要です。
したがって、スレッドがlinuxthreads pthread_managerによって開始および管理される場合、futexベースのスリープとウェイクによって混乱しますか?
プロセス間同期とスレッド間同期の両方にfutexベースのミューテックスを使用できますか?
linux - nftw(FTW_CHDIR) でのファイル記述子のリーク?
nftw()
ディレクトリ構造をトラバースするために POSIX 呼び出しを使用しています。ディレクトリ構造はフラットで、4 つのファイルのみで、サブディレクトリはありません。
ただし、このフラット ディレクトリで nftw() を何度も呼び出すと、しばらくするとエラー メッセージが表示されます。
これは、フラグを使用すると発生することが判明しましたFTW_CHDIR
。
nftw() の Linux 実装のバグであることに同意しますか?
アップデート
修正が glibc リポジトリで利用できるようになりました。
テストに使用したソースコードへのリンクを次に示します。
- main.cpp: http://sourceware.org/bugzilla/attachment.cgi?id=4586&action=view
- Makefile: http://sourceware.org/bugzilla/attachment.cgi?id=4587&action=view
アップデート
- MacOS-Xもバグに見舞われる
- Solaris9、Solaris10、AIX 5.3 にはこのバグはありません
c++ - glibcがエラーを検出しました
誰かがこのエラーメッセージを理解するのを手伝ってくれませんか?
この線は特に何を示していますか?
また、gdbでコアダンプを見ると、次のメッセージが表示されます。
gdbでコマンド「frame15」を入力すると、次のようになります。
誰かが私がこれを理解するのを手伝ってくれますか?
たくさんの人に感謝します。
multithreading - 「glibc が二重解放または破損 (fasttop) を検出しました:」を回避するために、qthread とメインスレッドの両方で QObject を使用するにはどうすればよいですか?
udp ソケットを使用してデータグラムをループで読み書きする qthread があります。QUDPSocket はメインスレッドで作成されます。QThread とメインスレッドの両方で使用する QObjects を処理するにはどうすればよいですか。また、メインスレッドで UDP ソケットを使用し、それを qthread で使用しても問題ありませんか?