engine
engine copied to clipboard
Add support Windows x64 MSVC openssl build
rearange CMakeLists.txt control blocks exclude some targets from Windows build
- test_tls as it is incompatible with POSIX api
- tags is not relevant
quility and secutity improvements:
- remove -Wno-unused-parameter -Wno-unused-function -Wno-missing-braces gcc/clang compiler parametes.
- remove -D_CRT_DEPRECATED_NO_WARNINGS, -D_CRT_NONSTDC_NO_WARNINGS Windows VC compiler definitions.
getopt.h:
- struct option definition move to top, rename type to option_t
dedicate common code fragments from test_* to test.h file fix issues with T(e), TE(e) macros
gostsum.c, gost12sum.c
- rewrite file handling on crossplatform libc file api
gost_grasshopper_cipher.c
- function gost_grasshopper_master_key make static as it is called by other static functions
all affected source files with weird indents were reformated using four space indents
@ddulesov, при всём уважении в таком виде патч не пригоден.
Много где различия сводятся только к whitespace, и это его сильно раздувает. Но главное - выделение компилятора и опций компиляции не должно затрагивать исходники за исключением мест, которые не устраивают компилятор.
ansi_terminal.h и ansi_terminal.c - GPL-3 (https://github.com/sol-prog/ansi-escape-codes-windows-posix-terminals-c-programming-examples/blob/master/LICENSE)
ansi_terminal.h и ansi_terminal.c - GPL-3 (https://github.com/sol-prog/ansi-escape-codes-windows-posix-terminals-c-programming-examples/blob/master/LICENSE)
Да, это обоснованное замечание. Лицензионное ограничение GPL v3 не позволяет включить его в исходном виде. В этом случае как поступить? а) полностью исключить управление цветом символов терминала на всех платформах б) сделать свою реализацию для windows. Но дело в том, что для windows по сути использован христоматийный пример из MSDN.
@ddulesov, при всём уважении в таком виде патч не пригоден.
Много где различия сводятся только к whitespace, и это его сильно раздувает. Но главное - выделение компилятора и опций компиляции не должно затрагивать исходники за исключением мест, которые не устраивают компилятор.
По поводу форматирования.Проект не придерживается какого-то единого code guide. И это понятно, поскольку у разных модулей разные авторы. С этим как-то можно жить. Но есть и просто неряшливость, где в одной строке может быть и табуляция и пробелы. В этом патче множество мелких изменений приходится вносить в большое число файлов, в том числе и такие фрагменты.
По опциям компилятора . В патче сделано обратное - убраны те опции, которые затеняют проблемы и потенциально могут скрывать ошибки. По моему убеждению, для проекта требующего высокого качества и безопасности кода глобальная установка таких опций неправильно. При подключении MSVC компилятора и отладке удалось найти и исправить ряд таких мест, что позволило снять "затенение" ошибок и для gcc/clang.
Приведение стиля явно должно делаться отдельным коммитом. Причёсывание тестов - тоже.
Вы можете выделить изменения в CMakeLists, относящиеся к компиляции? Если да, то нужно сделать именно это.
- 24 файла изменено 1 коммитом для сборки под винды? Это через чур.
- Изменение форматирования испортит
git blame, а это важный инструмент. Код разрабатывают многие люди и долгое время. Это не личный проектик где вы один и можете делать что угодно - надо уважать других разработчиков.
Приведение стиля явно должно делаться отдельным коммитом. Причёсывание тестов - тоже.
Вы можете выделить изменения в CMakeLists, относящиеся к компиляции? Если да, то нужно сделать именно это.
@beldmit С первым утверждением согласен. Только сделать это нужно до прочих/моих изменений.
Причесывание тестов. Тесты кроме изменения отступов содержат еще правки устраняющие ошибки и несовместимости с Windows. Также и как другие изменения в этом патче , они обусловлены исключительно необходимостью сделать код кроссплатформенным.
Прямой взаимосвязи я не вижу. на ABI получаемого кода это не сказывается. Это те же компиляторы. Хотя может быть вы знаете какие-то версии/платформы , под которые openssl использует инструменты сборки, не поддерживающие стандарт std c11?.
On Tue, Jan 28, 2020 at 5:18 PM Dmitry Belyavskiy [email protected] wrote:
@beldmit commented on this pull request.
In CMakeLists.txt https://github.com/gost-engine/engine/pull/203#discussion_r371828077:
endif()
-set(CMAKE_C_STANDARD 90)
+set(CMAKE_C_STANDARD 11)
Я тут ориентируюсь на openssl, потому что engine должен собираться там, где собирается openssl.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/gost-engine/engine/pull/203?email_source=notifications&email_token=AGQXOWRZC426QVFZ5XYTD7TRAA5DFA5CNFSM4KMQI6SKYY3PNVWWK3TUL52HS4DFWFIHK3DMKJSXC5LFON2FEZLWNFSXPKTDN5WW2ZLOORPWSZGOCTJYRPY#discussion_r371828077, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGQXOWWFEKSU3HFXZMUPYZLRAA5DFANCNFSM4KMQI6SA .
Мне тут подсказывают, что вы просто записали файл с заменой пробелов на табы.
Мне тут подсказывают, что вы просто записали файл с заменой пробелов на табы.
Да, в тех файлах, в которые вносились изменения и где была неопределенность с используемыми отступами
по поводу пробелов и табов это обычно знатные холивары бывают. можно отложить это "на потом". и приделать какой-нибудь clang-format или uncrustify в травис
еще предполагаю, что будет холивар из-за переводов строки. который лечится в .gitattributes
ничего из этого не стоит того, чтобы холиварить
@chipitsine Тесты на Perl и Tcl вызывают бинарник openssl, который dlopenит gost.so - в такой конструкции ASan не работает. Вместо того, чтоб разбираться я их отключил.
:~/src/gost-engine (master)$ openssl speed -evp streebog256
==11873==ASan runtime does not come first in initial library list; you should either link runtime to your application or manually preload it with LD_PRELOAD.
При этом, тесты на C работают нормально.
Это был короткий ответ.
В принципе, на своей машине, зная где лежит asan runtime, я могу попробовать сделать так:
:~/src/gost-engine$ export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0
:~/src/gost-engine$ openssl speed -evp streebog256
Doing GOST R 34.11-2012 with 256 bit hash for 3s on 16 size blocks: 304463 GOST R 34.11-2012 with 256 bit hash's in 2.86s
Doing GOST R 34.11-2012 with 256 bit hash for 3s on 64 size blocks: 259372 GOST R 34.11-2012 with 256 bit hash's in 2.93s
Doing GOST R 34.11-2012 with 256 bit hash for 3s on 256 size blocks: 160421 GOST R 34.11-2012 with 256 bit hash's in 2.95s
Doing GOST R 34.11-2012 with 256 bit hash for 3s on 1024 size blocks: 63934 GOST R 34.11-2012 with 256 bit hash's in 3.00s
Doing GOST R 34.11-2012 with 256 bit hash for 3s on 8192 size blocks: 9617 GOST R 34.11-2012 with 256 bit hash's in 3.00s
Doing GOST R 34.11-2012 with 256 bit hash for 3s on 16384 size blocks: 4878 GOST R 34.11-2012 with 256 bit hash's in 3.00s
version: 3.0.0-dev
built on: built on: Sun Feb 2 20:34:58 2020 UTC
options:bn(64,64) rc4(16x,int) des(int) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_BUILDING_OPENSSL -DOPENSSL_PIC
CPUINFO: OPENSSL_ia32cap=0x9ee3fdffebffff:0x0
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
GOST R 34.11-2012 with 256 bit hash 1703.29k 5665.46k 13921.28k 21822.81k 26260.82k 26640.38k
Вроде бы всё ок, но:
:~/src/gost-engine/test$ perl run_tests
00-engine.t ... Can't locate Test2/V0.pm in @INC (you may need to install the Test2::V0 module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.24.1 /usr/local/share/perl/5.24.1 /usr/lib/x86_64-linux-gnu/perl5/5.24 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.24 /usr/share/perl/5.24 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at 00-engine.t line 2.
BEGIN failed--compilation aborted at 00-engine.t line 2.
=================================================================
==12825==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 4584 byte(s) in 2 object(s) allocated from:
#0 0x7f670a695ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x557132cc6bd5 in Perl_safesyscalloc (/usr/bin/perl+0xaebd5)
Direct leak of 1944 byte(s) in 11 object(s) allocated from:
#0 0x7f670a695d28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1d28)
#1 0x557132cc5f71 in Perl_safesysmalloc (/usr/bin/perl+0xadf71)
Direct leak of 1520 byte(s) in 1 object(s) allocated from:
#0 0x7f670a696090 in realloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc2090)
#1 0x557132cc63e9 in Perl_safesysrealloc (/usr/bin/perl+0xae3e9)
Indirect leak of 122041 byte(s) in 344 object(s) allocated from:
#0 0x7f670a695d28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1d28)
#1 0x557132cc5f71 in Perl_safesysmalloc (/usr/bin/perl+0xadf71)
Indirect leak of 21184 byte(s) in 255 object(s) allocated from:
#0 0x7f670a695ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x557132cc6bd5 in Perl_safesyscalloc (/usr/bin/perl+0xaebd5)
Indirect leak of 2856 byte(s) in 11 object(s) allocated from:
#0 0x7f670a696090 in realloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc2090)
#1 0x557132cc63e9 in Perl_safesysrealloc (/usr/bin/perl+0xae3e9)
SUMMARY: AddressSanitizer: 154129 byte(s) leaked in 624 allocation(s).
00-engine.t ... Dubious, test returned 1 (wstat 256, 0x100)
No subtests run
01-digest.t ... Can't locate Test2/V0.pm in @INC (you may need to install the Test2::V0 module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.24.1 /usr/local/share/perl/5.24.1 /usr/lib/x86_64-linux-gnu/perl5/5.24 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.24 /usr/share/perl/5.24 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at 01-digest.t line 2.
BEGIN failed--compilation aborted at 01-digest.t line 2.
=================================================================
==12827==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 4584 byte(s) in 2 object(s) allocated from:
#0 0x7f46fcb6ced0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x55e68f284bd5 in Perl_safesyscalloc (/usr/bin/perl+0xaebd5)
Direct leak of 1944 byte(s) in 11 object(s) allocated from:
#0 0x7f46fcb6cd28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1d28)
#1 0x55e68f283f71 in Perl_safesysmalloc (/usr/bin/perl+0xadf71)
Direct leak of 1520 byte(s) in 1 object(s) allocated from:
#0 0x7f46fcb6d090 in realloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc2090)
#1 0x55e68f2843e9 in Perl_safesysrealloc (/usr/bin/perl+0xae3e9)
Indirect leak of 122041 byte(s) in 344 object(s) allocated from:
#0 0x7f46fcb6cd28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1d28)
#1 0x55e68f283f71 in Perl_safesysmalloc (/usr/bin/perl+0xadf71)
Indirect leak of 21184 byte(s) in 255 object(s) allocated from:
#0 0x7f46fcb6ced0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x55e68f284bd5 in Perl_safesyscalloc (/usr/bin/perl+0xaebd5)
Indirect leak of 2856 byte(s) in 11 object(s) allocated from:
#0 0x7f46fcb6d090 in realloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc2090)
#1 0x55e68f2843e9 in Perl_safesysrealloc (/usr/bin/perl+0xae3e9)
SUMMARY: AddressSanitizer: 154129 byte(s) leaked in 624 allocation(s).
01-digest.t ... Dubious, test returned 1 (wstat 256, 0x100)
No subtests run
02-mac.t ...... Can't locate Test2/V0.pm in @INC (you may need to install the Test2::V0 module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.24.1 /usr/local/share/perl/5.24.1 /usr/lib/x86_64-linux-gnu/perl5/5.24 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.24 /usr/share/perl/5.24 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at 02-mac.t line 2.
BEGIN failed--compilation aborted at 02-mac.t line 2.
=================================================================
==12829==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 4584 byte(s) in 2 object(s) allocated from:
#0 0x7f730eda1ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x55d3c75afbd5 in Perl_safesyscalloc (/usr/bin/perl+0xaebd5)
Direct leak of 1941 byte(s) in 11 object(s) allocated from:
#0 0x7f730eda1d28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1d28)
#1 0x55d3c75aef71 in Perl_safesysmalloc (/usr/bin/perl+0xadf71)
Direct leak of 1520 byte(s) in 1 object(s) allocated from:
#0 0x7f730eda2090 in realloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc2090)
#1 0x55d3c75af3e9 in Perl_safesysrealloc (/usr/bin/perl+0xae3e9)
Indirect leak of 122035 byte(s) in 344 object(s) allocated from:
#0 0x7f730eda1d28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1d28)
#1 0x55d3c75aef71 in Perl_safesysmalloc (/usr/bin/perl+0xadf71)
Indirect leak of 21184 byte(s) in 255 object(s) allocated from:
#0 0x7f730eda1ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x55d3c75afbd5 in Perl_safesyscalloc (/usr/bin/perl+0xaebd5)
Indirect leak of 2856 byte(s) in 11 object(s) allocated from:
#0 0x7f730eda2090 in realloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc2090)
#1 0x55d3c75af3e9 in Perl_safesysrealloc (/usr/bin/perl+0xae3e9)
SUMMARY: AddressSanitizer: 154120 byte(s) leaked in 624 allocation(s).
02-mac.t ...... Dubious, test returned 1 (wstat 256, 0x100)
No subtests run
03-encrypt.t .. Can't locate Test2/V0.pm in @INC (you may need to install the Test2::V0 module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.24.1 /usr/local/share/perl/5.24.1 /usr/lib/x86_64-linux-gnu/perl5/5.24 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.24 /usr/share/perl/5.24 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at 03-encrypt.t line 2.
BEGIN failed--compilation aborted at 03-encrypt.t line 2.
=================================================================
==12831==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 4584 byte(s) in 2 object(s) allocated from:
#0 0x7fb922fb1ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x56037fb80bd5 in Perl_safesyscalloc (/usr/bin/perl+0xaebd5)
Direct leak of 1945 byte(s) in 11 object(s) allocated from:
#0 0x7fb922fb1d28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1d28)
#1 0x56037fb7ff71 in Perl_safesysmalloc (/usr/bin/perl+0xadf71)
Direct leak of 1520 byte(s) in 1 object(s) allocated from:
#0 0x7fb922fb2090 in realloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc2090)
#1 0x56037fb803e9 in Perl_safesysrealloc (/usr/bin/perl+0xae3e9)
Indirect leak of 122043 byte(s) in 344 object(s) allocated from:
#0 0x7fb922fb1d28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1d28)
#1 0x56037fb7ff71 in Perl_safesysmalloc (/usr/bin/perl+0xadf71)
Indirect leak of 21184 byte(s) in 255 object(s) allocated from:
#0 0x7fb922fb1ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x56037fb80bd5 in Perl_safesyscalloc (/usr/bin/perl+0xaebd5)
Indirect leak of 2856 byte(s) in 11 object(s) allocated from:
#0 0x7fb922fb2090 in realloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc2090)
#1 0x56037fb803e9 in Perl_safesysrealloc (/usr/bin/perl+0xae3e9)
SUMMARY: AddressSanitizer: 154132 byte(s) leaked in 624 allocation(s).
03-encrypt.t .. Dubious, test returned 1 (wstat 256, 0x100)
No subtests run
04-pkey.t ..... Can't locate Test2/V0.pm in @INC (you may need to install the Test2::V0 module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.24.1 /usr/local/share/perl/5.24.1 /usr/lib/x86_64-linux-gnu/perl5/5.24 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.24 /usr/share/perl/5.24 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at 04-pkey.t line 2.
BEGIN failed--compilation aborted at 04-pkey.t line 2.
=================================================================
==12833==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 4584 byte(s) in 2 object(s) allocated from:
#0 0x7f5533b88ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x5625895fbbd5 in Perl_safesyscalloc (/usr/bin/perl+0xaebd5)
Direct leak of 1942 byte(s) in 11 object(s) allocated from:
#0 0x7f5533b88d28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1d28)
#1 0x5625895faf71 in Perl_safesysmalloc (/usr/bin/perl+0xadf71)
Direct leak of 1520 byte(s) in 1 object(s) allocated from:
#0 0x7f5533b89090 in realloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc2090)
#1 0x5625895fb3e9 in Perl_safesysrealloc (/usr/bin/perl+0xae3e9)
Indirect leak of 122037 byte(s) in 344 object(s) allocated from:
#0 0x7f5533b88d28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1d28)
#1 0x5625895faf71 in Perl_safesysmalloc (/usr/bin/perl+0xadf71)
Indirect leak of 21184 byte(s) in 255 object(s) allocated from:
#0 0x7f5533b88ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x5625895fbbd5 in Perl_safesyscalloc (/usr/bin/perl+0xaebd5)
Indirect leak of 2856 byte(s) in 11 object(s) allocated from:
#0 0x7f5533b89090 in realloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc2090)
#1 0x5625895fb3e9 in Perl_safesysrealloc (/usr/bin/perl+0xae3e9)
SUMMARY: AddressSanitizer: 154123 byte(s) leaked in 624 allocation(s).
04-pkey.t ..... Dubious, test returned 1 (wstat 256, 0x100)
No subtests run
Test Summary Report
-------------------
00-engine.t (Wstat: 256 Tests: 0 Failed: 0)
Non-zero exit status: 1
Parse errors: No plan found in TAP output
01-digest.t (Wstat: 256 Tests: 0 Failed: 0)
Non-zero exit status: 1
Parse errors: No plan found in TAP output
02-mac.t (Wstat: 256 Tests: 0 Failed: 0)
Non-zero exit status: 1
Parse errors: No plan found in TAP output
03-encrypt.t (Wstat: 256 Tests: 0 Failed: 0)
Non-zero exit status: 1
Parse errors: No plan found in TAP output
04-pkey.t (Wstat: 256 Tests: 0 Failed: 0)
Non-zero exit status: 1
Parse errors: No plan found in TAP output
Files=5, Tests=0, 0 wallclock secs ( 0.05 usr 0.03 sys + 0.08 cusr 0.04 csys = 0.20 CPU)
Result: FAIL
=================================================================
==12824==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 16368 byte(s) in 3 object(s) allocated from:
#0 0x7f0e3a1d9090 in realloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc2090)
#1 0x559dfeb7c3e9 in Perl_safesysrealloc (/usr/bin/perl+0xae3e9)
Direct leak of 5536 byte(s) in 22 object(s) allocated from:
#0 0x7f0e3a1d8d28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1d28)
#1 0x559dfeb7bf71 in Perl_safesysmalloc (/usr/bin/perl+0xadf71)
Direct leak of 5452 byte(s) in 3 object(s) allocated from:
#0 0x7f0e3a1d8ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x559dfeb7cbd5 in Perl_safesyscalloc (/usr/bin/perl+0xaebd5)
Indirect leak of 4145152 byte(s) in 1442 object(s) allocated from:
#0 0x7f0e3a1d8ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x559dfeafbc43 in Perl_Slab_Alloc (/usr/bin/perl+0x2dc43)
Indirect leak of 1620671 byte(s) in 10153 object(s) allocated from:
#0 0x7f0e3a1d8d28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1d28)
#1 0x559dfeb7bf71 in Perl_safesysmalloc (/usr/bin/perl+0xadf71)
Indirect leak of 685165 byte(s) in 2303 object(s) allocated from:
#0 0x7f0e3a1d9090 in realloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc2090)
#1 0x559dfeb7c3e9 in Perl_safesysrealloc (/usr/bin/perl+0xae3e9)
Indirect leak of 360754 byte(s) in 6703 object(s) allocated from:
#0 0x7f0e3a1d8ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x559dfeb7cbd5 in Perl_safesyscalloc (/usr/bin/perl+0xaebd5)
Indirect leak of 356352 byte(s) in 696 object(s) allocated from:
#0 0x7f0e3a1d8ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x559dfeafbcce in Perl_Slab_Alloc (/usr/bin/perl+0x2dcce)
Indirect leak of 189696 byte(s) in 4638 object(s) allocated from:
#0 0x7f0e3a1d8d28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1d28)
#1 0x559dfeb7c451 in Perl_savesharedpv (/usr/bin/perl+0xae451)
Indirect leak of 47768 byte(s) in 853 object(s) allocated from:
#0 0x7f0e3a1d8ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x559dfeb01fd0 in Perl_newUNOP_AUX (/usr/bin/perl+0x33fd0)
Indirect leak of 27232 byte(s) in 853 object(s) allocated from:
#0 0x7f0e3a1d8d28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1d28)
#1 0x559dfeb02b79 (/usr/bin/perl+0x34b79)
Indirect leak of 7352 byte(s) in 294 object(s) allocated from:
#0 0x7f0e3a1d8d28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1d28)
#1 0x559dfeb00773 in Perl_newSTATEOP (/usr/bin/perl+0x32773)
Indirect leak of 3072 byte(s) in 6 object(s) allocated from:
#0 0x7f0e3a1d8ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x559dfeb68315 (/usr/bin/perl+0x9a315)
Indirect leak of 1536 byte(s) in 3 object(s) allocated from:
#0 0x7f0e3a1d8ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x559dfeb12f53 in Perl_pmruntime (/usr/bin/perl+0x44f53)
Indirect leak of 816 byte(s) in 6 object(s) allocated from:
#0 0x7f0e3a1d9090 in realloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc2090)
#1 0x559dfeb69cfa (/usr/bin/perl+0x9bcfa)
Indirect leak of 576 byte(s) in 6 object(s) allocated from:
#0 0x7f0e3a1d8ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x559dfeb682d7 (/usr/bin/perl+0x9a2d7)
Indirect leak of 504 byte(s) in 9 object(s) allocated from:
#0 0x7f0e3a1d8ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x559dfeb0038a in Perl_newLISTOP (/usr/bin/perl+0x3238a)
Indirect leak of 429 byte(s) in 11 object(s) allocated from:
#0 0x7f0e3a1d8d28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1d28)
#1 0x559dfeb9867f in Perl_refcounted_he_new_pvn (/usr/bin/perl+0xca67f)
Indirect leak of 368 byte(s) in 6 object(s) allocated from:
#0 0x7f0e3a1d9090 in realloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc2090)
#1 0x559dfeb69d0f (/usr/bin/perl+0x9bd0f)
Indirect leak of 360 byte(s) in 9 object(s) allocated from:
#0 0x7f0e3a1d8ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x559dfeb00261 in Perl_newOP (/usr/bin/perl+0x32261)
Indirect leak of 228 byte(s) in 6 object(s) allocated from:
#0 0x7f0e3a1d8ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x559dfeb68333 (/usr/bin/perl+0x9a333)
Indirect leak of 160 byte(s) in 5 object(s) allocated from:
#0 0x7f0e3a1d8ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x559dfeb6a3b3 (/usr/bin/perl+0x9c3b3)
Indirect leak of 24 byte(s) in 1 object(s) allocated from:
#0 0x7f0e3a1d8ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x559dfeb7cbd5 in Perl_safesyscalloc (/usr/bin/perl+0xaebd5)
Indirect leak of 12 byte(s) in 2 object(s) allocated from:
#0 0x7f0e3a1d8ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x559dfeb6a287 (/usr/bin/perl+0x9c287)
SUMMARY: AddressSanitizer: 7475583 byte(s) leaked in 28033 allocation(s).
:~/src/gost-engine/test$
Я не готов разбираться со всякими false positive и memory leaks в perl-е.
Заинсталил Test2::V0.
:~/src/gost-engine/test$ perl run_tests
00-engine.t ... Dubious, test returned 1 (wstat 256, 0x100)
All 7 subtests passed
01-digest.t ... Dubious, test returned 1 (wstat 256, 0x100)
All 16 subtests passed
02-mac.t ...... Dubious, test returned 1 (wstat 256, 0x100)
All 19 subtests passed
03-encrypt.t .. Dubious, test returned 1 (wstat 256, 0x100)
All 48 subtests passed
04-pkey.t ..... Dubious, test returned 1 (wstat 256, 0x100)
All 15 subtests passed
Test Summary Report
-------------------
00-engine.t (Wstat: 256 Tests: 7 Failed: 0)
Non-zero exit status: 1
01-digest.t (Wstat: 256 Tests: 16 Failed: 0)
Non-zero exit status: 1
02-mac.t (Wstat: 256 Tests: 19 Failed: 0)
Non-zero exit status: 1
03-encrypt.t (Wstat: 256 Tests: 48 Failed: 0)
Non-zero exit status: 1
04-pkey.t (Wstat: 256 Tests: 15 Failed: 0)
Non-zero exit status: 1
Files=5, Tests=105, 4 wallclock secs ( 0.08 usr 0.04 sys + 3.23 cusr 1.18 csys = 4.53 CPU)
Result: FAIL
=================================================================
==19948==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 16368 byte(s) in 3 object(s) allocated from:
#0 0x7f6bc14f2090 in realloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc2090)
#1 0x55c476b303e9 in Perl_safesysrealloc (/usr/bin/perl+0xae3e9)
Direct leak of 5537 byte(s) in 22 object(s) allocated from:
#0 0x7f6bc14f1d28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1d28)
#1 0x55c476b2ff71 in Perl_safesysmalloc (/usr/bin/perl+0xadf71)
Direct leak of 5452 byte(s) in 3 object(s) allocated from:
#0 0x7f6bc14f1ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x55c476b30bd5 in Perl_safesyscalloc (/usr/bin/perl+0xaebd5)
Indirect leak of 4145152 byte(s) in 1442 object(s) allocated from:
#0 0x7f6bc14f1ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x55c476aafc43 in Perl_Slab_Alloc (/usr/bin/perl+0x2dc43)
Indirect leak of 1630127 byte(s) in 10212 object(s) allocated from:
#0 0x7f6bc14f1d28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1d28)
#1 0x55c476b2ff71 in Perl_safesysmalloc (/usr/bin/perl+0xadf71)
Indirect leak of 685645 byte(s) in 2310 object(s) allocated from:
#0 0x7f6bc14f2090 in realloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc2090)
#1 0x55c476b303e9 in Perl_safesysrealloc (/usr/bin/perl+0xae3e9)
Indirect leak of 362338 byte(s) in 6725 object(s) allocated from:
#0 0x7f6bc14f1ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x55c476b30bd5 in Perl_safesyscalloc (/usr/bin/perl+0xaebd5)
Indirect leak of 356352 byte(s) in 696 object(s) allocated from:
#0 0x7f6bc14f1ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x55c476aafcce in Perl_Slab_Alloc (/usr/bin/perl+0x2dcce)
Indirect leak of 189696 byte(s) in 4638 object(s) allocated from:
#0 0x7f6bc14f1d28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1d28)
#1 0x55c476b30451 in Perl_savesharedpv (/usr/bin/perl+0xae451)
Indirect leak of 47768 byte(s) in 853 object(s) allocated from:
#0 0x7f6bc14f1ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x55c476ab5fd0 in Perl_newUNOP_AUX (/usr/bin/perl+0x33fd0)
Indirect leak of 27232 byte(s) in 853 object(s) allocated from:
#0 0x7f6bc14f1d28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1d28)
#1 0x55c476ab6b79 (/usr/bin/perl+0x34b79)
Indirect leak of 7352 byte(s) in 294 object(s) allocated from:
#0 0x7f6bc14f1d28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1d28)
#1 0x55c476ab4773 in Perl_newSTATEOP (/usr/bin/perl+0x32773)
Indirect leak of 3072 byte(s) in 6 object(s) allocated from:
#0 0x7f6bc14f1ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x55c476b1c315 (/usr/bin/perl+0x9a315)
Indirect leak of 1536 byte(s) in 3 object(s) allocated from:
#0 0x7f6bc14f1ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x55c476ac6f53 in Perl_pmruntime (/usr/bin/perl+0x44f53)
Indirect leak of 816 byte(s) in 6 object(s) allocated from:
#0 0x7f6bc14f2090 in realloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc2090)
#1 0x55c476b1dcfa (/usr/bin/perl+0x9bcfa)
Indirect leak of 576 byte(s) in 6 object(s) allocated from:
#0 0x7f6bc14f1ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x55c476b1c2d7 (/usr/bin/perl+0x9a2d7)
Indirect leak of 504 byte(s) in 9 object(s) allocated from:
#0 0x7f6bc14f1ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x55c476ab438a in Perl_newLISTOP (/usr/bin/perl+0x3238a)
Indirect leak of 429 byte(s) in 11 object(s) allocated from:
#0 0x7f6bc14f1d28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1d28)
#1 0x55c476b4c67f in Perl_refcounted_he_new_pvn (/usr/bin/perl+0xca67f)
Indirect leak of 368 byte(s) in 6 object(s) allocated from:
#0 0x7f6bc14f2090 in realloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc2090)
#1 0x55c476b1dd0f (/usr/bin/perl+0x9bd0f)
Indirect leak of 360 byte(s) in 9 object(s) allocated from:
#0 0x7f6bc14f1ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x55c476ab4261 in Perl_newOP (/usr/bin/perl+0x32261)
Indirect leak of 228 byte(s) in 6 object(s) allocated from:
#0 0x7f6bc14f1ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x55c476b1c333 (/usr/bin/perl+0x9a333)
Indirect leak of 160 byte(s) in 5 object(s) allocated from:
#0 0x7f6bc14f1ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x55c476b1e3b3 (/usr/bin/perl+0x9c3b3)
Indirect leak of 24 byte(s) in 1 object(s) allocated from:
#0 0x7f6bc14f1ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x55c476b30bd5 in Perl_safesyscalloc (/usr/bin/perl+0xaebd5)
Indirect leak of 12 byte(s) in 2 object(s) allocated from:
#0 0x7f6bc14f1ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3.0.0+0xc1ed0)
#1 0x55c476b1e287 (/usr/bin/perl+0x9c287)
SUMMARY: AddressSanitizer: 7487104 byte(s) leaked in 28121 allocation(s).
И что с этим делать?
ну вот... никто не хочет чинить утечки памяти в перле :/
что в итоге с MSVC билдами? надо бы доделать эту штуку