LINUX.ORG.RU

Странный файловый дескриптор


0

2

при стечении обстоятельств bash зависает на recv()

# strace -p 629
Process 629 attached - interrupt to quit
recv(1251008,

но при этом:

# ls -l /proc/629/fd
total 0
lrwx------ 1 0 0 64 Nov 30 05:45 0 -> /dev/pts/0
lrwx------ 1 0 0 64 Nov 30 05:45 1 -> /dev/pts/0
lrwx------ 1 0 0 64 Nov 30 05:45 2 -> /dev/pts/0
lr-x------ 1 0 0 64 Nov 30 05:45 255 -> /data/tests/pmd/scripts/test_runner.sh
lr-x------ 1 0 0 64 Nov 30 05:45 8 -> /dev/__properties__ (deleted)

собственно что за странный дескриптор 1251008 который невиден через /proc?

★★★★★

попытался приаттачится gdb получил воттакую трассу (шапка):


(gdb) bt
#0 0x000c0c30 in __lll_lock_wait_private ()
#1 0x0009c660 in free ()
#2 0x0001e198 in set_pipestatus_array (ps=0x0, nproc=0) at variables.c:4227
#3 0x0001b490 in execute_simple_command (simple_command=<value optimized out>,
pipe_in=<value optimized out>, pipe_out=1241004, async=293960, fds_to_close=0x0) at execute_cmd.c:3044
#4 0x00019a74 in execute_command_internal (command=0x147598, asynchronous=0, pipe_in=-1, pipe_out=-1,
fds_to_close=0x15d920) at execute_cmd.c:671
#5 0x00017cd4 in execute_command (command=0x147598) at execute_cmd.c:352
#6 0x00018d00 in execute_connection (command=0x147568, asynchronous=0, pipe_in=-1, pipe_out=-1,
fds_to_close=0x15db78) at execute_cmd.c:1582


смущает что трасса не клеится с strace

cvv ★★★★★
() автор топика

именованные FIFO во всех полях, да?

GateKeeper ★★
()
Ответ на: комментарий от kam

ps ax не видит никаких лишних процессов

cvv ★★★★★
() автор топика
Ответ на: комментарий от ananas

branch 'ddt-3.0' of git://gitorious.org/omap-ddt/omap-ddt

файл pmd/test_code/scripts/test_runner.sh

cvv ★★★★★
() автор топика

lsof на всякий случай глянь. Если скинешь ещё ps awwux, pstree -p то будет круто.

true_admin ★★★★★
()
Ответ на: комментарий от cvv

Интенсивная порча путем записи за границы выделенной памяти. Термин «топтание» слышу первый раз :)

tailgunner ★★★★★
()

Вобщем траблу обошел путем апгрейда bash с 3.2 до 4.1

мне покачто не удалось подвесить bash 4.1

cvv ★★★★★
() автор топика
Ответ на: комментарий от cvv

Догадка подтверждается. Такое ощущение, что strace для этой архитектуры неправильно выбирает имя для syscall. (recv вместо futex). И большое число это не номер файлового дескриптора, а адрес памяти футекса.

Подобные дедлоки (ll_lock_wait) у меня случались в кривом коде. Когда в обрабочике сигнала использовалась не signal-safe функция

anonymous
()
Ответ на: комментарий от anonymous

Багу бы завели чтоли на strace... Если поправят, Вы спасёте рабочие часы многих =)

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от anonymous

кстати ты не с курсе где можно взять полный список signal-safe функций из glibc? или такого списка просто не существует?

cvv ★★★★★
() автор топика
Ответ на: комментарий от Chumka

Это хорошо известный список сисколов а меня интерсует список ф-й glibc который существенно шире

cvv ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.