Старый 19.08.2012, 21:48   #1
12309
 
Регистрация: 25.12.2011
Сообщений: 265
Репутация: 33
По умолчанию bash и выделение памяти

Код:
$ ls -`for i in {1..100000}; do echo -n l;done`
- нормальный результат, и с количеством нулей до 00000 тоже работает нормально.
добавляем нулей:
Код:
$ ls -`for i in {1..1000000}; do echo -n l;done`
bash: /bin/ls: Argument list too long
$ ls -`for i in {1..10000000}; do echo -n l;done`
bash: /bin/ls: Argument list too long
ls'у это уже не нравится, но башу все еще пофиг. добавляем еще нулей, 100000000 и 1000000000, получаем:
Код:
 $ ls -`for i in {1..100000000}; do echo -n l;done`
ls: cannot access -: No such file or directory
памяти не хватает, и bash прибивается oomkiller'ом, съев где-то 90% оперативы.

а теперь интересное:

Код:
$ ls -`for i in {1..10000000000}; do echo -n l;done`
bash: xmalloc: cannot allocate 11280523272 bytes (4538368 bytes allocated)
ls: cannot access -: No such file or directory
баш даже не пытается обсчитать этот цикл, а сразу говорит, что памяти не хватит. но добавим один ноль:
Код:
$ ls -`for i in {1..100000000000}; do echo -n l;done`
ls: cannot access -: No such file or directory
баш опять начинает сжирать память и умирать от oomkiller'а, проверил до такого кол-ва нулей (скорее всего это сработает и при большем числе, мне тогда надоело добавлять по одному нулю, дальше я воткнул 4097 нулей и баш наконец-таки сегфолтнулся):
Код:
$ ls -`for i in {1..1000000000000000000000000000000000000000000}; do echo -n l;done`
ls: cannot access -: No such file or directory
ну а с
Код:
$ ls -`for i in {1..1__тут_4097_нулей__}; do echo -n l;done`
получаем сегфолт
*** glibc detected *** /bin/bash: corrupted double-linked list: 0x00000000006cee00 ***


собственно, мне интересно, почему до определённого числа баш тупо жрёт память, пока не сдохнет, потом на определённом промежутке у него наступает "прозрение" и он сразу говорит о том, что памяти не хватит, а потом опять начинает бездумно жрать память и дохнуть? в сорцы баша просьба не отправлять
12309 вне форума   Ответить с цитированием
Старый 20.08.2012, 10:16   #2
SynQ
 
Регистрация: 11.07.2010
Сообщений: 953
Репутация: 352
По умолчанию

Такие вопросы наверно продуктивнее в mail-list баша отправлять )
SynQ вне форума   Ответить с цитированием
Старый 20.08.2012, 16:38   #3
12309
 
Регистрация: 25.12.2011
Сообщений: 265
Репутация: 33
По умолчанию

да ну, там скажут, что я наркоман, и отправят читать сорцы, а я в си не силён
12309 вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot