Bug 22528 - Dynamic MMap ran out of room when Reading Package Lists
Summary: Dynamic MMap ran out of room when Reading Package Lists
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: apt (show other bugs)
Version: unstable
Hardware: all Linux
: P3 critical
Assignee: Gleb F-Malinovskiy
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks: 22527 30541 30689 31410
  Show dependency tree
 
Reported: 2009-12-14 06:54 MSK by Ivan Zakharyaschev
Modified: 2015-10-29 00:31 MSK (History)
12 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ivan Zakharyaschev 2009-12-14 06:54:28 MSK
The same problem holds for apt-0.5.15lorg2-alt30 (with rpm-4.0.4-alt98.17).

I did the same test ("apt-get update") after resoring the lists of the CD from the archive.

+++ This bug was initially created as a clone of Bug #22527 +++

Created an attachment (id=4122)
/etc/apt/

apt-0.5.15lorg2-alt29

I switched from branch 5.0 to Sisyphus, and ran "update". The I tried to start apt-shell, but it fails:

# cd /etc/apt/
[root@localhost apt]# git checkout sisy-internet 
Switched to branch 'sisy-internet'
[root@localhost apt]# apt-shell 
Reading Package Lists... Done
Building Dependency Tree... Done
Welcome to the APT shell. Type "help" for more information.
apt> update 
Ign cdrom://ALT Linux 4.1.1-RC Desktop (Thymus) build 2008-11-15 ALTLinux release
Get:1 rsync://ftp.altlinux.org i586 release [727B]
Get:2 rsync://ftp.altlinux.org noarch release [726B]
Fetched 1453B in 0s (2168B/s)
Get:1 rsync://ftp.altlinux.org i586/classic pkglist [3692kB]
Get:2 rsync://ftp.altlinux.org i586/classic release [143B] 
Get:3 rsync://ftp.altlinux.org noarch/classic pkglist [2061kB]
Get:4 rsync://ftp.altlinux.org noarch/classic release [145B]
Fetched 5753kB in 8s (643kB/s)                                                                                                                                       
Reading Package Lists... Error!
There are broken packages. Run `check' to see them.
You can try to fix them automatically with `install --fix-broken'0.
E: Dynamic MMap ran out of room
E: Error occured while processing libicfs (CollectFileProvides)
E: Problem with MergeFileProvides /var/lib/apt/lists/ftp.altlinux.org_ALTLinux_Sisyphus_i586_base_pkglist.classic
E: The package lists or status file could not be parsed or opened.
apt> 
[root@localhost apt]# apt-shell 
Reading Package Lists... Error!
E: Dynamic MMap ran out of room
E: Error occured while processing libicfs (CollectFileProvides)
E: Problem with MergeFileProvides /var/lib/apt/lists/ftp.altlinux.org_ALTLinux_Sisyphus_i586_base_pkglist.classic
E: The package lists or status file could not be parsed or opened.
[root@localhost apt]# df
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda6              11G  7.5G  3.4G  69% /
udevfs                5.0M  100K  5.0M   2% /dev
shmfs                1004M     0 1004M   0% /dev/shm
tmpfs                1004M  8.0K 1004M   1% /tmp
/dev/sda7              43G   41G  1.9G  96% /home
/dev/sda2              26G   22G  3.8G  86% /mnt/disk
/dev/sda5              11G  549M   11G   5% /var
[root@localhost apt]# free -m
             total       used       free     shared    buffers     cached
Mem:          2006        795       1210          0          1        497
-/+ buffers/cache:        297       1708
Swap:         4000          0       4000
[root@localhost apt]#
Comment 1 Ivan Zakharyaschev 2009-12-14 06:58:59 MSK
The problem is true for apt-0.5.15lorg2-alt30 with rpm-4.0.4-alt98.24, too.
Comment 2 Ivan Zakharyaschev 2009-12-14 07:03:04 MSK
A similar situation appeared before: https://bugzilla.altlinux.org/show_bug.cgi?id=16900 .
Comment 3 Ivan Zakharyaschev 2009-12-14 07:19:18 MSK
Setting APT::Cache-Limit helps -- thanks http://lists.altlinux.org/pipermail/sisyphus/2008-March/328458.html :

