dadv: (Default)
Choose your future ([personal profile] dadv) wrote2012-05-01 04:54 pm
Entry tags:

KSE R.I.P.

При обновлении удаленного сервера FreeBSD 6.4-STABLE до 7.4-STABLE через source upgrade path, а потом и до 8.3-STABLE, столкнулся с одной проблемой. После поднятия системы до 7.4 приложения из портов не пересобирал, имея в ядре options COMPAT_FREEBSD6 - поддержку бинарной совместимости для старых приложений. В таком состоянии система прекрасно отработала неделю, выполняя всё множество функций.

На втором этапе, после обновления до 8.3, перестали работать тредовые приложения, в первую очередь все milters. kdump показал:

18998 spamass-milter CALL  #381
18998 spamass-milter RET   #381 -1 errno 78 Function not implemented
...
18998 spamass-milter GIO   fd 2 wrote 20 bytes
      "kse_create() failed
      "

Оказалось, что из восьмерки выкинули KSE - старую ядерную реализацию многопоточности M:N, не сохранив бинарную совместимость на уровне syscalls, а только на уровне замены библиотек, то есть для работы старых многопоточных бинарников без их пересборки нужно написать в /etc/libmap.conf:

libpthread.so.1         libthr.so.1
libpthread.so.2         libthr.so.2
libkse.so.3             libthr.so.3

Получился неприятный сюрприз. Но в итоге всё заработало. Вообще, это документировано в /usr/src/UPDATING в записи 20080312, но кто ж помнит прочитанное однажды четыре года назад и ни разу не использованное на практике :-)


Post a comment in response:

This account has disabled anonymous posting.
(will be screened if not validated)
If you don't have an account you can create one now.
No Subject Icon Selected
More info about formatting

Loading anti-spam test...

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org