Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support Windows x64 MSVC openssl build #203

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

ddulesov
Copy link
Contributor

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

@beldmit
Copy link
Contributor

beldmit commented Jan 28, 2020

@ddulesov, при всём уважении в таком виде патч не пригоден.

Много где различия сводятся только к whitespace, и это его сильно раздувает. Но главное - выделение компилятора и опций компиляции не должно затрагивать исходники за исключением мест, которые не устраивают компилятор.

@phprus
Copy link

phprus commented Jan 28, 2020

@ddulesov
Copy link
Contributor Author

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
Copy link
Contributor Author

@ddulesov, при всём уважении в таком виде патч не пригоден.

Много где различия сводятся только к whitespace, и это его сильно раздувает. Но главное - выделение компилятора и опций компиляции не должно затрагивать исходники за исключением мест, которые не устраивают компилятор.

По поводу форматирования.Проект не придерживается какого-то единого code guide. И это понятно, поскольку у разных модулей разные авторы. С этим как-то можно жить. Но есть и просто неряшливость, где в одной строке может быть и табуляция и пробелы. В этом патче множество мелких изменений приходится вносить в большое число файлов, в том числе и такие фрагменты.
По опциям компилятора . В патче сделано обратное - убраны те опции, которые затеняют проблемы и потенциально могут скрывать ошибки. По моему убеждению, для проекта требующего высокого качества и безопасности кода глобальная установка таких опций неправильно. При подключении MSVC компилятора и отладке удалось найти и исправить ряд таких мест, что позволило снять "затенение" ошибок и для gcc/clang.

@beldmit
Copy link
Contributor

beldmit commented Jan 28, 2020

Приведение стиля явно должно делаться отдельным коммитом. Причёсывание тестов - тоже.

Вы можете выделить изменения в CMakeLists, относящиеся к компиляции? Если да, то нужно сделать именно это.

@vt-alt
Copy link
Member

vt-alt commented Jan 28, 2020

  • 24 файла изменено 1 коммитом для сборки под винды? Это через чур.
  • Изменение форматирования испортит git blame, а это важный инструмент. Код разрабатывают многие люди и долгое время. Это не личный проектик где вы один и можете делать что угодно - надо уважать других разработчиков.

endif()

set(CMAKE_C_STANDARD 90)
set(CMAKE_C_STANDARD 11)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Зачем тут C11 если хватило бы C99?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Да, в данном патче именно C11 не нужен. У меня он сохранился по причине использования атомарных операций в утилите gost1sum. В этом случае это must have.
Я бы в любом случае перевел сборку на C11. Этот стандарт поддерживается всеми современными компиляторами. В него внесены изменения, связанные с поддержкой выравнивания структур данных. Это позволит избавиться от compile/platform specific определений для указания выравнивания.

Copy link
Contributor

@beldmit beldmit Jan 28, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я тут ориентируюсь на openssl, потому что engine должен собираться там, где собирается openssl. Там скорее всего C90.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Да, в данном патче именно C11 не нужен. У меня он сохранился по причине использования атомарных операций в утилите gost1sum. В этом случае это must have.
Я бы в любом случае перевел сборку на C11.

В Centos 6 gcc-4.4 без C11, а эта система до сих пор используется и поддерживается. Такие значительные изменения совместимости надо согласовывать, а лучше вообще не делать ближайшие 10 лет.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Хотя gcc-4.х вышел до опубликования стандарта, он поддерживает его в draft варианте.
Но поскольку изменения не требуют явно новшеств стандарта , лучше сохранить в настройках С90.

@ddulesov
Copy link
Contributor Author

Приведение стиля явно должно делаться отдельным коммитом. Причёсывание тестов - тоже.

Вы можете выделить изменения в CMakeLists, относящиеся к компиляции? Если да, то нужно сделать именно это.

@beldmit С первым утверждением согласен. Только сделать это нужно до прочих/моих изменений.
Причесывание тестов. Тесты кроме изменения отступов содержат еще правки устраняющие ошибки и несовместимости с Windows. Также и как другие изменения в этом патче , они обусловлены исключительно необходимостью сделать код кроссплатформенным.

@ddulesov
Copy link
Contributor Author

ddulesov commented Jan 28, 2020 via email

@vt-alt
Copy link
Member

vt-alt commented Jan 28, 2020

Мне тут подсказывают, что вы просто записали файл с заменой пробелов на табы.

@ddulesov
Copy link
Contributor Author

Мне тут подсказывают, что вы просто записали файл с заменой пробелов на табы.

Да, в тех файлах, в которые вносились изменения и где была неопределенность с используемыми отступами


if(ASAN)
message(STATUS "address sanitizer enabled")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -g3 -fno-omit-frame-pointer")
endif()

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ddulesov, можете выделить вот только этот кусок (и без повышения требований к версии CMake)? Кажется, задачу сборки MVCC он решает.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

не понимаю, что в этом куске нужно сделать?
ASAN - adress sanitizer - инструмент только для gcc и clang

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@beldmit На веб интерфейсе не понятно какой кусок имеется ввиду.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Да, я уже понял. @ddulesov, я имел в виду вот до 40 строки, а не последний сегмент. Прошу прощения.

@chipitsine
Copy link
Contributor

по поводу пробелов и табов это обычно знатные холивары бывают. можно отложить это "на потом". и приделать какой-нибудь clang-format или uncrustify в травис

еще предполагаю, что будет холивар из-за переводов строки. который лечится в .gitattributes

ничего из этого не стоит того, чтобы холиварить

add_compile_options(/MP /WX /W4 /wd4100 /wd4267 /wd4706)
ENDif()

if(ASAN)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

все хотел спросить. а в чем задумка "ASAN" ? плюс-минус так же можно пропихать -fsanitize в CMAKE_C_FLAGS

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ещё отключаются perl и tcl тесты.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

а, про это тоже хотел спросить. с наивной точки зрения кажется, что тесты таки стоит гонять с включенными санитайзерами. если с выключенными, то есть причина ?

@vt-alt
Copy link
Member

vt-alt commented Feb 4, 2020

@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-е.

@vt-alt
Copy link
Member

vt-alt commented Feb 4, 2020

Заинсталил 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).

И что с этим делать?

@chipitsine
Copy link
Contributor

ну вот... никто не хочет чинить утечки памяти в перле :/

@chipitsine
Copy link
Contributor

что в итоге с MSVC билдами? надо бы доделать эту штуку

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants