[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 вышел из конференции