Home
Objective Caml
ocaml@conference.jabber.ru
Вторник, 12 июля 2011< ^ >
gds установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Светлое будущее -- http://camlunity.ru/ | Нефильтрованное настоящее -- https://github.com/camlunity/kamlo_wiki | Портер прошлое -- http://gdsfh.dyndns.org/kamlo/ | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв, move on
Конфигурация комнаты
Участники комнаты

GMT+4
[00:01:25] ftrvxmtrx вышел(а) из комнаты
[00:27:23] <gds> зарелизил оверблд свежий.  https://sourceforge.net/projects/overbld/files/ .  Однако что-то с торрентами не ок, как видится.  Прошу, поглядите, качается ли оно.  Ну и помогите с раздачей, чего уж тут скрывать.  И потестите, если есть желание.
[00:27:33] gds вышел(а) из комнаты
[00:29:35] <komar> Где помогать?
[00:49:48] komar вышел(а) из комнаты: Replaced by new connection
[00:49:48] komar вошёл(а) в комнату
[00:55:19] ftrvxmtrx вошёл(а) в комнату
[00:57:11] ftrvxmtrx вышел(а) из комнаты
[01:00:52] Typhon вошёл(а) в комнату
[01:04:33] komar вышел(а) из комнаты: Replaced by new connection
[01:04:34] komar вошёл(а) в комнату
[01:10:55] arhibot вошёл(а) в комнату
[01:50:30] arhibot вышел(а) из комнаты
[02:08:19] ftrvxmtrx вошёл(а) в комнату
[02:13:00] ermine вышел(а) из комнаты
[02:29:56] zert вышел(а) из комнаты
[03:34:49] Typhon вышел(а) из комнаты
[04:45:18] ftrvxmtrx вышел(а) из комнаты
[04:46:27] ftrvxmtrx вошёл(а) в комнату
[06:15:27] sceptik вошёл(а) в комнату
[06:15:56] <sceptik> http://users.livejournal.com/_adept_/116621.html
[07:52:25] delete_ вошёл(а) в комнату
[07:57:08] delete_ вышел(а) из комнаты
[08:00:46] delete_ вошёл(а) в комнату
[08:55:06] iNode вошёл(а) в комнату
[09:06:56] <bobry> реквестирую ответ камьюнити :)
[09:07:29] <bobry> кстати неужели нету модуля open с параметрами на хацкель манер?
[10:01:58] bobry- вошёл(а) в комнату
[10:07:21] delete_ вышел(а) из комнаты
[10:24:36] Typhon вошёл(а) в комнату
[10:25:12] <Typhon> """open с параметрами на хацкель манер""" такая фигня им нужна разве не потому, что у них модулей нормальных и сигнатур нет?
[10:25:37] <Typhon> в камле обычно не суют в публичный интерфейс то, что захочется не импортировать
[10:39:34] shaggie вошёл(а) в комнату
[10:49:50] <bobry-> makes sense
[10:49:58] <bobry-> а что за новость про campl4 и <<<<<<<<<
[10:52:27] <Typhon> << — начало quotation, емнип
[10:52:41] <Typhon> можно передавать ключи препроцессору, чтобы отключить
[10:52:51] <Typhon> в вике InfixOps было про это
[10:53:12] bobry- еще не трогал camlp4 поэтому не в курсе
[10:58:00] <f[x]> [18:57:43] <mrm> gds: Подозреваю, что в этом месте надо воткнуть какой-то регексп, который все кавычки поправит
проблема в том что такого регекспа не существует потому что правила квотинга для cmd не специфицированы
[10:59:49] arhibot вошёл(а) в комнату
[10:59:50] <sceptik> развал-схождение
[11:00:16] <f[x]> [20:30:36] <mrm> Похоже, заворачивание камла в длл - действительно очень редкий случай
я заворачивал (в COM), но это был out-of-proc так что пробем с выгрузкой не было
[11:01:55] <f[x]> [20:44:32] <gds> f[x]: или ты спрятал свои???
лежат там же, сейчас вот собираю на чистой машине релиз
[11:02:54] arhibot вышел(а) из комнаты
[11:06:54] gds вошёл(а) в комнату
[11:13:13] ftrvxmtrx вышел(а) из комнаты
[11:19:08] komar вышел(а) из комнаты: Replaced by new connection
[11:19:08] komar вошёл(а) в комнату
[11:21:02] <gds> присунул комментарии в жыжыцу.
[11:21:38] <Typhon> про no-quot писал? я что-то не могу найти строчку доки, а по памяти боюсь ошибиться
[11:21:51] <gds> f[x]: да, вчера толково почитал.  и недавний птсо рэймонда чена с каментами.  не от хорошей жизни родилась идея выбросить system().
[11:22:12] <gds> Typhon: да, no quot писал.
[11:22:21] <gds> может ошибся, но фигня.
[11:30:50] ermine вошёл(а) в комнату
[11:33:23] <f[x]> gds: кинь ссылку на чена и почему нет system
[11:33:33] <f[x]> gds: почему торренты не сидируются?
[11:33:56] <f[x]> кстати рекомендую на sf.net сделать первую страницу нормальную с прямыми ссылками на торренты
[11:34:09] <gds> почему не сидируются -- вопрос для меня.  Реально веб-сид надо попробовать.
[11:34:25] <f[x]> не, вебсид не нужен
[11:34:33] <f[x]> ты на раздаче есть?
[11:34:53] <gds> f[x]: чен: http://blogs.msdn.com/b/oldnewthing/archive/2010/09/17/10063629.aspx
[11:35:02] <f[x]> я на sources вижу один transmission и один mainline
[11:35:12] <f[x]> а на binary никого
[11:35:35] <gds> блин.  rtorrent не коннектится к трекеру, получается.
[11:35:59] <f[x]> там udp трекер, а rtorrent udp не умеет по-моему
[11:36:42] <gds> миленько.  Сейчас с transmission попробую раздать, если он прохавает фокус с подсовыванием файлов.
[11:37:12] <f[x]> хотя на вики написано что умеет
[11:37:22] <f[x]> наверное у меня устаревшие сведения
[11:38:57] <Typhon> у меня дома ночью были поставлены оба, но видимо не скачались не фига, там mainline. сейчас с работы лью — не льётся
[11:39:17] <gds> пошла мазута.
[11:40:07] <gds> f[x]: по факту -- не умеет, проверил.  может у меня устаревший rtorrent.
[11:40:56] <f[x]> может отключены в конфиге или firewall режет?
[11:41:06] <f[x]> о, теперь ок
[11:44:28] <gds> а выкинуть system() не получится.  я же забыл о такой поганой хрени, что CreateProcess даёт командную строку целиком, а не в argv[].
[11:46:16] <f[x]> gds: там в комментах куча всяких приколов
[11:46:38] <f[x]> т.е. это правило нифига не работает
[11:46:47] <gds> конечно не работает.
[11:47:12] <gds> так ещё хрень в том, что argv[] не передашь, всё равно всё будет зависеть от того, кто и как будет разбирать строку.
[11:47:19] <f[x]> т.е. де факто детерминированного эскейпинга в cmd нету
[11:47:43] <f[x]> интересно, а если попробовать cmdspec на bash заменить ?? :)
[11:47:50] <f[x]> да, классическая пичалька
[11:48:59] <gds> я вот не понимаю -- ну, заменим на cmd на bash.  каким валшэбным образом запускаемая программа будет получать argv?
[11:49:34] delete_ вошёл(а) в комнату
[11:51:06] <f[x]> а откуда камло программы берут argv?
[11:51:18] <f[x]> из сишного рантайма
[11:51:27] <f[x]> а он дёргает commandlinetoargv
[11:51:39] <f[x]> т.е. оттуда же!
[11:51:43] <f[x]> гг :)
[11:52:41] <gds> а точно именно ту функцию дёргает?
[11:53:07] <f[x]> надо бы проверить
[11:53:16] <f[x]> mingw'шный рантайм кстати может и нет
[11:53:27] <gds> в mingwrt какой-нибудь смотреть, видимо?  ща.
[11:53:34] <f[x]> так что если до программы дойдёт строка нековерканная, то всё будет ок
[11:53:56] <gds> осталось определить, что такое "нековерканная".
[11:54:39] <f[x]> ну т.е. её не будет cmd по своему разумению переразбивать
[12:03:16] <gds> не нашёл специальной разбивки в mingwrt.  получается, программа объявляет int main(argc, argv) и mingwrt идёт мимо этого процесса.  то есть, кто-то другой (msvcrt?) разбивает ком.строку в argv.
[12:04:39] <f[x]> а, точно, там же msvcrt
[12:04:56] <f[x]> и возможно даже раньше
[12:05:59] <gds> ну что, дизассемблировать commandlinetoargv? :)
[12:09:18] <f[x]> и хукать его, хукать
[12:09:50] <gds> мнээ
[12:10:02] <gds> хук слева, хук справа, нокаут!
[12:24:36] <gds> не, вот теперь я точно не знаю, что делать с cmd.
[12:24:49] <gds> с argv, точнее.
[12:44:05] <gds> в качестве идеи -- нагенерить различных строк, содержащих букву "a", кавычки, бэкслеши и прочие стрёмные символы, и запустить генетический алгоритм, угадывающий обратное преобразование :)
[12:46:57] <f[x]> что-то не так
[12:47:12] <f[x]> в mingw же шелле всякие заковыристые квотинги из билд скриптов работают
[12:48:30] <gds> через раз, особенно вложенные.  где-то в мейкфайлах, помню, исправлял то, что генерило cmd "cmd2 \"arg11 arg12\"" на cmd 'cmd2 "arg11 arg12"'.
[12:48:49] <f[x]> п-ц
[12:49:16] <f[x]> а в cygwin же точно без патчей всё работает
[12:50:42] <gds> а вот подумал.  Как бы проще всего узнать, что дёргает mingw runtime для получения argv?  То есть, как я понимаю венду, точка входа там называется WinMain.  Она же запускает main, разобрав ком.строку.
[12:51:28] <gds> с другой стороны, то, что я исправлял, было только один раз, то есть, может там какие-то другие факторы участвовали, а так всё работает.  хз.
[12:54:15] mrm вошёл(а) в комнату
[12:56:23] <mrm> gds: вот ещё по поводу проблем с кавычками --
[12:56:27] <mrm> http://caml.inria.fr/pub/ml-archives/caml-list/2007/05/9f8214308369e69f9bdaeec4c8ca3cde.en.html
[12:57:13] <f[x]> winmain вызывается уже после рантайма
[12:58:02] <gds> f[x]: точно?  А как в .exe прописывается, что сначала должен вызваться рантайм?
[12:58:13] <gds> mrm: почитал, пичалька на том же уровне.
[12:58:26] <f[x]> ну, есть точка входа, у этой точки входа вообще никаких параметров
[12:58:59] <f[x]> лучше взять windbg и посмотреть, я уже не помню
[12:59:35] <gds> вот, она называется WinMain, и дальше в ней берут командную строку, разбивают на argv и вызывают main.  Вроде так.  Ну да, надо брать windbg/ida.
[12:59:43] <f[x]> фокус в том что оригинальную ком строку можно получить и распарсить самому
[13:00:01] <f[x]> нет, winmain это далеко не точка входа
[13:00:20] <gds> а вот что говорит msdn:
CommandLineToArgvW has a special interpretation of backslash characters when they are followed by a quotation mark character ("), as follows:
2n backslashes followed by a quotation mark produce n backslashes followed by a quotation mark.
(2n) + 1 backslashes followed by a quotation mark again produce n backslashes followed by a quotation mark.
n backslashes not followed by a quotation mark simply produce n backslashes.
[13:00:37] <f[x]> но, если в этой ком строке уже пошалил cmd то толку
[13:01:13] <gds> то есть, если исключить cmd и формировать строку согласно этим правилам, то будет всё ок?
[13:01:17] <f[x]> короче план такой, надо сначала понять что происходит сейчас и кто что на каком уровне делает
[13:01:25] <f[x]> хз
[13:02:08] <f[x]> у нас есть подозреваемые - cmd winapi mingwrt bash ocamlbuild
[13:02:26] <f[x]> надо установить кто где был во время преступления и у кого есть мотив!11
[13:03:00] <gds> многие преступления совершаются без мотива, исключительно по глупости или по сочетанию глупостей.  Так-то.
[13:03:23] <gds> однако, про время и место надо подумать.
[13:03:54] <gds> если начинать с инициатора преступного воздействия, то надо посмотреть, что ocamlbuild передал в system().
[13:04:48] <gds> однако следственный эксперимент продлится немало времени -- патченье камла и пересборка -- не так уж быстро.  что-то можно сделать вместо выдачи аргумента system() в отладочных сообщениях?
[13:05:15] <mrm> И сравнить строку, которую он передаёт в проблемном случае, со строкой передаваемой в случае с приведённым мной костылём (когда всё работает)
[13:05:30] <f[x]> к сожалению на вражеской террритории мы сильно ограничены в выборе инструментов и методов воздействия на свидетелей
[13:05:54] <f[x]> нету strace, но есть его жалкое подобие procmon
[13:06:51] <f[x]> можно опять таки поймать с поличным с помощью windbg и бряка на camlSys__command
[13:08:07] <gds> где брать windbg?
[13:09:10] <f[x]> гугл :)
[13:09:32] <gds> нашлось.  Весьма неожиданно.
[13:09:54] ftrvxmtrx вошёл(а) в комнату
[13:19:50] <gds> по другому вопросу: двоим торрент-клиентам уже раздало оверблд, судя по пирам.
[13:30:14] <mrm> gds: А есть какая-нибудь статистика по предыдущему релизу?
[13:32:06] <gds> мало статистики.  торренты -- раз 30, что ли, скачаны были.  pull из репки выполнялся десяток раз (то есть, порядка 10 раз билдили из исходников с обновлением из репки).
[13:36:33] <mrm> Значит бинарники людям нужнее :-)
[13:36:41] <mrm> Особенно новичкам
[13:36:55] zert вошёл(а) в комнату
[13:39:51] <gds> вывод очень логичный.
[13:41:11] <mrm> Ага :-P
[13:42:55] <gds> взял тот тестовый случай, который глючил.  На camlSys_command breakpoint не захотел вставать.  На system (найденный в msvcrt) таки встал, и вот что было в аргументе: http://paste.in.ua/2730/
[13:45:13] <f[x]> gds: x *command*
[13:45:28] <f[x]> там ещё циферки в имени сишной функи
[13:45:59] <f[x]> т.е. ocamlbuild делает ок
[13:46:27] <f[x]> дальше цепляйся к следующему запушенному процессу
[13:46:48] <f[x]> и ставь бряки на _main main _start WinMain :)
[13:46:53] <f[x]> _tmain
[13:49:17] <gds> я попробовал выделить пример: http://paste.in.ua/2731/
[13:51:58] <f[x]> http://msdn.microsoft.com/en-us/library/f9t8842e.aspx
[13:53:33] <gds> это понятно.  Не понимаю вот что: имеем system(...).  Как остановиться на точке входа в ещё не запущенный процесс?
[13:55:17] <f[x]> не помню, по идее тебя должно автоматически аттачить в новый процесс и останавливать на точке входа
[13:56:16] <gds> проверил, автоматом точно не.
[13:56:17] <f[x]> .childdbg 1
[13:56:44] <f[x]> потом alt-9 - список процессов
[14:06:11] <gds> 0:000> .childdbg 1
The system doesn't support changing the flag
[14:08:02] <gds> пойду другим путём.  сделаю тестовую программку, которая будет argv показывать как есть.
[14:08:26] <f[x]> значит делай это до начала дебага
[14:08:28] <f[x]> наверное
[14:18:47] <gds> так-с, баш на вход получает вот что: http://paste.in.ua/2733/raw/
[14:21:57] <gds> с другой стороны, если bash -c накормить такой же строкой из bash shell prompt, всё работает нормально.
[14:24:06] <gds> и даже так: http://paste.in.ua/2734/ видно, что в шелле разбивается нормально.
[14:29:11] <f[x]> пока всё как ожидалось
[14:30:25] komar вышел(а) из комнаты
[14:40:02] <gds> f[x]: то есть, баш, получая аргументы '-c' и 'C:/OVerbld/ocaml/bin/menhir --raw-depend --ocamldep "ocamldep -modules" a.mly > a.mly.depends', передаёт то, что в кавычках, как два разных аргумента?
[14:51:58] <gds> вот и проверил: http://paste.in.ua/2735/
[14:54:47] sceptik вышел(а) из комнаты
[14:57:16] delete_ вышел(а) из комнаты
[15:13:48] <f[x]> он видит -c и следующий аргумент выполняет, чо
[15:14:56] <f[x]> а кто у тебя из system печатает?
[15:17:40] <gds> f[x]: если этот самый "следующий аргумент" передать в командной строке башу или записать в скрипт, он уважает кавычки.  А так -- он их пропускает.  Вот имхо ключевой момент.
[15:18:57] <gds> из system печатает специально-обученная программа, которую я в разных экспериментах называл то bssh, то mnnhir: http://paste.in.ua/2736/
[15:21:57] <f[x]> пока всё равно не ясно кто виноват
[15:24:31] <f[x]> ms в своём репертуаре, даёт на скачивание какой-то веб-инсталлер для windbg который требует ,net
[15:24:37] <gds> кто точно -- не ясно.  но: 1. если заменить bash на .\bssh.exe, то argv[2] будет содержать двойные кавычки.  2. если посмотреть, что передаст bash -- увидим результат без кавычек.
[15:25:05] <gds> веб-инсталлер у меня на твоей в2к не запустился, типа "не исполняемый файл".  предыдущую версию взял.
[15:25:26] <gds> сейчас снял "снапшот" диска и попробую новый баш вкатить туды.
[15:26:04] <f[x]> потому что .net
[15:26:09] <f[x]> аналогично
[15:26:29] <f[x]> у меня кстати есть чистая winxp если вдруг
[15:27:25] <gds> я так понял, что если декларировать совместимость "от в2к", то лучше на ней же и собирать всё.  Однако, если что-то задолбает, обязательно обращусь.
Пока только какой-то vcredist поставить пришлось, но это в оверблд указывать не буду -- проблема типичная, любой виндоюзер асилит.
[15:28:41] komar вошёл(а) в комнату
[15:29:25] <f[x]> угу
[15:29:31] <f[x]> правда его ещё найти проблема обычно
[15:30:32] <gds> вот-вот, сходу не нашёл на sf.net/projects/mingw
[15:43:35] komar вышел(а) из комнаты: Replaced by new connection
[15:43:38] komar вошёл(а) в комнату
[15:45:43] <f[x]> прошу лююить и жаловать - http://paste.in.ua/2737
[15:45:47] <f[x]> * любить
[15:46:35] <gds> а что это?
[15:46:53] <f[x]> это то что запускается из system
[15:47:03] <f[x]> аргх, там же кавычка в конце пропущена!
[15:48:36] <f[x]> но это ни на что не влияет :(
[15:50:06] <f[x]> а это вот то что запускает bash - http://paste.in.ua/2738/
[15:50:19] <gds> а может и влияет, туплю чото.  А новый баш -- затейник, кучу либ с собой тащит.
[15:50:41] <f[x]> http://paste.in.ua/2739/
[15:51:14] <gds> чото странная фигня какая-то.
[15:52:07] <f[x]> фигня происходит внутри bash.exe
[15:52:33] <f[x]> ща заломаем
[15:56:25] <gds> на новом баше та же хрень.
[16:11:53] <gds> ох.  Убеждаюсь, что я -- ональных дел мастер.  http://paste.in.ua/2740/
[16:28:25] <f[x]> http://cygwin.com/ml/cygwin/2010-07/msg00623.html
[16:31:35] <f[x]> http://paste.in.ua/2741/
[16:31:37] <f[x]> LOL
[16:31:57] <f[x]> т.е. виноват bash
[16:32:37] <f[x]> gds: ^^
[16:33:31] <gds> не понял нихрена.  как у тебя получилось это?
[16:33:40] <f[x]> ./test vs C:\temp\a\test
[16:33:46] <f[x]> читай ссылку
[16:34:25] <f[x]> он по разному ескейпит в зависимостри от того что за параметр у -c
[16:34:41] <f[x]> это по идее cygwin-bash специфичное
[16:54:48] digimmortal вошёл(а) в комнату
[16:57:06] mrm вышел(а) из комнаты
[16:59:07] mrm вошёл(а) в комнату
[17:02:13] <komar> Кто тут жаббер-ботов на покойничке писал?
[17:02:22] <komar> Что из библиотек взять для потыкивания?
[17:02:57] <f[x]> xmpp от ermine есть, у меня вот даже работает, мессаги от zabbix'а сыпет
[17:03:51] <komar> Где посмотреть?
[17:04:06] <f[x]> на гитхубе же
[17:08:02] bobry вышел(а) из комнаты
[17:10:14] bobry вошёл(а) в комнату
[17:17:39] bobry вышел(а) из комнаты
[17:18:09] bobry вошёл(а) в комнату
[17:22:50] <komar> Криптокит 1.5, е-мое.
[17:22:53] <komar> Где ж я его возьму.
[17:23:55] <komar> СЛЫШ
[17:23:58] <komar> Ой, не сюда.
[17:28:02] iNode вышел(а) из комнаты
[17:29:05] <zert> ШТО
[17:30:10] <komar> Ништо, это я с Вокером про дебиан разговариваю.
[17:31:02] mrm вышел(а) из комнаты
[17:33:59] mrm вошёл(а) в комнату
[18:34:40] shaggie вышел(а) из комнаты
[18:43:38] komar вышел(а) из комнаты: Replaced by new connection
[18:43:38] komar вошёл(а) в комнату
[19:15:49] ftrvxmtrx вышел(а) из комнаты
[19:36:15] digimmortal вышел(а) из комнаты
[19:37:53] iNode вошёл(а) в комнату
[19:42:59] bobry- вышел(а) из комнаты
[19:45:54] komar вышел(а) из комнаты: Replaced by new connection
[19:45:54] komar вошёл(а) в комнату
[20:12:14] Typhon вышел(а) из комнаты
[21:11:54] mrm вышел(а) из комнаты
[21:39:48] ftrvxmtrx вошёл(а) в комнату
[21:41:10] komar вышел(а) из комнаты: Replaced by new connection
[21:41:11] komar вошёл(а) в комнату
[22:06:04] komar вышел(а) из комнаты: Replaced by new connection
[22:06:05] komar вошёл(а) в комнату
[22:37:39] ftrvxmtrx вышел(а) из комнаты
[22:37:46] ftrvxmtrx вошёл(а) в комнату
[23:01:22] bobry вышел(а) из комнаты
[23:04:49] bobry вошёл(а) в комнату
[23:18:51] ftrvxmtrx вышел(а) из комнаты
[23:19:00] ftrvxmtrx вошёл(а) в комнату
[23:20:30] ftrvxmtrx вышел(а) из комнаты
[23:29:17] gds вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!