Я пытаюсь скомпилировать Ruby 1.9.1-p0 на HP-UX. После небольшого изменения в ext / pty.c он успешно компилируется, хотя с lot предупреждающих сообщений (около 5 КБ). Когда я запускаю самотестирование с помощью команды «make test», происходит сбой и дамп памяти со следующей ошибкой:
sendig: сбой useracc. 0x9fffffffbf7dae00 0x00000000005000
Pid 3044 был уничтожен из-за ошибки записи контекста сигнала - возможно переполнение стека.
Незаконное указание
Из-за поиска этой проблемы, незаконная инструкция - это просто сигнал, который система использует для уничтожения процесса и не связана с проблемой. Казалось бы, существует проблема с восстановлением контекста при вызове обработчика сигнала. Загрузка ядра в gdb не показывает особенно глубокого стека, поэтому я не думаю, что «возможное переполнение стека» также является правильным.
Вывод обратной трассировки стека GDB выглядит следующим образом:
#0 0xc00000000033a990:0 in __ksleep+0x30 () from /usr/lib/hpux64/libc.so.1
#1 0xc0000000001280a0:0 in __mxn_sleep+0xae0 ()
from /usr/lib/hpux64/libpthread.so.1
#2 0xc0000000000c0f90:0 in <unknown_procedure> + 0xc50 ()
from /usr/lib/hpux64/libpthread.so.1
#3 0xc0000000000c1e30:0 in pthread_cond_timedwait+0x1d0 ()
from /usr/lib/hpux64/libpthread.so.1