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

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

    <bug>
          <bug_id>18436</bug_id>
          
          <creation_ts>2009-01-04 06:27:22 +0300</creation_ts>
          <short_desc>/sbin/limited выставляет лимиты в неправильном порядке</short_desc>
          <delta_ts>2009-02-09 03:57:30 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>service</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>patch</keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Rusakov">ktirf</reporter>
          <assigned_to name="placeholder@altlinux.org">placeholder</assigned_to>
          <cc>glebfm</cc>
    
    <cc>ldv</cc>
    
    <cc>legion</cc>
    
    <cc>mike</cc>
    
    <cc>placeholder</cc>
    
    <cc>vt</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>83867</commentid>
    <comment_count>0</comment_count>
      <attachid>3185</attachid>
    <who name="Alexey Rusakov">ktirf</who>
    <bug_when>2009-01-04 06:27:22 +0300</bug_when>
    <thetext>Created attachment 3185
Исправление порядка выставления лимитов в limited

Если попытаться задать для некоторой программы (в моём случае это был pulseaudio, но это не имеет значения) через /etc/sysconfig/limits.d/ и мягкий, и жёсткий лимиты, то легко создать ситуацию, при которой /sbin/limited ломается на первом же вызове ulimit. Последовательность действий у меня была следующая:
1. Прописываем в /etc/sysconfig/limits.d/pulseaudio два лимита: допустим, RLIMIT_SOFT_RTPRIO=7 и RLIMIT_HARD_RTPRIO=9.
2. service pulseaudio start
  Вместо запущенного pulseaudio получаем ругань на Invalid argument при выставлении real-time priority.
3. Выполняем ulimit -H -r 9
4. service pulseaudio start проходит без проблем.
А всё потому, что /sbin/limited сначала выставляет все мягкие лимиты, а потом все жёсткие. А если сделать ulimit -S -r 7 при жёстком лимите 0 (по умолчанию), то будет тот же самый invalid argument.
Очевидный патч на limited прилагается.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84029</commentid>
    <comment_count>1</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2009-01-09 04:09:24 +0300</bug_when>
    <thetext>0.5.18-alt1-2-ge6f5138</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84335</commentid>
    <comment_count>2</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2009-01-13 00:49:34 +0300</bug_when>
    <thetext>Да, проспали.  Если просто поменять местами порядок установки лимитов, то они не будут выставляться в других случаях.

Вот пример:

# (ulimit -Hn; ulimit -Sn)
1024
1024
# (ulimit -Hn 1023; ulimit -Sn 1022)
-bash: ulimit: open files: cannot modify limit: Invalid argument
# (ulimit -Sn 1025; ulimit -Hn 1026)
-bash: ulimit: open files: cannot modify limit: Invalid argument

