Page 3 of 6 FirstFirst 12345 ... LastLast
Results 31 to 45 of 80

Thread: Фильтрация нежелательного контента (dnsmasq+adsuck+dnscrypt)

  1. #31
    Quote Originally Posted by ryzhov_al View Post
    Гоняем совместно с MercuryV не первый день. У меня valgrind после старта поругается на что-то из стандартных библиотек и затихает. MercuryV (без использования valgrind) за четыре дня зафиксировал два факта роста кучи. Пока весь улов.
    Попробуйте откатить или обновить только libuv - других значительных изменений там не видно, видимо проблема именно в ней.

  2. #32
    Quote Originally Posted by AlexeyS View Post
    Попробуйте откатить или обновить только libuv - других значительных изменений там не видно, видимо проблема именно в ней.
    Да, вероятно. Проблема в том, что мы гадаем.

    Сегодня выделил из исходников dnscrypt-proxy в отдельный пакет libuv. Теперь можно будет играться с версией библиотеки вплоть до достижения результата
    Например, последний вариант dnscrypt-proxy 0.9.5 в репозитории сейчас включает libuv с сегодняшним коммитом:
    2c983fb994 unix: fix memory leak in libev
    Но первая проверка пока не утешает:
    Code:
    [INFO] Generating a new key pair
    [INFO] Done
    [INFO] Server certificate #1323392947 received
    [INFO] This certificate looks valid
    [INFO] Server key fingerprint is E07C:5F90:03C2:D764:A9FC:9A1E:6633:632A:0FE0:B1C5:5EF9:894A:FC7A:BA18:4A62:462E
    [INFO] Proxying from [127.0.0.1 (60053)] to [208.67.220.220 (53)]
    Thu Jun 14 16:10:02 UTC 2012 mapped: 2060K writeable/private: 524K shared: 0K Heap Size: 372 kB
    Thu Jun 14 16:15:01 UTC 2012 mapped: 2060K writeable/private: 524K shared: 0K Heap Size: 372 kB
    Thu Jun 14 16:20:01 UTC 2012 mapped: 2060K writeable/private: 524K shared: 0K Heap Size: 372 kB
    Thu Jun 14 16:25:01 UTC 2012 mapped: 2060K writeable/private: 524K shared: 0K Heap Size: 372 kB
    Thu Jun 14 16:30:01 UTC 2012 mapped: 2060K writeable/private: 524K shared: 0K Heap Size: 372 kB
    Thu Jun 14 16:35:01 UTC 2012 mapped: 2060K writeable/private: 524K shared: 0K Heap Size: 372 kB
    Thu Jun 14 16:40:02 UTC 2012 mapped: 2060K writeable/private: 524K shared: 0K Heap Size: 372 kB
    Thu Jun 14 16:45:01 UTC 2012 mapped: 2060K writeable/private: 524K shared: 0K Heap Size: 372 kB
    Thu Jun 14 16:50:01 UTC 2012 mapped: 2060K writeable/private: 524K shared: 0K Heap Size: 372 kB
    [INFO] Refetching server certificates
    [INFO] Server certificate #1323392947 received
    [INFO] This certificate looks valid
    [INFO] Server key fingerprint is E07C:5F90:03C2:D764:A9FC:9A1E:6633:632A:0FE0:B1C5:5EF9:894A:FC7A:BA18:4A62:462E
    Thu Jun 14 16:55:01 UTC 2012 mapped: 2124K writeable/private: 588K shared: 0K Heap Size: 436 kB
    Thu Jun 14 17:00:01 UTC 2012 mapped: 2124K writeable/private: 588K shared: 0K Heap Size: 436 kB
    Thu Jun 14 17:05:02 UTC 2012 mapped: 2768K writeable/private: 1232K shared: 0K Heap Size: 1080 kB
    Thu Jun 14 17:10:02 UTC 2012 mapped: 2768K writeable/private: 1232K shared: 0K Heap Size: 1080 kB
    Thu Jun 14 17:15:01 UTC 2012 mapped: 2768K writeable/private: 1232K shared: 0K Heap Size: 1080 kB
    Thu Jun 14 17:20:01 UTC 2012 mapped: 2768K writeable/private: 1232K shared: 0K Heap Size: 1080 kB
    Thu Jun 14 17:25:01 UTC 2012 mapped: 2768K writeable/private: 1232K shared: 0K Heap Size: 1080 kB
    Thu Jun 14 17:30:01 UTC 2012 mapped: 2768K writeable/private: 1232K shared: 0K Heap Size: 1080 kB
    Thu Jun 14 17:35:01 UTC 2012 mapped: 2768K writeable/private: 1232K shared: 0K Heap Size: 1080 kB
    Thu Jun 14 17:40:02 UTC 2012 mapped: 2768K writeable/private: 1232K shared: 0K Heap Size: 1080 kB
    Thu Jun 14 17:45:01 UTC 2012 mapped: 2768K writeable/private: 1232K shared: 0K Heap Size: 1080 kB
    Thu Jun 14 17:50:01 UTC 2012 mapped: 2768K writeable/private: 1232K shared: 0K Heap Size: 1080 kB
    [INFO] Refetching server certificates
    [INFO] Server certificate #1323392947 received
    [INFO] This certificate looks valid
    [INFO] Server key fingerprint is E07C:5F90:03C2:D764:A9FC:9A1E:6633:632A:0FE0:B1C5:5EF9:894A:FC7A:BA18:4A62:462E
    Thu Jun 14 17:55:01 UTC 2012 mapped: 2768K writeable/private: 1232K shared: 0K Heap Size: 1080 kB
    Thu Jun 14 18:00:01 UTC 2012 mapped: 2768K writeable/private: 1232K shared: 0K Heap Size: 1080 kB
    Thu Jun 14 18:05:01 UTC 2012 mapped: 2768K writeable/private: 1232K shared: 0K Heap Size: 1080 kB
    Thu Jun 14 18:10:01 UTC 2012 mapped: 2768K writeable/private: 1232K shared: 0K Heap Size: 1080 kB
    Thu Jun 14 18:15:02 UTC 2012 mapped: 2768K writeable/private: 1232K shared: 0K Heap Size: 1080 kB
    Thu Jun 14 18:20:01 UTC 2012 mapped: 2768K writeable/private: 1232K shared: 0K Heap Size: 1080 kB
    Thu Jun 14 18:25:01 UTC 2012 mapped: 2768K writeable/private: 1232K shared: 0K Heap Size: 1080 kB
    Thu Jun 14 18:30:01 UTC 2012 mapped: 2768K writeable/private: 1232K shared: 0K Heap Size: 1080 kB
    dnscrypt-proxy, напомню, DNS-имена не кэширует, поэтому рост кучи для меня по прежнему не объясним. Прошу заинтересованных погонять новый билд, нам никогда не поздно откатиться на более древнюю версию libuv, ту, что была в стабильном dnscrypt-proxy 0.9.3.

    Quote Originally Posted by lly View Post
    Тогда это смахивает больше не на утечку, а на бесконтрольное использование heap, как в Java - объекты создаём по поводу и без повода, а освобождением займётся добрый дядя(garbage collector).
    Вообще, эта libuv - platform layer для node.js, причём изначально под Windows. Не исключено, что автор кода по привичке «воображает» присутствие garbage collector'а.
    Quote Originally Posted by lly View Post
    А если прогу заставить выйти штатно - valgrind ничего не показывает?
    Ничего. Только summary по нескольким потенциальным косякам uclibc, valgrind использовал как в большинстве HOW-TO'шек:
    Code:
    $ valgrind --tool=memcheck --leak-check=yes --leak-resolution=high --num-callers=40 --verbose --log-file=/opt/var/log/dnscrypt-proxy-debug.log --time-stamp=yes /tmp/mnt/DOWNLOAD/tmp/dnscrypt-proxy --local-port=60053...
    Last edited by ryzhov_al; 14-06-2012 at 17:01.

  3. #33
    Join Date
    Nov 2006
    Location
    Russia, Moscow
    Posts
    3,640
    Quote Originally Posted by ryzhov_al View Post
    dnscrypt-proxy, напомню, DNS-имена не кэширует, поэтому рост кучи для меня по прежнему не объясним.
    ...
    Только summary по нескольким потенциальным косякам uclibc, valgrind использовал как в большинстве HOW-TO'шек:
    Значит придётся попробовать средства valgrind именно для анализа heap'а - massif или dhat

  4. #34
    Quote Originally Posted by lly View Post
    Значит придётся попробовать средства valgrind именно для анализа heap'а - massif или dhat
    Мы совместно с MercuryV провели несколько тестов dnscrypt-proxy, собранного в разных вариациях:

    • нового 0.9.5 cо свежей libuv (результат),
    • нового dnscrypt-proxy 0.9.5 со старой (мартовской, когда dnscrypt-proxy не имел утечек) версией libuv (результат),
    • старого (стабильного) dnscrypt-proxy 0.9.3 со старой libuv (результат).

    Причём мы «наваливались» на него совместно, одновременно с этим используя dnscrypt-proxy как основной DNS даже для одного небольшого офиса. Как видно, не течёт только старая версия dnscrypt-proxy, а libuv здесь, видимо, не причём. Странно, потому что код dnscrypt-proxy не подвергался значительным изменениям. Патч между стабильной 0.9.3 и потёкшей 0.9.4 составляет ~4Кб и ничего подозрительного я в нём не увидел.

    Сегодня автор ответил:
    Quote Originally Posted by jedisct1
    A memory leak has been recently fixed in libuv: https://github.com/joyent/libuv/comm...2b5b12b00d9d19

    Looks like uclibc is the very environment it would happen in.

    That said, I've had it with libuv. dnscrypt is being rewritten with the good ol' libevent, see the libevent branch, that will soon replace the master branch. Give it a shot a see if it fixes your issues on openwrt.
    поэтому подождём выхода libevent-версии, дабы не делать лишнюю работу.

  5. #35
    Join Date
    Nov 2006
    Location
    Russia, Moscow
    Posts
    3,640
    Quote Originally Posted by ryzhov_al View Post
    Как видно, не течёт только старая версия dnscrypt-proxy, а libuv здесь, видимо, не причём. Странно, потому что код dnscrypt-proxy не подвергался значительным изменениям. Патч между стабильной 0.9.3 и потёкшей 0.9.4 составляет ~4Кб и ничего подозрительного я в нём не увидел.
    Надо смотреть/знать весь код - это всё-же к автору...

    поэтому подождём выхода libevent-версии, дабы не делать лишнюю работу.
    Если libevent лучше(меньше, быстрее), то конечно...

  6. #36
    Quote Originally Posted by lly View Post
    Надо смотреть/знать весь код - это всё-же к автору...


    Если libevent лучше(меньше, быстрее), то конечно...
    Тестируем новую libevent driven версию. Будет здорово, если кто-нибудь пожелает присоединиться. Пакет в репозитории.
    • Насчёт быстрее ничего не скажу, всё работает как и раньше мгновенно,
    • бинарник меньше на 20%,
    • потребление памяти тоже меньше:
      • в новой версии mapped: 1524K writeable/private: 152K shared: 0K Heap Size: 12 kB
      • против прежних mapped: 2060K writeable/private: 524K shared: 0K Heap Size: 372 kB

    Пока утечек нет, но судить пока рано.

  7. #37
    Join Date
    Jan 2011
    Location
    Нижний Новгород
    Posts
    543
    Quote Originally Posted by ryzhov_al View Post
    Тестируем новую libevent driven версию. Будет здорово, если кто-нибудь пожелает присоединиться. Пакет в репозитории.
    Если-б набросал краткую инструкцию - желающих и тестеров было-бы намного больше (метод "НТ" не всех устрайвает )
    2MercuryV - не придерайси
    DIR-320 & RTN-r3297 from USB>r3478>r3539>r3722>r3815>r3877>r4051>r4990>r5163

  8. #38
    Утечку памяти в dnscrypt-proxy 0.9.5 удалось победить.

    Низкий поклон за участие MercuryV и black-roland@forum.openwrt.org.

  9. #39
    Последняя сборка dnscrypt-proxy (1e7edae) только у меня с сегфолтом вылетает при попытке сбросить права (--user=nobody)?
    Code:
    # dnscrypt-proxy -P 2053 -n 64 -u nobody
    [INFO] Generating a new key pair
    [INFO] Stopping proxy
    [INFO] TCP listener shut down
    Segmentation fault
    Компилил по разному, в том числе и из репов ryzhov_al.

  10. #40
    Quote Originally Posted by Black Roland View Post
    Последняя сборка dnscrypt-proxy (1e7edae) только у меня с сегфолтом вылетает при попытке сбросить права (--user=nobody)?
    Какая домашняя директория у пользователя nobody? В стоковой прошивке Asus RT-N66u, например, это /dev/null. И любая попытка софта сделать chroot заканчивается крахом:
    Code:
    $ grep nobody /etc/passwd
    nobody:x:65534:65534:nobody:/dev/null:/dev/null
    А вот пример из прошивки энтузиастов, где такой ситуации не возникает:
    Code:
    $ grep nobody /etc/passwd
    nobody:x:99:99:nobody:/:/sbin/nologin
    PS Я бы отломал от dnscrypt-proxy собственную libevent, но Frank Denis внёс в неё ряд правок, касающихся разрешения DNS-имён.
    Last edited by ryzhov_al; 18-06-2012 at 16:51.

  11. #41
    Quote Originally Posted by ryzhov_al View Post
    Какая домашняя директория у пользователя nobody?
    Да не, с домашними папками все в порядке. Вот еще ошибку в сислоге нашел:
    Code:
    # dnscrypt-proxy -P 2053 -u nobody
    [INFO] Generating a new key pair
    [INFO] Stopping proxy
    [INFO] TCP listener shut down
    Segmentation fault
    # dmesg | tail -1
      110.370000 warning: process `dnscrypt-proxy' used the deprecated sysctl system call with 1.40.6.
    А домашние папки вот такие (пробовал запускать на 2-ух разных пользователях):
    Code:
    # cat /etc/passwd | grep -E "(nobody|tun)"
    nobody:*:65534:65534:nobody:/var:/bin/false
    tun:*:1000:1000:tun:/home/tun:/bin/false
    # ls -l / | grep -E "(var|tmp)" && ls -l /home | grep "tun"
    drwxrwxrwt   10 root     root           320 Jan  1  1970 tmp
    lrwxrwxrwx    1 root     root             4 Jun  9 21:58 var -> /tmp
    drwxr-xr-x    3 tun      tun           1024 Jun 19 02:25 tun
    Quote Originally Posted by ryzhov_al View Post
    PS Я бы отломал от dnscrypt-proxy собственную libevent, но Frank Denis внёс в неё ряд правок, касающихся разрешения DNS-имён.
    Было бы здорого конечно

    UPD: Нашел какой-то старый закрытый баг в libevent: http://sourceforge.net/tracker/?func...84&atid=461322 Вроде мой случай

    Еще у одного пользователя все хорошо с понижением привелегий: https://forum.openwrt.org/viewtopic....170388#p170388
    Хз чем мой роутер отличается от его роутера, даже пакет и то один и тот же. Хотя [ERROR] Unable to bind: 127.0.0.1:2053 (TCP) не очень хорошо
    Last edited by Omega; 20-06-2012 at 15:48. Reason: 2 posts merged

  12. #42
    Black Roland, поправил бы свою новую сборку. А то у форумчан будут "засасываться" хостовые библиотеки и интерфейсы, ключи компиляции\линковки спорные бы убрал, smash stack protection до конца бы отключил. Забирай готовый патч, ничего адаптировать не придётся.
    Quote Originally Posted by Black Roland View Post
    Да не, с домашними папками все в порядке. Вот еще ошибку в сислоге нашел:
    Может прошивка и dnscrypt-proxy собраны разными тулчейнами?
    Last edited by ryzhov_al; 20-06-2012 at 12:55.

  13. #43
    Quote Originally Posted by ryzhov_al View Post
    Black Roland, поправил бы свою новую сборку. А то у форумчан будут "засасываться" хостовые библиотеки и интерфейсы, ключи компиляции\линковки спорные бы убрал, smash stack protection до конца бы отключил. Забирай готовый патч, ничего адаптировать не придётся.
    Засасываться? Не понял кто и куда должен засосаться? Лишние зависимости чтоли?
    А патч не хочу. Зачем этот непонятный костыль, если с опциями компилятора все прекрасно работает? А как известно, если что-то работает - не трогай. Думаю что отключать проверки не лучший способ их обойти.
    Quote Originally Posted by ryzhov_al View Post
    Может прошивка и dnscrypt-proxy собраны разными тулчейнами?
    Хз. Есть ли возможность для моего роутера (ar71xx, TP-LINK TL-MR3220) другой тулчейн собрать?

  14. #44
    Для начала главное: я не собираюсь раскритиковать твою сборку, но есть моменты, на которые ты должен обратить внимание.
    Quote Originally Posted by Black Roland View Post
    Засасываться? Не понял кто и куда должен засосаться? Лишние зависимости чтоли?
    Зря ты не заглядывал в configure.ac. Там, например, явно указывается использование интерфейсов библиотек хост-машины (-I/usr/include) и линковка с библиотеками хост-машины (-L/usr/lib).
    Quote Originally Posted by Black Roland View Post
    Зачем этот непонятный костыль, если с опциями компилятора все прекрасно работает? А как известно, если что-то работает - не трогай.
    Это у тебя работает. И лишь потому, что в твоей хост-машине по путям /usr/include, /usr/lib не лежит ничего такого, что могло было бы быть использовано исходниками dnscrypt-proxy. Другие форумчане, использующий твои Makefile'ы могут оказаться не такими счастливыми и процесс кросс-компиляции завершится крахом.

    Quote Originally Posted by Black Roland View Post
    Думаю что отключать проверки не лучший способ их обойти.
    Вот если бы посмотрел на проверку наличия ключа -fPIE в configure.ac, то не стал бы добавлять его второй раз в своём Makefile. И так далее.

    Quote Originally Posted by Black Roland View Post
    Хз. Есть ли возможность для моего роутера (ar71xx, TP-LINK TL-MR3220) другой тулчейн собрать?
    Приехали. Тебе же в логе система говорит об использовании недопустимых syscall'ов. Бинарник же у тебя не исполняется в вакууме, он использует те системные вызовы (via uclibc), что есть в твоей системе, например:
    Code:
    $ ldd /tmp/harddisk/backup/dnscrypt-proxy
            libdl.so.0 => /lib/libdl.so.0 (0x7754e000)
            libm.so.0 => /lib/libm.so.0 (0x77532000)
            libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x77511000)
            libc.so.0 => /lib/libc.so.0 (0x7745f000)
            ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x77564000)
    А у тебя судя по логу при сборке используются одни библиотеки (из тулчейна), а при работе - другие (из прошивки).

    Уж если "хз", то найди родной тулчейн для своей прошивки и укажи пути для него в $ make menuconfig в среде OpenWRT Buildroot. Хотя бы будешь уверен, что dnscrypt-proxy будет "ожидать" ту же среду исполнения, как при кросс-компиляции.


    Отлавливать глюки dnscrypt-proxy до выполнения этих пунктов - занятие не благодарное.
    Last edited by ryzhov_al; 20-06-2012 at 13:57. Reason: ...в среде OpenWRT Buildroot

  15. #45
    Quote Originally Posted by ryzhov_al View Post
    Вот если бы посмотрел на проверку наличия ключа -fPIE в configure.ac, то не стал бы добавлять его второй раз в своём Makefile. И так далее.
    libevent не хотел собираться без этих опций. В сообщении об ошибке было сказано что их нужно использовать
    Остальное посмотрю на досуге, я пока не особо разбираюсь.
    Quote Originally Posted by ryzhov_al View Post
    Уж если "хз", то найди родной тулчейн для своей прошивки и укажи пути для него в $ make menuconfig в среде OpenWRT Buildroot. Хотя бы будешь уверен, что dnscrypt-proxy будет "ожидать" ту же среду исполнения, как при кросс-компиляции.
    Тулчейн родной - из репов openwrt собирал, из коробки так сказать.
    Last edited by Black Roland; 20-06-2012 at 14:07.

Page 3 of 6 FirstFirst 12345 ... LastLast

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •