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

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

    <bug>
          <bug_id>9881</bug_id>
          
          <creation_ts>2006-08-15 20:17:27 +0400</creation_ts>
          <short_desc>udevsettle race during startup</short_desc>
          <delta_ts>2006-08-28 18:32:21 +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>udev</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>P2</priority>
          <bug_severity>major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergey Vlasov">vsu</reporter>
          <assigned_to name="Anton Farygin">rider</assigned_to>
          <cc>arseny</cc>
    
    <cc>shaba</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>39566</commentid>
    <comment_count>0</comment_count>
    <who name="Sergey Vlasov">vsu</who>
    <bug_when>2006-08-15 20:17:27 +0400</bug_when>
    <thetext>При загрузке системы с установленным udev-096-alt1 вызов udevsettle иногда
завершается аварийно (Populating /dev [FAILED]), в результате дальнейшая
загрузка продолжается, не дожидаясь завершения создания всех файлов устройств,
что в дальнейшем приводит к различным проблемам.  Кроме того, скрипт
/etc/init.d/udevd при ошибке udevsettle отмонтирует tmpfs, ранее смонтированный
в /dev, но перед этим не останавливает запущенный udevd, в результате udevd
продолжает писать в /dev на корне вместо tmpfs.

Как выяснилось, причина ненадёжной работы udevsettle - race при инициализации. 
В udevsettle предполагается, что запуск udevd выполняется с ключом --daemon;
запущенный таким образом udevd сначала создаёт файл /dev/.udev/uevent_seqnum, и
только потом выполняет fork() и начинает работать как демон.  Однако в
/etc/init.d/udevd запуск udevd выполняется без ключа --daemon, вместо этого
используется ключ --make-pidfile функции start_daemon.  В результате после
завершения выполнения функции start_daemon инициализация демона может быть ещё
не завершена, и последующий вызов udevsettle может обнаружить отсутствие файла
/dev/.udev/uevent_seqnum, в этом случае он завершается с ошибкой.

Наиболее правильный способ решения данной проблемы - добавить создание pid-файла
в сам udevd и не использовать ключ --make-pidfile.  Однако есть более простой
способ обхода проблемы - создать файл /dev/.udev/uevent_seqnum заранее, чтобы
при вызове udevsettle он гарантированно существовал.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39567</commentid>
    <comment_count>1</comment_count>
      <attachid>1583</attachid>
    <who name="Sergey Vlasov">vsu</who>
    <bug_when>2006-08-15 20:20:03 +0400</bug_when>
    <thetext>Created attachment 1583
fake /dev/.udev/uevent_seqnum for udevsettle

Можно просто записать 0 в /dev/.udev/uevent_seqnum. Вызовы sync, которые были
вставлены при попытке скрыть race, теперь можно удалить (они всё равно не
давали требуемого эффекта).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39607</commentid>
    <comment_count>2</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2006-08-17 19:14:48 +0400</bug_when>
    <thetext>Сергей, мне кажется что лучше тебя никто эту ошибку всё равно не исправит.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39819</commentid>
    <comment_count>3</comment_count>
    <who name="Sergey Vlasov">vsu</who>
    <bug_when>2006-08-28 18:31:57 +0400</bug_when>
    <thetext>Fixed in udev-097-alt1.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>1583</attachid>
            <date>2006-08-15 20:20:03 +0400</date>
            <delta_ts>2006-08-15 20:20:03 +0400</delta_ts>
            <desc>fake /dev/.udev/uevent_seqnum for udevsettle</desc>
            <filename>udevd-fake-seqnum.patch</filename>
            <type>text/plain</type>
            <size>827</size>
            <attacher name="Sergey Vlasov">vsu</attacher>
            
              <data encoding="base64">LS0tIC9ldGMvaW5pdC5kL3VkZXZkLnJwbW9yaWcJMjAwNi0wNy0xMSAyMzozNjoxMCArMDQwMAor
KysgL2V0Yy9pbml0LmQvdWRldmQJMjAwNi0wOC0xNSAxNzoyMTo0OSArMDQwMApAQCAtMTQ2LDcg
KzE0NiwxMSBAQAogCSMgaW4gdGhpcyBjYXNlIHdlIHNob3VsZCBtYWtlIHN1cmUgdGhhdCBob3Rw
bHVnIGRpZG4ndCBpbnZva2UgYW4gaW5zdGFuY2Ugb2YgdWRldmQKIAkjIGJlZm9yZQogCS9zYmlu
L3BpZG9mICR1ZGV2ZCA+L2Rldi9udWxsICYmIHN0b3BfZGFlbW9uIC0tbm8tYW5ub3VuY2UgLS1w
aWRmaWxlIG5vbmUgJHVkZXZkCi0JCQorCisJIyBGYWtlIHVldmVudF9zZXFudW0gdG8gYXZvaWQg
cmFjZSBiZXR3ZWVuIHVkZXZkIHN0YXJ0dXAgYW5kIHVkZXZzZXR0bGUKKwlta2RpciAtcCAiJHVk
ZXZfcm9vdC8udWRldiIKKwllY2hvIDAgPiIkdWRldl9yb290Ly51ZGV2L3VldmVudF9zZXFudW0i
CisKIAkjIFdlIHdhbnQgdG8gc3RhcnQgdWRldmQgb3Vyc2VsdmVzIGlmIGl0IGlzbid0IGFscmVh
ZHkgcnVubmluZy4gIFRoaXMKIAkjIGxldHMgdWRldmQgcnVuIGF0IGEgc2FuZSBuaWNlIGxldmVs
Li4uCiAJaWYgWyAteiAiJFJVTl9GUk9NX1NZU0lOSVQiIF07IHRoZW4KQEAgLTE1Niw5ICsxNjAs
NyBAQAogCWZpCiAJUkVUVkFMPSRbJFJFVFZBTCskP10KIAlbICIkUkVUVkFMIiA9PSAiMCIgXSAm
JiBlY2hvICIiID4vcHJvYy9zeXMva2VybmVsL2hvdHBsdWcKLQlzeW5jCiAJL3NiaW4vdWRldnRy
aWdnZXIgCi0Jc3luYwogCWFjdGlvbiAiUG9wdWxhdGluZyAvZGV2ICIgL3NiaW4vdWRldnNldHRs
ZSAKIAlSRVRWQUw9JFskUkVUVkFMKyQ/XQogCQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>