Bug 15356 - futex() подвисает
: futex() подвисает
Status: CLOSED NOTABUG
: Sisyphus
(All bugs in Sisyphus/kernel-image-std-def)
: unstable
: all Linux
: P2 critical
Assigned To:
:
: http://lkml.org/lkml/2005/3/21/364
:
:
: 16292 17641 19391
  Show dependency tree
 
Reported: 2008-04-15 01:11 by
Modified: 2012-03-16 13:59 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2008-04-15 01:11:30
Старая проблема с зависанием futex(), в LKM есть рецепт, как воспроизвести этот
баг с xmms+jack. Ещё я заметил, что irssi в скрине стал зависать именно на
вызове futex().

У меня это происходит на 2.6.18-std-smp-alt12.
Steps to Reproduce:
см. ссылку!
------- Comment #1 From 2008-06-13 13:00:39 -------
*** This bug has been confirmed by popular vote. ***
------- Comment #2 From 2008-07-11 13:25:48 -------
Ещё актуально?
------- Comment #3 From 2008-07-11 13:36:56 -------
Да.
------- Comment #4 From 2008-10-24 12:26:00 -------
Очень актуально, irssi виснет на футексе на 2.6.26-wks-pae.
------- Comment #5 From 2008-10-24 12:42:14 -------
Фигасе.
Это от конфига зависит или как?
------- Comment #6 From 2008-10-24 12:55:28 -------
4.1 бранч irssi виснет тоже, 2.6.25-std-ll-alt8.M41.1
------- Comment #7 From 2009-02-18 12:34:03 -------
у меня виснет  k3b-1.0.4-alt3 на ядре 2.6.27-std-def-alt11

метод воспроизведения:
1. начать копировать двд-диск.
2. k3b создает образ, 50% выполнения (вторые 50% - это запись на чистый диск
скопированного).
3. открывает лоток и тут же его закрывает (с полным диском). 
4. окно виснет без элементов управления (серый прямоугольник)

$ strace -p 8096 -fF -o k3b-strace.log
Process 8096 attached - interrupt to quit
^CProcess 8096 detached

в логе одна строка:
8096  futex(0x844670c, FUTEX_WAIT_PRIVATE, 2, NULL <unfinished ...>
------- Comment #8 From 2009-03-31 12:53:03 -------
Попал с psi на qt-4.5, виснет при выходе на futex на всех ядрах, включая в
контейнере ovz 2.6.18.

Есть исправление для этой проблемы ? Я нашёл только один старый патч
http://lkml.org/lkml/2005/3/21/386 и без продолжения этой темы.

Или, проблема всё-таки в userspace ?
------- Comment #9 From 2009-03-31 16:03:04 -------
futex нужен для того чтобы на нем виснуть. Возможно в userspace есть deadlock
------- Comment #10 From 2009-03-31 20:40:20 -------
В таком количестве разных юзерспейсов один плавающий дедлок?
------- Comment #11 From 2009-03-31 23:00:49 -------
можно выявить последовательность вызовов futexа которое заканчивается
повисанием?
------- Comment #12 From 2009-04-01 17:19:45 -------
(В ответ на комментарий №11)
> можно выявить последовательность вызовов futexа которое заканчивается
> повисанием?

а что, k3b у вас работает и не виснет? 
(см. условия в комменте #7)
------- Comment #13 From 2009-04-14 17:54:47 -------
У одного пользователя стабильно раз в час-два виснет firefox, сидит на branch
5.0, firefox-3.0.8, ядро 2.6.27-std-def-alt15

strace -f -p <pid> показывает 4 зависших futex
------- Comment #14 From 2009-04-15 14:39:13 -------
(В ответ на комментарий №13)
> У одного пользователя стабильно раз в час-два виснет firefox, сидит на branch
> 5.0, firefox-3.0.8, ядро 2.6.27-std-def-alt15
> 
> strace -f -p <pid> показывает 4 зависших futex

После удаления всего профиля и импорта только закладок (никаких расширений).
Подвисания стали носить другой характер - теперь очень быстрый бесконечный
цикл, жрёт весь проц.

[pid 17100] clock_gettime(CLOCK_REALTIME, {1239789551, 139823}) = 0
[pid 17100] futex(0xa77fefc4, FUTEX_WAIT_PRIVATE, 1, {0, 19914177}) = -1
ETIMEDOUT (Connection timed out)
[pid 17100] gettimeofday({1239789551, 20225}, NULL) = 0
[pid 17100] clock_gettime(CLOCK_REALTIME, {1239789551, 20340802}) = 0
[pid 17100] futex(0xa77fefc4, FUTEX_WAIT_PRIVATE, 1, {0, 19884198}) = -1
ETIMEDOUT (Connection timed out)
[pid 17100] gettimeofday({1239789551, 66618}, NULL) = 0
[pid 17100] clock_gettime(CLOCK_REALTIME, {1239789551, 66721114}) = 0
[pid 17100] futex(0xa77fefc4, FUTEX_WAIT_PRIVATE, 1, {0, 19896886}) = -1
ETIMEDOUT (Connection timed out)
[pid 17100] gettimeofday({1239789551, 86806}, NULL) = 0
[pid 17100] clock_gettime(CLOCK_REALTIME, {1239789551, 86849329}) = 0
[pid 17100] futex(0xa77fefc4, FUTEX_WAIT_PRIVATE, 1, {0, 19956671}) = -1
ETIMEDOUT (Connection timed out)
[pid 17100] gettimeofday({1239789551, 106945}, NULL) = 0
[pid 17100] clock_gettime(CLOCK_REALTIME, {1239789551, 106987948}) = 0
[pid 17100] futex(0xa77fefc4, FUTEX_WAIT_PRIVATE, 1, {0, 19957052}) = -1
ETIMEDOUT (Connection timed out)
[pid 17100] gettimeofday({1239789551, 127085}, NULL) = 0
[pid 17100] clock_gettime(CLOCK_REALTIME, {1239789551, 127128823}) = 0
[pid 17100] futex(0xa77fefc4, FUTEX_WAIT_PRIVATE, 1, {0, 19956177}) = -1
ETIMEDOUT (Connection timed out)
[pid 17100] gettimeofday({1239789551, 147298}, NULL) = 0
[pid 17100] clock_gettime(CLOCK_REALTIME, {1239789551, 147341509}) = 0
[pid 17100] futex(0xa77fefc4, FUTEX_WAIT_PRIVATE, 1, {0, 19956491}) = -1
ETIMEDOUT (Connection timed out)
[pid 17100] gettimeofday({1239789551, 167531}, NULL) = 0
------- Comment #15 From 2010-07-02 10:16:51 -------
Это проблема неправильного юзерспейса.