Т.е. повышение лимита нужно начинать с hard, а понижать -- начиная с soft.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84337</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2009-01-13 00:58:37 +0300</bug_when>
    <thetext>Тогда нужно несколько иначе выставлять лимит. set_ulimits() должна обрабатывать сразу оба типа лимитов.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84338</commentid>
    <comment_count>4</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2009-01-13 01:01:57 +0300</bug_when>
    <thetext>(In reply to comment #3)
&gt; Тогда нужно несколько иначе выставлять лимит. set_ulimits() должна обрабатывать
&gt; сразу оба типа лимитов.

Она должна обрабатывать сразу оба типа лимитов, но самое главное -- она должна читать текущие значения лимитов для того, чтобы определить порядок их установки.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84339</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2009-01-13 01:11:54 +0300</bug_when>
    <thetext>Я сейчас попробую.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84407</commentid>
    <comment_count>6</comment_count>
      <attachid>3213</attachid>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2009-01-14 14:14:02 +0300</bug_when>
    <thetext>Created attachment 3213
limited v1

На самом деле, сразу определить правильный порядок весьма хлопотное занятие. Вот одно из возможных вариантов. Его плюс он маленький и простой.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85046</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2009-01-26 21:08:25 +0300</bug_when>
    <thetext>Dmitry, please pull the latest git tree from:

git.alt:/people/legion/packages/service.git

I think we can close this bug. Suggest: Resolve =&gt; Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85587</commentid>
    <comment_count>8</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2009-02-09 03:57:30 +0300</bug_when>
    <thetext>Hopefully fixed in 0.5.19-alt1</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3185</attachid>
            <date>2009-01-04 06:27:22 +0300</date>
            <delta_ts>2009-01-04 06:27:22 +0300</delta_ts>
            <desc>Исправление порядка выставления лимитов в limited</desc>
            <filename>limited-0.5.18-set-limits-properly.patch</filename>
            <type>text/plain</type>
            <size>236</size>
            <attacher name="Alexey Rusakov">ktirf</attacher>
            
              <data encoding="base64">LS0tIGxpbWl0ZWQub2xkCTIwMDktMDEtMDQgMDY6MjM6MTkgKzAzMDAKKysrIGxpbWl0ZWQJMjAw
OS0wMS0wNCAwNTo1NzozNSArMDMwMApAQCAtMTI1LDggKzEyNSw4IEBACiAJZG9uZQogfQogCi1z
ZXRfdWxpbWl0cyAtUwogc2V0X3VsaW1pdHMgLUgKK3NldF91bGltaXRzIC1TCiAKIGNtZD0KIGlm
IFsgLW4gIiR7TklDRV9QUklPUklUWS19IiBdICYmIG5pY2VfY21kPSIkKGFic29sdXRlIG5pY2Up
IjsgdGhlbgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>3213</attachid>
            <date>2009-01-14 14:14:02 +0300</date>
            <delta_ts>2009-01-14 14:15:34 +0300</delta_ts>
            <desc>limited v1</desc>
            <filename>limited</filename>
            <type>text/plain</type>
            <size>3428</size>
            <attacher name="Alexey Gladkov">legion</attacher>
            
              <data encoding="base64">IyEvYmluL3NoIC1lZnUKIwojIENvcHlyaWdodCAoQykgMjAwOCAgQWxleGV5IEdsYWRrb3YgPGxl
Z2lvbkBhbHRsaW51eC5vcmc+CiMgQ29weXJpZ2h0IChDKSAyMDA4ICBEbWl0cnkgVi4gTGV2aW4g
PGxkdkBhbHRsaW51eC5vcmc+CiMKIyBSdW4gcHJvZ3JhbSB3aXRoIGxpbWl0ZWQgcmVzb3VyY2Vz
CiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUKIyBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojCiMgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9u
ZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQoj
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCgouIHNoZWxsLWVycm9yCi4gc2hlbGwtYXJncwoKc2hvd19oZWxw
KCkKewoJY2F0IDw8RU9GCmxpbWl0ZWQgLSBydW4gcHJvZ3JhbSB3aXRoIGxpbWl0ZWQgcmVzb3Vy
Y2VzLgoKVXNhZ2U6ICRQUk9HIFtvcHRpb25zXSBbLS1dIFtjb21tYW5kIFthcmddLi4uXQoKT3B0
aW9uczoKICAtbiwgLS1uYW1lPU5BTUUgICBhcHBseSBsaW1pdHMgY29uZmlndXJlZCBmb3IgdGhp
cyBwcm9ncmFtIG5hbWU7CiAgLVYsIC0tdmVyc2lvbiAgICAgcHJpbnQgcHJvZ3JhbSB2ZXJzaW9u
IGFuZCBleGl0OwogIC1oLCAtLWhlbHAgICAgICAgIHNob3cgdGhpcyB0ZXh0IGFuZCBleGl0LgoK
UmVwb3J0IGJ1Z3MgdG8gaHR0cDovL2J1Z3ppbGxhLmFsdGxpbnV4Lm9yZy8KCkVPRgoJZXhpdAp9
CgpwcmludF92ZXJzaW9uKCkKewoJY2F0IDw8RU9GCiRQUk9HIHZlcnNpb24gQFZFUlNJT05ACldy
aXR0ZW4gYnkgQWxleGV5IEdsYWRrb3YgPGxlZ2lvbkBhbHRsaW51eC5vcmc+CgpDb3B5cmlnaHQg
KEMpIDIwMDggIEFsZXhleSBHbGFka292IDxsZWdpb25AYWx0bGludXgub3JnPgpDb3B5cmlnaHQg
KEMpIDIwMDggIERtaXRyeSBWLiBMZXZpbiA8bGR2QGFsdGxpbnV4Lm9yZz4KVGhpcyBpcyBmcmVl
IHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUg
aXMgTk8Kd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCkVPRgoJZXhpdAp9CgpURU1QPWBnZXRvcHQgLW4gJFBS
T0cgLW8gIm46LCRnZXRvcHRfY29tbW9uX29wdHMiIC1sICJuYW1lOiwkZ2V0b3B0X2NvbW1vbl9s
b25nb3B0cyIgLS0gIiRAImAgfHwKCXNob3dfdXNhZ2UKZXZhbCBzZXQgLS0gIiRURU1QIgoKcHJv
Z25hbWU9CndoaWxlIDo7IGRvCgljYXNlICIkMSIgaW4KCQktbnwtLW5hbWUpIHNoaWZ0OyBwcm9n
bmFtZT0iJDEiCgkJCTs7CgkJLS0pIHNoaWZ0OyBicmVhawoJCQk7OwoJCSopIHBhcnNlX2NvbW1v
bl9vcHRpb24gIiQxIgoJCQk7OwoJZXNhYwoJc2hpZnQKZG9uZQoKWyAiJCMiIC1ndCAwIF0gfHwK
CXNob3dfdXNhZ2UgJ0luc3VmZmljaWVudCBhcmd1bWVudHMuJwoKWyAtbiAiJHByb2duYW1lIiBd
IHx8Cglwcm9nbmFtZT0iJHsxIyMqL30iCgpmb3IgY29uZiBpbiAvZXRjL3N5c2NvbmZpZy9saW1p
dHMgIi9ldGMvc3lzY29uZmlnL2xpbWl0cy5kLyRwcm9nbmFtZSI7IGRvCglbICEgLXMgIiRjb25m
IiBdIHx8IC4gIiRjb25mIgpkb25lCgojIFRoZSBzYW1lIGFzIC91c3IvYmluL3doaWNoIC0gaW4g
b3JkZXIgdG8gbWFrZSAid2hpY2giIGF2YWlsYWJsZSBiZWZvcmUKIyAvdXNyIGlzIG1vdW50ZWQK
YWJzb2x1dGUoKQp7Cglsb2NhbCBJRlM9OgoJZm9yIGkgaW4gJFBBVEg7IGRvCgkJWyAteCAiJGkv
JDEiIF0gfHwKCQkJY29udGludWUKCQlwcmludGYgJyVzJyAiJGkvJDEiCgkJcmV0dXJuIDAKCWRv
bmUKCXJldHVybiAxCn0KCnNldF91bGltaXQoKSB7Cglsb2NhbCBvcHQ9IiQxIiBuYW1lPSIkMiIK
CWxvY2FsIHByZXZfc2xpbWl0IHByZXZfaGxpbWl0IHNsaW1pdCBobGltaXQKCglwcmV2X3NsaW1p
dD0iJCh1bGltaXQgLVMkb3B0KSIKCXByZXZfaGxpbWl0PSIkKHVsaW1pdCAtSCRvcHQpIgoKCWV2
YWwgInNsaW1pdD1cIlwke1JMSU1JVF9TT0ZUXyRuYW1lOi0kcHJldl9zbGltaXR9XCI7CgkgICAg
ICBobGltaXQ9XCJcJHtSTElNSVRfSEFSRF8kbmFtZTotJHByZXZfaGxpbWl0fVwiOyIKCgl7IHVs
aW1pdCAtSCRvcHQgJGhsaW1pdCAmJiB1bGltaXQgLVMkb3B0ICRzbGltaXQ7IH0gMj4vZGV2L251
bGwgfHwKCXsgdWxpbWl0IC1TJG9wdCAkc2xpbWl0ICYmIHVsaW1pdCAtSCRvcHQgJGhsaW1pdDsg
fSAyPi9kZXYvbnVsbCB8fAoJCWZhdGFsICIkbmFtZTogVW5hYmxlIHNldCB1bGltaXQuIgp9Cgpm
b3IgcCBpbiBcCgljOkNPUkUgXAoJZDpEQVRBIFwKCWU6TklDRSBcCglmOkZTSVpFIFwKCWk6U0lH
UEVORElORyBcCglsOk1FTUxPQ0sgXAoJbTpSU1MgXAoJbjpOT0ZJTEUgXAoJcTpNU0dRVUVVRSBc
CglyOlJUUFJJTyBcCglzOlNUQUNLIFwKCXQ6Q1BVIFwKCXU6TlBST0MgXAoJdjpBUyBcCgl4OkxP
Q0tTIFwKCTsKZG8KCSMgQXR0ZW50aW9uOiB1bGltaXQgb3B0aW9ucyBhcmUgc2hlbGwtc3BlY2lm
aWMuCglzZXRfdWxpbWl0ICIke3AlOip9IiAiJHtwIyo6fSIKZG9uZQoKY21kPQppZiBbIC1uICIk
e05JQ0VfUFJJT1JJVFktfSIgXSAmJiBuaWNlX2NtZD0iJChhYnNvbHV0ZSBuaWNlKSI7IHRoZW4K
CSRuaWNlX2NtZCAtbiAiJE5JQ0VfUFJJT1JJVFkiIHRydWUgMj4vZGV2L251bGwgJiYKCQljbWQ9
IiRuaWNlX2NtZCAtbiAkTklDRV9QUklPUklUWSAtLSIKZmkKCmlmIFsgLW4gIiR7SU9OSUNFX1BS
SU9SSVRZLX0iIF0gJiYgaW9uaWNlX2NtZD0iJChhYnNvbHV0ZSBpb25pY2UpIjsgdGhlbgoJJGlv
bmljZV9jbWQgLXQgLWMgJElPTklDRV9QUklPUklUWSB0cnVlIDI+L2Rldi9udWxsICYmCgkJY21k
PSIkY21kICRpb25pY2VfY21kIC10IC1jICRJT05JQ0VfUFJJT1JJVFkgLS0iCmZpCgpleGVjICRj
bWQgIiRAIgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>