Summary: | Segfault | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Andrey Rahmatullin <wrar> |
Component: | ash | Assignee: | Alexey Gladkov <legion> |
Status: | CLOSED WONTFIX | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P3 | CC: | glebfm, ldv, legion, placeholder |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
Andrey Rahmatullin
2010-05-05 09:39:06 MSD
Падает в /usr/share/hibernate/scriptlets.d/lockfile в LockFileGet, очевидно на read. В файле /var/run/hibernate-script.pid как раз содержится строка 19540. Ошибка явно где-то в expand.c::ifsbreakup(), а началось всё, видимо, после 55c46b72, в котором эта функция была использована для разбора read. Нужно более подробный тесткейс. Вы можете найти каком файле оно падает и приаттачить его ? (В ответ на комментарий №2) > Нужно более подробный тесткейс. Куда уж подробнее. Вот более краткий - не сделаю. > Вы можете найти каком файле оно падает и приаттачить его ? Предыдущего комментария недостаточно? (В ответ на комментарий №3) > > Вы можете найти каком файле оно падает и приаттачить его ? > Предыдущего комментария недостаточно? Нет. Нужно содержимое файла. Сейчас невозможно понять на чём падает парсер. Тесткейсы на read, которые раньше у меня падали сейчас работают. (В ответ на комментарий №4) > > Предыдущего комментария недостаточно? > Нет. Нужно содержимое файла. Оно целиком приведено в комментарии. > Сейчас невозможно понять на чём падает парсер. *разводит руками* > Тесткейсы на read, которые раньше у меня падали сейчас работают. Тесткейс, сделанный из куска указанного в том комментарии кода, и читающий тот же самый файл, и у меня не падает. У меня и hibernate(8) падает не всегда, что я сделаю. (В ответ на комментарий №5) > Оно целиком приведено в комментарии. Я делаю: $ cat > /tmp/z.sh <<EOF #!/bin/ash LockFileGet() { local other_pid read other_pid < /tmp/zzz.pid } LockFileGet EOF $ echo 19540 > /tmp/zzz.pid $ for i in `seq 0 10000`; do ./z.sh; done; echo $?; 0 $ printf '19540' > /tmp/zzz.pid $ for i in `seq 0 10000`; do ./z.sh; done; echo $? 0 $ cat > /tmp/z.sh <<EOF #!/bin/ash LockFileGet() { local other_pid read other_pid < /tmp/zzz.pid } for i in `seq 0 10000`; do LockFileGet; done EOF $ echo 19540 > /tmp/zzz.pid $ ./z.sh $ printf '19540' > /tmp/zzz.pid $ ./z.sh $ Всё работает корректно. Увы. > > Сейчас невозможно понять на чём падает парсер. > *разводит руками* /me тоже разводит руками > Тесткейс, сделанный из куска указанного в том комментарии кода, и читающий тот > же самый файл, и у меня не падает. У меня и hibernate(8) падает не всегда, что > я сделаю. Я тут бессилен. Ещё один вопрос: Падает случайно не на просыпании ? Нет, может упасть перед засыпанием, может после просыпания (при просыпании выполняется LockFilePut, там такой же read). |