Что может привести к тому, что текстовый сегмент в статическом двоичном файле не будет разделен? - PullRequest
4 голосов
/ 08 января 2011

Я пытаюсь отследить ненужные грязные страницы в небольших двоичных файлах на Linux x86. Весь двоичный файл занимает менее 4 тыс. Страниц (он скомпилирован без glibc). На моем ноутбуке с ядром 2.6.32 .text отображается в /proc/$pid/smaps как Private_Clean: 4 и Private_Dirty: 0, как и ожидалось, но на моем сервере с 2.6.36 .text равно Private_Dirty: 4. Есть идеи, что может вызвать это? Насколько я знаю, никакой рандомизации макета адреса или чего-либо подобного не происходит (я отключил все связанные с этим настройки, о которых мне известно). Есть идеи, что может испортить программу .text?

Edit:

$ strace ~/em2
execve("/home/R/em2", ["/home/R/em2"], [/* 28 vars */]) = 0
nanosleep({100000, 0}, ^C <unfinished ...>

И ..... теперь smaps показывает .text как Private_Clean: 4. Это очень странно, потому что на самом деле у меня есть 2 разных двоичных файла, скомпилированных на разных машинах, которые оба показывают необъяснимую грязную страницу при запуске на моем сервере, и теперь они оба чистые. Извините за трату времени всех. Если проблема не вернется, я закрою / удалю этот вопрос или что-либо еще, поскольку я больше не могу воспроизвести его.

1 Ответ

2 голосов
/ 08 января 2011

Проблема решена: очевидно, в Linux есть «особенность» (я бы назвал это ошибкой), когда страница отображается как Private_Dirty, если двоичный файл еще не был записан на диск после его создания. Вот почему проблема загадочным образом ушла через некоторое время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...