[root@localhost ~]# apt-get -o APT::Cache-Limit=$(( 1024 * 1024 * 1024 / 2 )) update 
Ign cdrom://ALT Linux 4.1.1-RC Desktop (Thymus) build 2008-11-15 ALTLinux release
Get:1 rsync://ftp.altlinux.org i586 release [727B]
Get:2 rsync://ftp.altlinux.org noarch release [726B]
Fetched 1453B in 0s (3052B/s)
Get:1 rsync://ftp.altlinux.org i586/classic pkglist [3712kB]
Get:2 rsync://ftp.altlinux.org i586/classic release [143B]
Get:3 rsync://ftp.altlinux.org noarch/classic pkglist [2065kB]
Get:4 rsync://ftp.altlinux.org noarch/classic release [145B]
Fetched 5777kB in 6s (915kB/s)                                                                                                                                       
Reading Package Lists... Done
Building Dependency Tree... Done
[root@localhost ~]# 

Probably, the default limit is too low; I haven't modified it:

# fgrep -i limit -r /etc/apt/
#
Comment 4 Michael Shigorin 2009-12-14 14:58:32 MSK
> I switched from branch 5.0 to Sisyphus, and ran "update".
Could you try to rpm -Uvh apt/libapt from 5.0/branch first?
Comment 5 Michael Shigorin 2009-12-14 20:44:52 MSK
Is it a bug #16900 dup?
Comment 6 Dmitry V. Levin 2010-10-25 13:43:36 MSD
(In reply to comment #5)
> Is it a bug #16900 dup?

No, it isn't.
Comment 7 Vitaly Lipatov 2010-11-14 21:56:10 MSK
Так планируется багу-то закрывать? Или как-то отразить, что выпущена сборка apt
* Чтв Ноя 04 2010 Dmitry V. Levin <ldv@altlinux.org> 0.5.15lorg2-alt34
- Increased default APT::Cache-Limit up to 48M.
Comment 8 Dmitry V. Levin 2010-11-14 22:08:20 MSK
workarounded in apt-0.5.15lorg2-alt34
Comment 9 Ivan Zakharyaschev 2014-11-18 14:07:07 MSK
FYI: There may appear a similar problem with the number of versions: https://bugzilla.altlinux.org/show_bug.cgi?id=30482 . (I haven't tried to find a solution for that one.)
Comment 10 Ivan Zakharyaschev 2014-12-23 11:24:59 MSK
It happens again with the current apt and Sisyphus (on x86-64) :(

Perhaps, it's time to increase the limit again?

# apt-get update 
Получено: 1 http://ftp.altlinux.org x86_64 release [914B]
Получено: 2 http://ftp.altlinux.org noarch release [708B]
Получено: 3 http://ftp.altlinux.org x86_64-i586 release [573B]
Получено 2195B за 0s (46,1kB/s).
Найдено http://ftp.altlinux.org x86_64/classic pkglist
Найдено http://ftp.altlinux.org x86_64/classic release
Найдено http://ftp.altlinux.org noarch/classic pkglist
Найдено http://ftp.altlinux.org noarch/classic release
Найдено http://ftp.altlinux.org x86_64-i586/classic pkglist
Найдено http://ftp.altlinux.org x86_64-i586/classic release
Чтение списков пакетов... Ошибка!
E: Dynamic MMap ran out of room
E: При обработке i586-libsundance10.32bit (NewVersion1) возникла ошибка
E: Ошибка с MergeList /var/lib/apt/lists/ftp.altlinux.org_pub_distributions_ALTLinux_Sisyphus_x86%5f64-i586_base_pkglist.classic
E: Невозможно прочитать список пакетов или файл статуса.
# fgrep -i limit -r /etc/apt
# rpm -q apt
apt-0.5.15lorg2-alt49
# apt-repo
rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus x86_64 classic
rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus noarch classic
rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus x86_64-i586 classic
#
Comment 11 Ivan Zakharyaschev 2015-01-28 21:44:32 MSK
This can be reproduced only after removing the cached stuff:

[root@ovicaa ~]# rm -fv /var/cache/apt/*.bin
удалён «/var/cache/apt/pkgcache.bin»
удалён «/var/cache/apt/srcpkgcache.bin»
[root@ovicaa ~]# apt-get update 
Получено: 1 http://ftp.altlinux.org x86_64 release [914B]
Получено: 2 http://ftp.altlinux.org noarch release [709B]
Получено: 3 http://ftp.altlinux.org x86_64-i586 release [573B]
Получено 2196B за 0s (7820B/s).
Найдено http://ftp.altlinux.org x86_64/classic pkglist
Найдено http://ftp.altlinux.org x86_64/classic release
Найдено http://ftp.altlinux.org noarch/classic pkglist
Найдено http://ftp.altlinux.org noarch/classic release
Найдено http://ftp.altlinux.org x86_64-i586/classic pkglist
Найдено http://ftp.altlinux.org x86_64-i586/classic release
Чтение списков пакетов... Ошибка!
E: Dynamic MMap ran out of room
E: При обработке i586-librados2.32bit (NewVersion1) возникла ошибка
E: Ошибка с MergeList /var/lib/apt/lists/ftp.altlinux.org_pub_distributions_ALTLinux_Sisyphus_x86%5f64-i586_base_pkglist.classic
E: Невозможно прочитать список пакетов или файл статуса.
[root@ovicaa ~]# apt-get update 
Получено: 1 http://ftp.altlinux.org x86_64 release [914B]
Получено: 2 http://ftp.altlinux.org noarch release [709B]
Получено: 3 http://ftp.altlinux.org x86_64-i586 release [573B]
Получено 2196B за 10s (213B/s).
Найдено http://ftp.altlinux.org x86_64/classic pkglist                                                                                                                 
Найдено http://ftp.altlinux.org x86_64/classic release                                                                                                                 
Найдено http://ftp.altlinux.org noarch/classic pkglist                                                                                                                 
Найдено http://ftp.altlinux.org noarch/classic release
Найдено http://ftp.altlinux.org x86_64-i586/classic pkglist
Найдено http://ftp.altlinux.org x86_64-i586/classic release
Чтение списков пакетов... Ошибка!                   
E: Dynamic MMap ran out of room
E: При обработке i586-librados2.32bit (NewVersion1) возникла ошибка
E: Ошибка с MergeList /var/lib/apt/lists/ftp.altlinux.org_pub_distributions_ALTLinux_Sisyphus_x86%5f64-i586_base_pkglist.classic
E: Невозможно прочитать список пакетов или файл статуса.
[root@ovicaa ~]# apt-get -o APT::Cache-Limit=$(( 64 * 1024 * 1024 )) update
Получено: 1 http://ftp.altlinux.org x86_64 release [914B]
Получено: 2 http://ftp.altlinux.org noarch release [709B]
Получено: 3 http://ftp.altlinux.org x86_64-i586 release [573B]
Получено 2196B за 1s (2085B/s).
Найдено http://ftp.altlinux.org x86_64/classic pkglist
Найдено http://ftp.altlinux.org x86_64/classic release
Найдено http://ftp.altlinux.org noarch/classic pkglist
Найдено http://ftp.altlinux.org noarch/classic release
Найдено http://ftp.altlinux.org x86_64-i586/classic pkglist
Найдено http://ftp.altlinux.org x86_64-i586/classic release
Чтение списков пакетов... Ошибка!
E: Dynamic MMap ran out of room
E: При обработке i586-librados2.32bit (NewVersion1) возникла ошибка
E: Ошибка с MergeList /var/lib/apt/lists/ftp.altlinux.org_pub_distributions_ALTLinux_Sisyphus_x86%5f64-i586_base_pkglist.classic
E: Невозможно прочитать список пакетов или файл статуса.
[root@ovicaa ~]# apt-get -o APT::Cache-Limit=$(( 80 * 1024 * 1024 )) update
Получено: 1 http://ftp.altlinux.org x86_64 release [914B]
Получено: 2 http://ftp.altlinux.org noarch release [709B]
Получено: 3 http://ftp.altlinux.org x86_64-i586 release [573B]
Получено 2196B за 0s (11,1kB/s).
Найдено http://ftp.altlinux.org x86_64/classic pkglist
Найдено http://ftp.altlinux.org x86_64/classic release
Найдено http://ftp.altlinux.org noarch/classic pkglist
Найдено http://ftp.altlinux.org noarch/classic release
Найдено http://ftp.altlinux.org x86_64-i586/classic pkglist
Найдено http://ftp.altlinux.org x86_64-i586/classic release
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
[root@ovicaa ~]#
Comment 12 Anton Farygin 2015-02-03 20:52:07 MSK
Только что словил на сизифе:
# apt-get update
Получено: 1 http://ftp.altlinux.org x86_64 release [914B]
Получено: 2 http://ftp.altlinux.org noarch release [709B]
Получено 1623B за 0s (6746B/s).    
Получено: 1 http://ftp.altlinux.org x86_64/classic pkglist [17,4MB]              
Получено: 2 http://ftp.altlinux.org x86_64/classic release [147B]
Получено: 3 http://ftp.altlinux.org noarch/classic pkglist [4130kB]
Получено: 4 http://ftp.altlinux.org noarch/classic release [147B]
Получено 21,5MB за 12s (1763kB/s).                                                                                                                          
Чтение списков пакетов... Ошибка!
E: Dynamic MMap ran out of room
E: При обработке python-module-django1.4-tests (NewVersion1) возникла ошибка
E: Ошибка с MergeList /var/lib/apt/lists/_raid_Sisyphus_noarch_base_pkglist.classic
E: Невозможно прочитать список пакетов или файл статуса.
Comment 13 Ivan Zakharyaschev 2015-02-11 15:39:16 MSK
http://git.altlinux.org/tasks/140211/
Comment 14 Dmitry V. Levin 2015-02-12 16:42:27 MSK
Attention to all who care of installers:
this change will double libapt memory requirements.

I'm quite sure some installers are not ready for this yet.
Comment 15 Michael Shigorin 2015-02-12 17:09:15 MSK
Может, необязательно по экспоненте всё же?
Comment 16 Ivan Zakharyaschev 2015-02-12 19:48:48 MSK
(В ответ на комментарий №15)
> Может, необязательно по экспоненте всё же?

Может, необязательно...
Comment 17 Ivan Zakharyaschev 2015-02-12 19:57:03 MSK
Решать проблему по-другому? Сделать запись в apt.conf либо для инсталлятора, либо для использования в уже установленной системе?

Может быть, пусть maintainer-ы инсталляторов пропишут свои минимальные требования в apt.conf (если это работает). Просто им виднее, сколько им хватит. Текущему Sisyphus надо больше. Поддерживать значения для инсталляторов в месте, независимом от инсталляторов, ведь неудобно будет.
Comment 18 Anton Farygin 2015-02-12 19:58:33 MSK
Для p7 тоже надо больше, и эта цифра заметно выросла с момента появления бранча.

А нельзя ли сделать этот параметр динамическим ?
Comment 19 Anton Farygin 2015-02-12 20:10:22 MSK
Я чего-то не понимаю?
Почему не срабатывает лимит?

И использование памяти всегда одинаковое, вне зависимости от установленного лимита.

# apt-get -o APT::Cache-Limit=1024 update
Get:1 http://mirror.yandex.ru x86_64 release [915B]  
Get:2 http://mirror.yandex.ru x86_64-i586 release [573B]
Get:3 http://mirror.yandex.ru noarch release [709B]
Fetched 2197B in 0s (3711B/s)
Hit http://mirror.yandex.ru x86_64/classic pkglist
Hit http://mirror.yandex.ru x86_64/classic release
Hit http://mirror.yandex.ru x86_64-i586/classic pkglist
Hit http://mirror.yandex.ru x86_64-i586/classic release
Hit http://mirror.yandex.ru noarch/classic pkglist
Hit http://mirror.yandex.ru noarch/classic release
Reading Package Lists... Done
Building Dependency Tree... Done
Comment 20 Ivan Zakharyaschev 2015-02-12 20:32:48 MSK
(В ответ на комментарий №19)
> Я чего-то не понимаю?
> Почему не срабатывает лимит?
> 
> И использование памяти всегда одинаковое, вне зависимости от установленного
> лимита.
> 
> # apt-get -o APT::Cache-Limit=1024 update
> Get:1 http://mirror.yandex.ru x86_64 release [915B]  
> Get:2 http://mirror.yandex.ru x86_64-i586 release [573B]
> Get:3 http://mirror.yandex.ru noarch release [709B]
> Fetched 2197B in 0s (3711B/s)
> Hit http://mirror.yandex.ru x86_64/classic pkglist
> Hit http://mirror.yandex.ru x86_64/classic release
> Hit http://mirror.yandex.ru x86_64-i586/classic pkglist
> Hit http://mirror.yandex.ru x86_64-i586/classic release
> Hit http://mirror.yandex.ru noarch/classic pkglist
> Hit http://mirror.yandex.ru noarch/classic release
> Reading Package Lists... Done
> Building Dependency Tree... Done

У меня в первую очередь проявлялось, когда были обновления базы. А в такой ситучации, как выше, бывало, и не выскакивала проблема.
Comment 21 Ivan Zakharyaschev 2015-02-12 20:34:13 MSK
(В ответ на комментарий №18)
> Для p7 тоже надо больше, и эта цифра заметно выросла с момента появления
> бранча.

В p7 хотелось бы иметь возможность переключиться на Sisyphus без проблем, т.е. требование такое же.
Comment 22 Anton Farygin 2015-02-12 20:34:36 MSK
надо посмотреть, может быть там выбирается максимальное значение из всех существующих?

[root@riderbook ~]# rm -f /var/lib/apt/lists/mirror.yandex.ru_altlinux_Sisyphus_*
[root@riderbook ~]# apt-get -o APT::Cache-Limit=1000 update
Get:1 http://mirror.yandex.ru x86_64 release [915B]
Get:2 http://mirror.yandex.ru x86_64-i586 release [573B]
Get:3 http://mirror.yandex.ru noarch release [709B]
Fetched 2197B in 0s (6718B/s)
Get:1 http://mirror.yandex.ru x86_64/classic pkglist [17.4MB]
Get:2 http://mirror.yandex.ru x86_64/classic release [147B]                                                                                                 
Get:3 http://mirror.yandex.ru x86_64-i586/classic pkglist [12.8MB]                                                                                          
Get:4 http://mirror.yandex.ru x86_64-i586/classic release [152B]                                                                                            
Get:5 http://mirror.yandex.ru noarch/classic pkglist [4154kB]                                                                                               
Get:6 http://mirror.yandex.ru noarch/classic release [147B]                                                                                                 
Fetched 34.4MB in 26s (1287kB/s)                                                                                                                            
Reading Package Lists... Done
Building Dependency Tree... Done
[root@riderbook ~]#
Comment 23 Anton Farygin 2015-02-12 21:13:08 MSK
после того, как хоть один раз хеши скачаются - параметр  APT::Cache-Limit= уже ни на что не влияет, даже если содержимое /var/cache/apt/ будет очищено.

И опытным путём выяснил, что даже если дать параметр близкий к бесконечности - объём потребляемой apt'ом памяти не увеличивается до бесконечности. Т.е. - это всё-таки похоже верхняя граница размеров кеша, не влияет ни на что.
Comment 24 Ivan Zakharyaschev 2015-02-21 22:29:07 MSK
(In reply to comment #14)
> Attention to all who care of installers:
> this change will double libapt memory requirements.

rider@ reports different conclusions from some tests.

> I'm quite sure some installers are not ready for this yet.

It's a pity there is no automatic testing of the installation of automatically prepared distros in virtual machines (with limited resources). Then we could quickly see the facts (which installer got broken on which machine with the new apt)...
Comment 25 Anton Farygin 2015-02-22 16:46:28 MSK
Добавлю ещё слёз:
вчера встретил человечка в Боровске, который вообще к Linux не имеет никакого отношения.
Оказывается, он себе поставил Simply 7 и получил как раз это сообщение об ошибке при попытке накатить обновления.
Как думаете, что он сделал дальше ?
Вместо того, что бы погуглить - человек менял репозитории и даже переустановил систему, и это ничего не помогало. Говорит уже собрался убунту ставить, если б меня не встретил.

Ребята, вообще нашими дистрибутивами оказывается простые смертные пользуются, не только админы и программеры. Надо понимать это, когда идёт речь про исправление ошибок.
Comment 26 arhan 2015-03-21 09:36:29 MSK
Ребята, вообще нашими дистрибутивами оказывается простые смертные пользуются,
не только админы и программеры. Надо понимать это.

Вот и я простной смертный подвис сейчас,не знаю что делать.Решил перейти на сезиф,и вот.....


root@comp-celeron-cpu-d8743f ~]# apt-repo
rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus i586 classic
rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus noarch classic
[root@comp-celeron-cpu-d8743f ~]# apt-get update
Получено: 1 http://ftp.altlinux.org i586 release [915B]
Получено: 2 http://ftp.altlinux.org noarch release [709B]
Получено 1624B за 4s (361B/s).
Найдено http://ftp.altlinux.org i586/classic pkglist
Найдено http://ftp.altlinux.org i586/classic release
Найдено http://ftp.altlinux.org noarch/classic pkglist
Найдено http://ftp.altlinux.org noarch/classic release
Чтение списков пакетов... Ошибка!
E: Dynamic MMap ran out of room
E: При обработке python3-module-pyxmpp2 (NewVersion1) возникла ошибка
E: Ошибка с MergeList /var/lib/apt/lists/ftp.altlinux.org_pub_distributions_ALTLinux_Sisyphus_noarch_base_pkglist.classic
E: Невозможно прочитать список пакетов или файл статуса.
[root@comp-celeron-cpu-d8743f ~]#
Comment 27 Michael Shigorin 2015-03-21 23:05:47 MSK
(В ответ на комментарий №26)
> E: Dynamic MMap ran out of room
http://www.altlinux.org/Apt/TroubleShooting
Comment 28 Ivan Zakharyaschev 2015-10-28 23:03:18 MSK
В Сизифе сейчас уже починили так:

* Вт мар 31 2015 Gleb F-Malinovskiy <glebfm@altlinux.org> 0.5.15lorg2-alt50
- Increased default APT::Cache-Limit:
 + up to 96M on 64bit systems.
 + up to 80M on 32bit systems.
Comment 29 Ivan Zakharyaschev 2015-10-28 23:26:51 MSK
В Сизифе сейчас уже починили так:

* Вт мар 31 2015 Gleb F-Malinovskiy <glebfm@altlinux.org> 0.5.15lorg2-alt50
- Increased default APT::Cache-Limit:
 + up to 96M on 64bit systems.
 + up to 80M on 32bit systems.