Home
mc-dev
mc-dev@conference.jabber.ru
23.01.2012< ^ >

Тема: http://www.midnight-commander.org | Latest release: 4.8.1 | Latest stable release: 4.7.5.6
[04:21:07] repolainen зашёл в конференцию
[04:49:44] iliamaslakov вышел из конференции: Replaced by new connection
[04:49:46] iliamaslakov зашёл в конференцию
[04:56:26] repolainen вышел из конференции
[05:08:32] andrew_b зашёл в конференцию
[06:04:14] <iliamaslakov> andrew_b, Привет
[06:04:51] <andrew_b> Привет.
[06:35:20] repolainen зашёл в конференцию
[07:04:43] repolainen вышел из конференции
[08:18:43] <slavazanko/w> всем привет
[08:19:18] <andrew_b> Привет.
[08:26:01] <iliamaslakov> slavazanko/w, привет
[10:22:29] <iliamaslakov> ну и чего притихли то?
[10:22:45] <andrew_b> Арбайтен.
[10:22:47] <iliamaslakov> видали у меня на мои макросы появился пользователь
[10:22:53] <iliamaslakov> на лоре
[10:23:16] <andrew_b> Видали.
[11:05:41] IceMan зашёл в конференцию
[13:25:28] <slavazanko/w> 2695_expansion_to_src: чего-то тесты не проходят
[13:27:20] <iliamaslakov> andrew_b, Вы обвиняетесь в преднамеренном внесении вредоносного кода в бранч 2695_expansion_to_src
[13:27:40] <andrew_b> iliamaslakov: а идите Вы...
[13:27:45] <iliamaslakov> ваш подельник slavazanko/w уже во всём сознался и показал на Вас
[13:27:53] <slavazanko/w> :D
зато всё вежливо
[13:28:20] <iliamaslakov> andrew_b, в жо пу?
[13:28:44] <slavazanko/w> без последнего коммита (git reset --hard HEAD^) всё нормально
[13:29:06] <iliamaslakov> не падает при копировании?
[13:29:10] <andrew_b> Ну я же говорю: в двух последних фиксах не уверен.
[13:29:18] <slavazanko/w> неа
[13:30:01] <andrew_b> Там выход за нижнюю границу массива теоретически возможен.
[13:30:08] <andrew_b> buffer[-1]
[13:30:13] <iliamaslakov> да
[13:30:15] <andrew_b> Если buffer пуст.
[13:30:29] <andrew_b> [10:58]<andrew_b> slavazanko/h: ещё залечил пару обращений за границу массива, но не уверен, что правильно.

if (buffer->len != 0 && buffer->str[buffer->len - 1] != PATH_SEP)

Может, надо

if (buffer->len == 0 || buffer->str[buffer->len - 1] != PATH_SEP)

