54

valgrind / callgrind でプログラムを実行すると、次のメッセージが頻繁に表示されます。

==21734== brk segment overflow in thread #1: can't grow to 0x4a39000 (住所が違う)

スタック オーバーフロー メッセージが先行しないことに注意してください。

このメッセージに関するドキュメントが見つかりません。何がオーバーフローしているのか正確にはわかりません。

問題が何であるかを理解するのを手伝ってくれる人はいますか? これは valgrind の問題ですか、それとも私のプログラムの問題ですか?

4

5 に答える 5

12

Valgrind は、不足する brk セグメントに 8MB しか割り当てません。これについて議論しているvalgrind バグレポートで、libc が mmap ベースのメモリ割り当てに切り替わっているとの報告があります。

于 2016-09-22T15:45:05.693 に答える
8

これは実際には答えではありませんが、OPの「ドキュメントが見つかりませんでした」という要件を満たしています。

1) http://repo.or.cz/valgrind.git/blob/HEAD:/coregrind/m_syswrap/syswrap-generic.c

行 1322 で説明されているメッセージが含まれています

2) http://sourceforge.net/p/valgrind/mailman/message/34068401/

は機能を導入したコミットであり、対応するコミット メッセージは読み取ります

Author: florian
Date: Wed Apr 29 13:59:16 2015
New Revision: 15155

Log: Issue an error message if then brk segment overflows.

この質問をさらに伝えることができる場所から、「このコンテキストで「brk セグメントのオーバーフロー」が正確に何を意味するのか」に適格な回答を与えることができる人に!

于 2016-02-01T12:16:35.183 に答える
2

これは valgrind の問題ですか、それとも私のプログラムの問題ですか?

原因はわかりませんが、無視していいと思います。少なくとも、合法的なプログラムでそれをトリガーすることは可能であるようです. ここに例を挙げて同様/重複に答えました:

Valgrind レポート「スレッド #1 での brk セグメント オーバーフロー」

于 2016-03-27T15:10:54.703 に答える