truss в aix6


В этой теме 9 ответов, 3 участника, последнее обновление  Alex 5 года/лет, 11 мес. назад.

  • Автор
    Сообщения
  • #13389

    Alex
    Участник

    Всем привет,

    только-только начал переползать на шестой аикс, наткнулся на странность с одним из разделов.

    # oslevel -s
    6100-06-05-1115
    # ulimit -a
    time(seconds) unlimited
    file(blocks) unlimited
    data(kbytes) unlimited
    stack(kbytes) unlimited
    memory(kbytes) unlimited
    coredump(blocks) unlimited
    nofiles(descriptors) unlimited
    threads(per process) unlimited
    processes(per user) unlimited

    # truss date
    execve(«/usr/bin/date», 0x2FF22CE0, 0x20012EF8) argc: 1
    kioctl(1, 22528, 0x00000000, 0x00000000) = 0
    Mon Oct 3 04:59:28 CDT 2011
    kwrite(1, » M o n O c t 3 0″.., 29) = 29
    kfcntl(1, F_GETFL, 0x00000001) = 67110914
    kfcntl(2, F_GETFL, 0x2FF22FFC) = 67110914
    _exit(0)

    Как можно видеть, отслеживаются только какие-то избранные системные вызовы. Логически объяснить такое поведение truss я не могу и в мане ничего путного не вижу. Подозреваю, что упустил что-то тривиальное. Да, рядом стоит аналогичный раздел с шестёркой (с другим набором работающих приложений) — там всё нормально.

    Направьте мысли в верном направлении.

  • #13413

    Serg
    Участник

    «это программа розыгрыш?»

  • #13416

    andrewk
    Участник

    не уверен, что поможет, но попробуйте сравнить файлы /etc/trcfmt — официально он для системы трейсинга, но чем черт не шутит.

  • #13417

    Alex
    Участник

    Разные, но это обусловлено разными oslevel-ами. По крайней мере перенос с соседнего раздела ничего не дал. Да, в районе smit trace я первым делом всё осмотрел — идентично.

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

  • #13460

    andrewk
    Участник

    а что говорит, например, lppchk -vm3? ничего?

  • #13466

    Alex
    Участник

    Пусто, ага, с установленными файлсетами там всё в норме. Более того, каких-то проблем с «проблемными» разделами я никогда не замечал и truss то на одном из них запустил, чтобы отследить, откуда libc файлы описания таймзоны подтягивает (из соседнего треда) 😉

  • #13469

    andrewk
    Участник

    я посмотрел внутри truss’а (strings) и у меня возникло впечатление, что все таблицы с сисколлами встроены прямо в него (hard-coded). Т.е. в самом truss по идее ломаться нечему. Если md5-суммы на обоих системах одинаковы, то с truss’ом все в порядке и проблема, по всей видимости, в окружении, в котором он запускается

  • #13475

    Alex
    Участник

    Там не совсем одинаковые oslevel-ы на шестёрках, так что сравнивать truss-ы бессмысленно, но даже обновление проблемного раздела до последнего TL-я меня не спасло. Смущает, что проявляется и на 5.3 и на 6.1. Обычно когда совсем ничего не ясно, решение тупое донельзя 😉

  • #13490

    Alex
    Участник

    Решение оказалось идиотским и тривиальным 😉
    Осталось понять, почему truss работает именно так, сейчас осмыслю.

  • #13491

    Alex
    Участник

    Нет, не понимаю.

    В-общем, катализатором решения явилось чтение вывода truss truss. Оказалось, что утилита лазает в /usr/lib/nls/msg. Там, в каталогах соответствующей локали, лежит что-то вроде прекешированого вывода strings для некоторых команд. Странность в том, что ничего полезного там для себя он открыть не может (в случае truss date по крайней мере). Тем не менее, можете сравнить на своих системах вывод:

    export LC_ALL=C truss date; и
    export LC_ALL=en_US truss date

    у меня вывод разительно отличается.

Для ответа в этой теме необходимо авторизоваться.