<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>990</bug_id>
          
          <creation_ts>2002-06-11 11:30:27 +0400</creation_ts>
          <short_desc>Ошибка DB_PAGE_NOTFOUND: Requested page в конце работы apt-get</short_desc>
          <delta_ts>2008-07-17 20:19:00 +0400</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>libapt</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>major</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>3459</blocked>
    
    <blocked>5192</blocked>
    
    <blocked>7079</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrew Fediushin">andrew</reporter>
          <assigned_to name="placeholder@altlinux.org">placeholder</assigned_to>
          <cc>boyarsh</cc>
    
    <cc>eostapets</cc>
    
    <cc>glebfm</cc>
    
    <cc>imz</cc>
    
    <cc>lav</cc>
    
    <cc>ldv</cc>
    
    <cc>mouse</cc>
    
    <cc>placeholder</cc>
    
    <cc>rider</cc>
    
    <cc>sr</cc>
    
    <cc>svd</cc>
    
    <cc>vt</cc>
    
    <cc>wrar</cc>
    
    <cc>zerg</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>943</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Fediushin">andrew</who>
    <bug_when>2002-06-11 11:30:27 +0400</bug_when>
    <thetext>Каждый раз при обновлении системы до Sisyphus обновление прерывается на последнем устанавливаемом пакете с диагностикой:
\&amp;quot;ошибка: ошибка(4) db-30988 из dbcursor-&amp;gt;c_get: DB_PAGE_NOTFOUND: Requested page not found\&amp;quot;
---

---
Система: когда-то Junior 1.1, периодически обновляемый до текущего состояния Sisyphus (apt-get dist-upgrade).
Ошибка появилась в последние две недели.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3725</commentid>
    <comment_count>1</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2002-08-05 21:04:41 +0400</bug_when>
    <thetext>Имеет место не вполне корректная работа с блокировками базы данных /var/lib/rpm/Packages.

Ситуация может возникнуть, например, при обновлении пакета, содержащего menu entry.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7090</commentid>
    <comment_count>2</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2002-08-05 21:04:41 +0400</bug_when>
    <thetext>Имеет место не вполне корректная работа с блокировками базы данных /var/lib/rpm/Packages.

Ситуация может возникнуть, например, при обновлении пакета, содержащего menu entry.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14937</commentid>
    <comment_count>3</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2004-06-09 17:56:47 +0400</bug_when>
    <thetext>*** Bug 4323 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14940</commentid>
    <comment_count>4</comment_count>
      <attachid>429</attachid>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2004-06-09 18:01:09 +0400</bug_when>
    <thetext>Created attachment 429
Test of locking</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15662</commentid>
    <comment_count>5</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2004-06-27 03:39:44 +0400</bug_when>
    <thetext>Zerg, твой тест демонстрирует вполне нормальную блокировку rpm&apos;а.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15797</commentid>
    <comment_count>6</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2004-06-29 14:11:45 +0400</bug_when>
    <thetext>(In reply to comment #5) 
&gt; Zerg, твой тест демонстрирует вполне нормальную блокировку rpm&apos;а. 
Не понял, в процессе установки пакетов база должна быть разблокирована для 
чтения? 
 </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18399</commentid>
    <comment_count>7</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2004-08-27 20:57:17 +0400</bug_when>
    <thetext>Zerg, твой тест демонстрирует вполне нормальную работу блокировок rpm&apos;а, и
ненормальную работу блокировок apt&apos;а, поскольку последний после создания
блокировки запускает подпроцессы, и в результате блокировка теряется.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18842</commentid>
    <comment_count>8</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2004-09-19 19:31:24 +0400</bug_when>
    <thetext>На самом деле проблема в libapt, блокировка теряется при запуске подпроцессов,
поскольку дескриптор, на котором эта блокировка, CLOEXEC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18844</commentid>
    <comment_count>9</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2004-09-19 19:32:55 +0400</bug_when>
    <thetext>*** Bug 5197 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22835</commentid>
    <comment_count>10</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2005-03-29 11:59:25 +0400</bug_when>
    <thetext>*** Bug 2674 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25536</commentid>
    <comment_count>11</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2005-06-10 13:21:59 +0400</bug_when>
    <thetext>Сделать хотя бы какой-нибудь любой другой лок, который не будет слетать.  </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25707</commentid>
    <comment_count>12</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2005-06-14 15:25:48 +0400</bug_when>
    <thetext>Отлично видно как слетает блокировка при работе apt-shell:
1) запускаем apt-shell
2) в другом терминале пробуем rpm -q &lt;установленный пакет&gt;, обламываемся на
заблокированной базе
3) устанавливаем или удаляем пакет в apt-shell (например install ntdate и commit -y)
4) пытаемся в соседнем терминале запросить информацию о пакете.. наблюдаем
успешно разблокированную базу