?
[13:30:29] <iliamaslakov> а зачем не проверяешь, да?!
[13:30:58] <slavazanko/w> if (buffer->len == 0 || buffer->str[buffer->len - 1] != PATH_SEP)
наверное так
[13:31:14] <andrew_b> А выше?
[13:31:41] <iliamaslakov> а почему по человечески не проверить?
[13:31:48] <slavazanko/w> а по человечески как?
[13:31:48] <andrew_b> В смысле, код выше. Предпоследний коммит.
[13:32:03] <slavazanko/w> предпоследний почему-то работает
[13:32:18] <slavazanko/w> наверное, недостаточно тестами накрыт
[13:32:39] <iliamaslakov> buffer->len > 0
[13:33:08] <andrew_b> Ну, там вроде буфер будет начинаться с vfsprefix. Нужен ли ему слэш в начале?
[13:33:16] <iliamaslakov> buffer->len > 0 && buffer->str[buffer->len - 1]
[13:33:29] <andrew_b> buffer->len положительное число.
[13:33:44] <andrew_b> buffer->len > 0 и buffer->len != 0 одно и то же.
[13:33:46] <slavazanko/w> не. У нас всегда начинается со слеша. У нас первая vfs всегда local
[13:33:50] <iliamaslakov> > 0 тоже положительное
[13:33:58] <andrew_b> iliamaslakov: садись, два.
[13:34:24] <iliamaslakov> по математике?
[13:34:31] <iliamaslakov> или русский?
[13:34:34] <andrew_b> iliamaslakov: Хорошо, число беззнаковое.
[13:34:46] <iliamaslakov> я не проверял
[13:35:14] <iliamaslakov> ща..
[13:41:09] <iliamaslakov> таки чему равно buffer->len если buffer->len = -5;
[13:41:53] <andrew_b> buffer->len не может быть -5.
[13:41:54] <iliamaslakov> хрензнает скольколион 4294967291
[13:42:18] <iliamaslakov> buffer->len = -5;
[13:42:23] <iliamaslakov> как не может?
[13:42:33] <andrew_b> Откуда там возьмётся -5?
[13:42:41] <iliamaslakov> это я не знаю
[13:45:30] <iliamaslakov> я могу вывести те после которых оно сегфолтится
[13:46:30] <iliamaslakov> 0d482a05002220cb611d0e980bed4bd1c52ae649
[13:46:36] <iliamaslakov> сегфолтится
[13:47:00] <andrew_b> Что это?
[13:47:30] <iliamaslakov> это
- if (buffer->str[buffer->len - 1] != PATH_SEP)
+ if (buffer->len != 0 && buffer->str[buffer->len - 1] != PATH_SEP)
[13:48:10] <andrew_b> 0d482a05002220cb611d0e980bed4bd1c52ae649
[13:48:14] <andrew_b> Это что?
[13:48:24] <iliamaslakov> >slavazanko/w: без последнего коммита (git reset --hard HEAD^
[13:49:55] <andrew_b> А...
[13:52:35] <iliamaslakov> оно сегфолтится ещё где то
[13:52:43] <andrew_b> gdb
[13:54:09] <iliamaslakov> Program received signal SIGSEGV, Segmentation fault. ║ ║ hangeLog ║
0x080978e2 in vfs_path_get_by_index (vpath=<optimized out>, element_index=<optimized out>) at path.c:810 ║
810 return g_array_index (vpath->path, vfs_path_element_t *, element_index);akefile
[13:54:37] <iliamaslakov> #0 0x080978e2 in vfs_path_get_by_index (vpath=<optimized out>, element_index=<optimized out>) at path.c:810
#1 vfs_path_free (vpath=0x81c6788) at path.c:923
#2 0x080b308e in compute_dir_size (dirname_vpath=<optimized out>, ui=<optimized out>,
cback=<optimized out>, ret_marked=Unhandled dwarf expression opcode 0xb0
) at file.c:2556
#3 0x080b4bf1 in panel_operate_init_totals (operation=<optimized out>, panel=<optimized out>, source=Unhandled dwarf expression opcode 0x5
)
at file.c:1230
#4 0x080b3c82 in panel_operate (source_panel=Unhandled dwarf expression opcode 0xc4
) at file.c:2828
[14:00:55] <iliamaslakov> а что написано в этой строке?
return g_array_index (vpath->path, vfs_path_element_t *, element_index);
[14:01:50] <andrew_b> Элемент массива достаётся.
[14:02:20] <iliamaslakov> vfs_path_element_t *
[14:02:45] <andrew_b> Тип.
[14:03:08] <iliamaslakov> а типа тип указатель на
[14:03:09] <andrew_b> Для него делается sizeof.
[14:03:14] <andrew_b> Неважно.
[14:03:31] <iliamaslakov> я просто не понял на счет звёздочки
[14:03:39] <andrew_b> Все указатели одного размера.
[14:03:46] <iliamaslakov> почему не vfs_path_element_t
[14:03:52] <andrew_b> sizeof(vfs_path_element_t *)
[14:03:53] <iliamaslakov> а указатель
[14:04:01] <andrew_b> В массиве хранятся указатели.
[14:04:13] <andrew_b> А не сами структуры.
[14:04:18] <iliamaslakov> а...
[14:04:26] <iliamaslakov> ну да согласен
[14:04:29] <iliamaslakov> понял
[14:05:27] <andrew_b> compute_dir_size -- это рекурсивная функция. Тут может быть с выделением и освобождением памяти что-то не так.
[14:09:16] IceMan вышел из конференции
[14:26:06] andrew_b вышел из конференции
[14:46:56] <slavazanko/w> http://www.allsouthpark.ru/index.php?option=com_content&task=view&id=65&Itemid=64
[14:47:07] <slyfox^w> http://www.opennet.ru/openforum/vsluhforumID3/82535.html#1
[16:35:06] andrew_b зашёл в конференцию
[17:11:41] repolainen зашёл в конференцию
[18:34:39] slavazanko/h зашёл в конференцию
[19:04:35] <andrew_b> slavazanko/h: починил падение при подсчёте размера каталога.
[19:04:51] <andrew_b> Но всё равно падает.
[19:05:04] <slavazanko/h> о, гуд. Вроде больше янвых косяков не осталось.
[19:05:08] <slavazanko/h> эм...
[19:05:10] <slavazanko/h> :)
[19:05:23] <andrew_b> Аадает в конце panel_operate.
[19:07:01] <andrew_b> #0 0x08072b1c in vfs_path_elements_count (vpath=0xffffffff):01 (145,98 МБ/с)
at /home/andrew/work.c/mc/mc-2695_expansion_to_src/lib/vfs/path.c:774
#1 0x08072e25 in vfs_path_free (vpath=0xffffffff) at /home/andrew/work.c/mc/mc-2695_expansion_to_src/lib/vfs/path.c:917
#2 0x080b1d2e in free_linklist (lc_linklist=0x81538d0)
at /home/andrew/work.c/mc/mc-2695_expansion_to_src/src/filemanager/file.c:236
#3 0x080b7bbc in panel_operate (source_panel=0x8209e18, operation=OP_COPY, force_single=0)
at /home/andrew/work.c/mc/mc-2695_expansion_to_src/src/filemanager/file.c:3038
[19:08:16] <andrew_b> Double free, похоже.
[19:11:19] ASM вышел из конференции
[19:11:25] ASM зашёл в конференцию
[19:15:42] andrew_b вышел из конференции
[19:56:55] ASM вышел из конференции
[19:57:35] ASM зашёл в конференцию
[21:47:08] slavazanko/h вышел из конференции
[21:47:53] slavazanko/h зашёл в конференцию
[23:41:09] repolainen вышел из конференции
Powered by freQ Powered by Python Valid XHTML 1.0 Transitional Valid CSS!