Opened 5 years ago
Closed 5 years ago
#353 closed ожидается проверка (задача сдана)
WW #3
Reported by: | Milyausha Sabirova | Owned by: | Артур Гулецкий (huletski) |
---|---|---|---|
Component: | WW_intrusive_list | Version: | 1.0 |
Keywords: | Cc: |
Description
Change History (3)
comment:1 Changed 5 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 5 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|
comment:3 Changed 5 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Все еще падает на примере из условия:
{lab_03}[2435]$ pwd && svn up && svn status /home/hfx/dvl/cpp19/sabirova.milyausha/lab_03 Updating '.': At revision 1327. {lab_03}[2436]$ make mkdir obj gcc -c -Wall -Wextra -Werror -Iinclude -fsanitize=address src/clist.c -o obj/clist.o gcc -c -Wall -Wextra -Werror -Iinclude -fsanitize=address src/main.c -o obj/main.o gcc obj/clist.o obj/main.o -o lab_03 -fsanitize=address {lab_03}[2437]$ cat ~/dvl/private-labs/lab_03/check/tests/00-smoke.input add 1 2 add 3 6 add 4 6 len add 1 2 print sort rm 1 2 print rma print len add 2 -4 print exit {lab_03}[2438]$ ./lab_03 < ~/dvl/private-labs/lab_03/check/tests/00-smoke.input AddressSanitizer:DEADLYSIGNAL ================================================================= ==12883==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000008 (pc 0x000000400d57 bp 0x7ffdcc766c40 sp 0x7ffdcc766c30 T0) ==12883==The signal is caused by a WRITE memory access. ==12883==Hint: address points to the zero page. #0 0x400d56 in add_node (/home/hfx/dvl/cpp19/sabirova.milyausha/lab_03/lab_03+0x400d56) #1 0x400fd3 in add_point (/home/hfx/dvl/cpp19/sabirova.milyausha/lab_03/lab_03+0x400fd3) #2 0x401517 in main (/home/hfx/dvl/cpp19/sabirova.milyausha/lab_03/lab_03+0x401517) #3 0x7fead2ed782f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f) #4 0x400b28 in _start (/home/hfx/dvl/cpp19/sabirova.milyausha/lab_03/lab_03+0x400b28) AddressSanitizer can not provide additional info. SUMMARY: AddressSanitizer: SEGV (/home/hfx/dvl/cpp19/sabirova.milyausha/lab_03/lab_03+0x400d56) in add_node ==12883==ABORTING
Замечания:
clist.h
: заголовочные файлы обычно включают после/внутри include guard'a;remove_point
: если в теле цикла изменяется (помимо тривиального обновления, связанного с переходом к следующей итерации) переменная, по которой происходит итерация, то естественнее использовать циклwhile
;- bug в реализации
add_node
: при добавлении первого узлаnode->next
равенNULL
-> программа падает наclist.c:13
. Вариант fix'a: проверять на NULL перед присваиванием -> -1 (за баг) -1 (за то, что не тестировали программу, т.к. "добавить точку в список" - первый тест, который в голову приходит, т.к. на пустом нет смысла проверять остальные содержательные команды); - не освобождается память, выделенная под head. Варианты как это исправить обсуждали на паре -> -1.5.
Итог: 8.5/12.
Note: See
TracTickets for help on using
tickets.
Собирается (+0.01), не работает на примере из задания (падает и формат вывода не соответствует ожидаемому):
Кроме того, как минимум нужно починить отступы.