включаем максимальный уровень отладки у librpm через rpmIncreaseVerbosity();,
вызываем в libapt

наблюдаем в логах только одну попытку залочить базу:
 fgrep &quot;/var/lib/rpm/Packages&quot; Log 
D: opening  db environment /var/lib/rpm/Packages create:mpool
D: opening  db index       /var/lib/rpm/Packages  mode=0x2
D: locked   db index       /var/lib/rpm/Packages
D: closed   db index       /var/lib/rpm/Packages
D: closed   db environment /var/lib/rpm/Packages
D: removed  db environment /var/lib/rpm/Packages
D: verified db index       /var/lib/rpm/Packages
D: opening  db environment /var/lib/rpm/Packages create:mpool
D: opening  db index       /var/lib/rpm/Packages  mode=0x2
D: closed   db index       /var/lib/rpm/Packages
D: closed   db environment /var/lib/rpm/Packages
D: removed  db environment /var/lib/rpm/Packages
D: verified db index       /var/lib/rpm/Packages
D: opening  db environment /var/lib/rpm/Packages create:mpool
D: opening  db index       /var/lib/rpm/Packages  mode=0x2
D: closed   db index       /var/lib/rpm/Packages
D: closed   db environment /var/lib/rpm/Packages
D: removed  db environment /var/lib/rpm/Packages
D: verified db index       /var/lib/rpm/Packages

сам apt-get использует для блокировки базы rpmdbOpen(), кода fork() я в нем не
нашел (может плохо искал?)

все-таки возникает подозрение, что блокировку не устанавливает заново librpm
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25716</commentid>
    <comment_count>13</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2005-06-14 15:34:39 +0400</bug_when>
    <thetext>да, забыл добавить:
судя по всему не прокатывает одно из условий в librpmdb:

в rpmdb/db3.c добавлен следущий код:
            printf(&quot;db3open, fcntl:%i\n&quot;, (rc == 0 &amp;&amp; dbi-&gt;dbi_lockdbfd &amp;&amp;
                (!dbi-&gt;dbi_use_dbenv || _lockdbfd++ == 0)));

соответственно вот вывод работы apt-shell:

  LD_LIBRARY_PATH=./ apt-shell 2&gt;Log
RPMDBHandler:WriteLock1
rpmdbOpen:2, 1a4
Enter to db3open
db3open, fcntl:1
LockRpm:1
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Добро пожаловать в APT shell. Используйте команду &quot;help&quot; для дополнительной
информации.
apt&gt; remove icewm
apt&gt; commit -y
Следующие пакеты будут УДАЛЕНЫ:
  icewm
0 будет обновлено, 0 новых установлено, 1 пакетов будет удалено и 1 не будет
обновлено.
Необходимо получить 0B архивов.
После распаковки будет освобождено 984kB дискового пространства.
UnLockRpm:0
rpmdbOpen:2, 1a4
Enter to db3open
db3open, fcntl:0
Enter to db3open
db3open, fcntl:0
Enter to db3open
db3open, fcntl:0
Совершаем изменения...
Preparing...                     Enter to db3open
db3open, fcntl:0
###################################################################################################
[100%]
Enter to db3open
db3open, fcntl:0
Enter to db3open
db3open, fcntl:0
Enter to db3open
db3open, fcntl:0
Enter to db3open
db3open, fcntl:0
Enter to db3open
db3open, fcntl:0
Enter to db3open
db3open, fcntl:0
Enter to db3open
db3open, fcntl:0
Enter to db3open
db3open, fcntl:0
Enter to db3open
db3open, fcntl:0
Enter to db3open
db3open, fcntl:0
Завершено.
RPMDBHandler:WriteLock1
rpmdbOpen:2, 1a4
Enter to db3open
db3open, fcntl:0
LockRpm:1
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
apt&gt; 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25721</commentid>
    <comment_count>14</comment_count>
      <attachid>937</attachid>
    <who name="Anton Farygin">rider</who>
    <bug_when>2005-06-14 15:53:09 +0400</bug_when>
    <thetext>Created attachment 937
rpm-4_0-4.0.4-lock-fixed.patch

Патч, исправляющий эту ошибку в librpmdb.

Пояснение: static переменная, которую я убрал не позволяет провести вторую
блокировку в случае, когда librpm используется кем-то вроде apt&apos;а, который
несколько раз открывает и закрывает базу rpm.

в коде для db1 такой переменной не обнаружено.

rpm с таким патчем работает нормально, apt-get, apt-shell - тоже.

в случае apt-shell при наличии этого патча поведение меняется следущим образом:

1) открывается база rpm
2) в момент commit&apos;а база закрывается и запускается процесс установки пакетов,
который снова открывает и лочит базу
3) после установки пакетов база закрывается (блокировка снимается)
4) базу снова открывает apt-shell и восстанавливает блокировку.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25722</commentid>
    <comment_count>15</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2005-06-14 15:55:46 +0400</bug_when>
    <thetext>Вот как это выглядит с патчем (просьба не обращать внимания на разную отладочную
информацию. fcntl_mod: 2 означает установку блокировки на базу.
после работы commit&apos;а база получается залоченной (как оно и должно быть).

#  LD_LIBRARY_PATH=./ apt-shell 2&gt;Log
RPMDBHandler:WriteLock1
rpmdbOpen:2, 1a4
Enter to db3open
db3open, fcntl:0
db3open, fcntl2:0, 1, 1, 0
db3open, fcntl3:0, 1, 1, 1
fcntl_mod: 2
LockRpm:1
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Добро пожаловать в APT shell. Используйте команду &quot;help&quot; для дополнительной
информации.
apt&gt; remove icewm
Пакет icewm не установлен, и не может быть удалён.
apt&gt; install icewm
apt&gt; commit
Следующие НОВЫЕ пакеты будут установлены:
  icewm
0 будет обновлено, 1 новых установлено, 0 пакетов будет удалено и 1 не будет
обновлено.
Необходимо получить 0B/398kB архивов.
После распаковки потребуется дополнительно 984kB дискового пространства.
Продолжить? [Y/n] 
UnLockRpm:0    
rpmdbOpen:2, 1a4
Enter to db3open
db3open, fcntl:0
db3open, fcntl2:0, 1, 1, 0
db3open, fcntl3:0, 1, 1, 1
fcntl_mod: 2
Enter to db3open
db3open, fcntl:0
db3open, fcntl2:0, 0, 1, 0
Enter to db3open
db3open, fcntl:0
db3open, fcntl2:0, 0, 1, 0
Enter to db3open
db3open, fcntl:0
db3open, fcntl2:0, 0, 1, 0
Enter to db3open
db3open, fcntl:0
db3open, fcntl2:0, 0, 1, 0
Enter to db3open
db3open, fcntl:0
db3open, fcntl2:0, 0, 1, 0
Совершаем изменения...
Preparing...                    
###################################################################################################
[100%]
1: icewm                        
###################################################################################################
[100%]
Enter to db3open
db3open, fcntl:0
db3open, fcntl2:0, 0, 1, 0
Enter to db3open
db3open, fcntl:0
db3open, fcntl2:0, 0, 1, 0
Enter to db3open
db3open, fcntl:0
db3open, fcntl2:0, 0, 1, 0
Enter to db3open
db3open, fcntl:0
db3open, fcntl2:0, 0, 1, 0
Enter to db3open
db3open, fcntl:0
db3open, fcntl2:0, 0, 1, 0
Enter to db3open
db3open, fcntl:0
db3open, fcntl2:0, 0, 1, 0
Enter to db3open
db3open, fcntl:0
db3open, fcntl2:0, 0, 1, 0
Enter to db3open
db3open, fcntl:0
db3open, fcntl2:0, 0, 1, 0
Enter to db3open
db3open, fcntl:0
db3open, fcntl2:0, 0, 1, 0
Enter to db3open
db3open, fcntl:0
db3open, fcntl2:0, 0, 1, 0
Завершено.
RPMDBHandler:WriteLock1
rpmdbOpen:2, 1a4
Enter to db3open
db3open, fcntl:0
db3open, fcntl2:0, 1, 1, 0
db3open, fcntl3:0, 1, 1, 1
fcntl_mod: 2
LockRpm:1
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
apt&gt;


</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25826</commentid>
    <comment_count>16</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2005-06-15 22:01:54 +0400</bug_when>
    <thetext>Hopefully fixed in slightly different way.
Please test rpm-4.0.4-alt44.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>429</attachid>
            <date>2004-06-09 18:01:09 +0400</date>
            <delta_ts>2004-06-09 18:01:09 +0400</delta_ts>
            <desc>Test of locking</desc>
            <filename>rpmlock_test.tar.gz</filename>
            <type>application/x-tgz</type>
            <size>789</size>
            <attacher name="Sergey V Turchin">zerg</attacher>
            
              <data encoding="base64">H4sIAH8Wx0AAA+2Va2/aMBSG+Zr8igNTt1BSQkoBaaz90sFUQS/qRdOkSVFIHIhIbeQ4rbqK/75j
p+HWqp00sWqSHyESn5tfO8fJqT8lUZyQ0hZpuI1G++Cg1EA67fWronNQwpBW0223O+0mxrv7zU4J
GtsUVZClwucApV+Ej1+Le8v/n+InyWfTGNdqsHfiZCl3YhokWUhgjwGf3SYsmHqCpGJtUA9mM9Mw
31u75u/ZfKzbmOON87/fbLny/Lfdttt0Wx2Mb6JVn/9/gfmhOPBfUhHGrD45Wjcl8WjTxmM6lrYV
Y0ZjjP2D5IfUkZ+bPD3ETw8lcHlx6g3Pjwf9k2EPACrOnc8dTHWwOZ0LP5j6Y5JWTDOmAoIJwW6V
LWtVzUcTwHE4ERmn4EIcrZeKU5CBJASfhnBPIJ2wLME7PxarmQ2Zie6Q0U8CKMEEwVQUWJThq48x
YQPjQNU7URWtqgL3E0IhppiZjTCuKIfZ/h2LQwiJH8rotI7hUn4UdvEOtzALcCBd+N810RYl9cQT
DzMCh9D3Lr8Ojwdd03E2Hd8vlePJLOcPpOOq1xt4V73rhUd2tUBHY2FJUGoxDvGOzQi1VvfLPsdp
z8+GP2yQx7UqI3FjLBl9CHuuXLKkWGYXioCAigTD7L73rXc9HNgfo6S6zHlUeUHCUoJBquxKERzN
zQ33k3Ox8vJh37s5Uwufm3kf3PoxtdSW+nwc2NgXPt/dlYM7yBtDKhtjoTi0qksZ0Qy7V0QWNifh
3IbK9QTbBH88ozB6gCwlvP6TVqq5MNOQU1AvYBkVhOcb+GTLqHq0xabm3E+wuy18vqRqGo+mIW1x
ZK31LQpUdnQbG2UM45nAnXorhKHqYynMXqpBjarOPL+QJCUvFK7VZFmpYTnXEbSkCCnQeHFX1KTl
chluaH6CbhknIGS7tyAlAaNhKv3PBal6jjPixJ/KIYozcmWvzFTMshMWxTeWai/FL1cNK6QJITPL
LZyLRLX6ObbNe79oNRqNRqPRaDQajUaj0Wg0Go1Go9FoNBqNZsv8BrI+l70AKAAA
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>937</attachid>
            <date>2005-06-14 15:53:09 +0400</date>
            <delta_ts>2005-06-14 15:53:09 +0400</delta_ts>
            <desc>rpm-4_0-4.0.4-lock-fixed.patch</desc>
            <filename>rpm-4_0-4.0.4-lock-fixed.patch</filename>
            <type>text/plain</type>
            <size>631</size>
            <attacher name="Anton Farygin">rider</attacher>
            
              <data encoding="base64">ZGlmZiAtdXJOIHJwbS00XzAtNC4wLjQub3JpZy9ycG1kYi9kYjMuYyBycG0tNF8wLTQuMC40L3Jw
bWRiL2RiMy5jCi0tLSBycG0tNF8wLTQuMC40Lm9yaWcvcnBtZGIvZGIzLmMJMjAwNS0wMi0xMCAx
NToxNTo0MiArMDMwMAorKysgcnBtLTRfMC00LjAuNC9ycG1kYi9kYjMuYwkyMDA1LTA2LTE0IDE1
OjQ1OjUwICswNDAwCkBAIC0xMTA3LDcgKzExMDcsNiBAQAogCQlwckRiaU9wZW5GbGFncyhvZmxh
Z3MsIDApLCBkYmktPmRiaV9tb2RlKTsKIAogICAgIGlmIChyYyA9PSAwKSB7Ci0Jc3RhdGljIGlu
dCBfbG9ja2RiZmQgPSAwOwogCiAJLypALW1vZHVuY29uQCovIC8qIEZJWDogYW5ub3RhdGUgZGIz
IG1ldGhvZHMgKi8KIAlyYyA9IGRiX2NyZWF0ZSgmZGIsIGRiZW52LCBkYmktPmRiaV9jZmxhZ3Mp
OwpAQCAtMTMxMiw3ICsxMzExLDcgQEAKIAkgICAgICogREJFTlYgcGxheWVyIG1heSBhbHJlYWR5
IGhhdmUgYWNxdWlyZWQgdGhlIGxvY2suCiAJICAgICAqLwogCSAgICBpZiAocmMgPT0gMCAmJiBk
YmktPmRiaV9sb2NrZGJmZCAmJgotCQkoIWRiaS0+ZGJpX3VzZV9kYmVudiB8fCBfbG9ja2RiZmQr
KyA9PSAwKSkKKwkJIWRiaS0+ZGJpX3VzZV9kYmVudikKIAkgICAgewogCQlpbnQgZmRubyA9IC0x
OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>