diff --git a/.valgrindrc b/.valgrindrc new file mode 100644 index 000000000..91c53716b --- /dev/null +++ b/.valgrindrc @@ -0,0 +1,2 @@ +--memcheck:leak-check=full +--suppressions=./valgrind.supp diff --git a/README.md b/README.md index 59aa1fbae..d2d354ecb 100644 --- a/README.md +++ b/README.md @@ -57,6 +57,17 @@ All unit tests run from librepo checkout dir build/tests/test_main tests/test_data/ +To check memoryleaks: + + CK_FORK=no valgrind --leak-check=full build/tests/test_main tests/test_data/ + +Supress known still_reachable memory: + + CK_FORK=no valgrind --leak-check=full --suppressions=still_reachable.supp build/tests/test_main tests/test_data/ + +Note: .valgrindrc file is present in checkoutdir, this file contains the settings: +`--memcheck:leak-check=full --suppressions=./valgrind.supp` + ### Run (from your checkout dir) - Python unittests: PYTHONPATH=`readlink -f ./build/librepo/python/` nosetests -s tests/python/tests/ diff --git a/librepo/librepo.c b/librepo/librepo.c index 73eafd86c..a5983d285 100644 --- a/librepo/librepo.c +++ b/librepo/librepo.c @@ -34,7 +34,7 @@ lr_global_init() DPRINTF("Librepo version: %d.%d.%d\n", LR_VERSION_MAJOR, LR_VERSION_MINOR, LR_VERSION_PATCH); - curl_global_init(CURL_GLOBAL_SSL); + curl_global_init(CURL_GLOBAL_ALL); } void diff --git a/still_reachable.supp b/still_reachable.supp new file mode 100644 index 000000000..57a3c315c --- /dev/null +++ b/still_reachable.supp @@ -0,0 +1,1535 @@ +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:suite_create + fun:checksum_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:tcase_create + fun:checksum_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:suite_create + fun:curltargetlist_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:tcase_create + fun:curltargetlist_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:suite_create + fun:gpg_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:tcase_create + fun:gpg_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:suite_create + fun:handle_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:tcase_create + fun:handle_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:suite_create + fun:internal_mirrorlist_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:tcase_create + fun:internal_mirrorlist_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:suite_create + fun:metalink_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:tcase_create + fun:metalink_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:suite_create + fun:mirrorlist_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:tcase_create + fun:mirrorlist_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:suite_create + fun:repomd_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:tcase_create + fun:repomd_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:suite_create + fun:util_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:tcase_create + fun:util_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_create + fun:main +} +{ + + Memcheck:Leak + fun:malloc + fun:strdup + fun:set_selinuxmnt + fun:verify_selinuxmnt + fun:init_lib + fun:call_init.part.0 + fun:_dl_init + obj:/usr/lib64/ld-2.15.so + obj:* + obj:* + obj:* +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:suite_create + fun:checksum_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:suite_create + fun:curltargetlist_suite + fun:main +} +{ + + Memcheck:Leak + fun:realloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:curltargetlist_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:suite_create + fun:gpg_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:suite_create + fun:handle_suite + fun:main +} +{ + + Memcheck:Leak + fun:realloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:handle_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:suite_create + fun:internal_mirrorlist_suite + fun:main +} +{ + + Memcheck:Leak + fun:realloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:internal_mirrorlist_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:suite_create + fun:metalink_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:suite_create + fun:mirrorlist_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:suite_create + fun:repomd_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:suite_create + fun:util_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + fun:strdup + fun:lr_strdup + fun:init_test_globals + fun:main +} +{ + + Memcheck:Leak + fun:malloc + fun:lr_malloc + fun:lr_pathconcat + fun:init_test_globals + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_create + fun:main +} +{ + + Memcheck:Leak + fun:malloc + fun:strdup + fun:lr_strdup + fun:lr_gettmpdir + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:_tcase_add_test + fun:checksum_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:_tcase_add_test + fun:curltargetlist_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:_tcase_add_test + fun:gpg_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:_tcase_add_test + fun:handle_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:_tcase_add_test + fun:internal_mirrorlist_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:_tcase_add_test + fun:metalink_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:_tcase_add_test + fun:mirrorlist_suite + fun:main +} +{ + + Memcheck:Leak + fun:realloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:mirrorlist_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:_tcase_add_test + fun:repomd_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:_tcase_add_test + fun:util_suite + fun:main +} +{ + + Memcheck:Leak + fun:realloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + fun:lr_malloc + fun:lr_pathconcat + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:tcase_create + fun:checksum_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:tcase_create + fun:curltargetlist_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:tcase_create + fun:gpg_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:tcase_create + fun:handle_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:tcase_create + fun:internal_mirrorlist_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:tcase_create + fun:metalink_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:tcase_create + fun:mirrorlist_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:tcase_create + fun:repomd_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:tcase_create + fun:util_suite + fun:main +} +{ + + Memcheck:Leak + fun:realloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:metalink_suite + fun:main +} +{ + + Memcheck:Leak + fun:realloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:util_suite + fun:main +} +{ + + Memcheck:Leak + fun:realloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + fun:fdopen@@GLIBC_2.2.5 + fun:tmpfile@@GLIBC_2.2.5 + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_create + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:_tcase_add_test + fun:util_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:_tcase_add_test + fun:util_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libcheck.so.0.0.0 + fun:tcase_create + fun:curltargetlist_suite + fun:main +} +{ + + Memcheck:Leak + fun:malloc + fun:strdup + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_new + fun:lr_gpg_import_key + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + fun:strdup + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_ctx_set_engine_info + fun:lr_gpg_import_key + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_new + fun:lr_gpg_import_key + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + fun:gpgme_new + fun:lr_gpg_import_key + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_op_import + fun:lr_gpg_import_key + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_ctx_set_engine_info + fun:lr_gpg_import_key + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + fun:strdup + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_op_import + fun:lr_gpg_import_key + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_op_import + fun:lr_gpg_import_key + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_op_import + fun:lr_gpg_import_key + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_op_import + fun:lr_gpg_import_key + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_op_import + fun:lr_gpg_import_key + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + fun:strdup + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_op_import + fun:lr_gpg_import_key + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_op_import + fun:lr_gpg_import_key + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_op_import + fun:lr_gpg_import_key + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_data_new_from_fd + fun:lr_gpg_import_key + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + fun:strdup + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_new + fun:lr_gpg_check_signature_fd + fun:lr_gpg_check_signature + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + fun:strdup + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_ctx_set_engine_info + fun:lr_gpg_check_signature_fd + fun:lr_gpg_check_signature + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_new + fun:lr_gpg_check_signature_fd + fun:lr_gpg_check_signature + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + fun:gpgme_new + fun:lr_gpg_check_signature_fd + fun:lr_gpg_check_signature + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_op_verify + fun:lr_gpg_check_signature_fd + fun:lr_gpg_check_signature + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_ctx_set_engine_info + fun:lr_gpg_check_signature_fd + fun:lr_gpg_check_signature + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + fun:strdup + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_op_verify + fun:lr_gpg_check_signature_fd + fun:lr_gpg_check_signature + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all +} +{ + + Memcheck:Leak + fun:calloc + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_op_verify + fun:lr_gpg_check_signature_fd + fun:lr_gpg_check_signature + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_op_verify + fun:lr_gpg_check_signature_fd + fun:lr_gpg_check_signature + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_op_verify + fun:lr_gpg_check_signature_fd + fun:lr_gpg_check_signature + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all +} +{ + + Memcheck:Leak + fun:calloc + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_op_verify + fun:lr_gpg_check_signature_fd + fun:lr_gpg_check_signature + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + fun:strdup + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_op_verify + fun:lr_gpg_check_signature_fd + fun:lr_gpg_check_signature + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_op_verify + fun:lr_gpg_check_signature_fd + fun:lr_gpg_check_signature + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_op_verify + fun:lr_gpg_check_signature_fd + fun:lr_gpg_check_signature + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + obj:/usr/lib64/libgpgme.so.11.7.0 + fun:gpgme_data_new_from_fd + fun:lr_gpg_check_signature_fd + fun:lr_gpg_check_signature + fun:test_gpg_check_signature + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + fun:strdup + fun:PR_NewLogModule + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + fun:PR_CreateStack + fun:_PR_InitFdCache + fun:_PR_InitIO + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + fun:_PR_InitLinker + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + fun:PR_NewLogModule + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + fun:_PR_InitMW + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + fun:PR_ErrorInstallTable + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + fun:_dlerror_run + fun:dlopen@@GLIBC_2.2.5 + fun:_PR_InitZones + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + fun:_PR_Getfd + fun:pt_SetMethods.isra.11 + fun:_PR_InitIO + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + fun:_PR_InitLinker + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + fun:PR_NewCondVar + fun:_PR_InitThreads + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + fun:ExpandMonitorCache + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + fun:PR_NewCondVar + fun:_PR_InitIO + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + fun:PR_NewMonitor + fun:PR_NewNamedMonitor + fun:_PR_InitLinker + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:malloc + fun:PR_NewCondVar + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + fun:PR_NewMonitor + fun:_PR_UnixInit + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + fun:PR_NewLock + fun:_PR_InitEnv + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + fun:PR_NewLock + fun:_PR_InitLayerCache + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + fun:PR_NewLock + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + fun:PR_NewLock + fun:_PR_InitThreads + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + fun:PR_NewLock + fun:_PR_InitCMon + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + fun:PR_NewLock + fun:_PR_InitIO + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + fun:PR_NewLock + fun:_PR_InitFdCache + fun:_PR_InitIO + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + fun:PR_NewLock + fun:PR_CreateStack + fun:_PR_InitFdCache + fun:_PR_InitIO + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all +} +{ + + Memcheck:Leak + fun:calloc + fun:PR_NewLock + fun:_PR_InitNet + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + fun:PR_NewLock + fun:_PR_InitTime + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + fun:PR_NewLock + fun:_PR_InitLog + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + fun:PR_NewLock + fun:_PR_InitDtoa + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + fun:PR_NewLock + fun:_PR_InitMW + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + fun:PR_NewLock + fun:_PR_UnixInit + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + fun:PR_NewMonitor + fun:ExpandMonitorCache + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} +{ + + Memcheck:Leak + fun:calloc + fun:_PR_InitTPD + fun:_PR_InitStuff + fun:Curl_nss_init + fun:curl_global_init + fun:lr_global_init + fun:test_handle + obj:/usr/lib64/libcheck.so.0.0.0 + fun:srunner_run_all + fun:main +} diff --git a/tests/test_handle.c b/tests/test_handle.c index cb46aaa2b..730ab4b5d 100644 --- a/tests/test_handle.c +++ b/tests/test_handle.c @@ -7,6 +7,7 @@ #include #include +#include "librepo/librepo.h" #include "librepo/rcodes.h" #include "librepo/handle.h" @@ -18,6 +19,7 @@ START_TEST(test_handle) { lr_Handle h = NULL; + lr_global_init(); h = lr_handle_init(); fail_if(h == NULL); lr_handle_free(h); @@ -35,7 +37,7 @@ START_TEST(test_handle) lr_handle_setopt(h, LRO_YUMDLIST, dlist); lr_handle_setopt(h, LRO_YUMBLIST, dlist); lr_handle_free(h); - h = NULL; + lr_global_cleanup(); } END_TEST @@ -46,6 +48,7 @@ START_TEST(test_handle_getinfo) char **strlist; lr_Handle h = NULL; + lr_global_init(); h = lr_handle_init(); num = -1; @@ -99,6 +102,7 @@ START_TEST(test_handle_getinfo) fail_if(num != 0); lr_handle_free(h); + lr_global_cleanup(); } END_TEST diff --git a/valgrind.supp b/valgrind.supp new file mode 100644 index 000000000..1d61c5c3d --- /dev/null +++ b/valgrind.supp @@ -0,0 +1,72 @@ +# librepo suppressions for valgrind +# +# http://wiki.wxwidgets.org/Valgrind_Suppression_File_Howto +# +# To have valgrind use this file use --suppressions=/path/to/valgrind.supp +# +# Format of this file is: +# { +# name_of_suppression +# tool_name:supp_kind +# (optional extra info for some suppression types) +# caller0 name, or /name/of/so/file.so +# caller1 name, or ditto +# (optionally: caller2 name) +# (optionally: caller3 name) +# } +# +# tool_name: +# Memcheck, Addrcheck, Callgrind, ... (and other valgrind tools) +# supp_kinds for Memcheck are: +# Leak Free Cond Param +# Value1 Value2 Value4 Value8 Value16 +# Addr1 Addr2 Addr4 Addr8 Addr16 +# optional extra info is: +# if Param: name of system call param +# if Free: name of free-ing fn +# caller line starts with: +# +# 'fun' for function calls +# 'obj' for shared object +# '...' is the frame-level wildcard - matches zero or more fun: or obj: lines +# +# Example: +# { +# gdk_set_locale +# Memcheck:Leak +# ... +# fun:gdk_set_locale +# } + +{ + openssl-supp-load-compressions + Memcheck:Leak + fun:malloc + fun:CRYPTO_malloc + ... + fun:load_builtin_compressions + fun:SSL_COMP_get_compression_methods + fun:SSL_library_init +} +{ + gpgme-static-get-engine-info + Memcheck:Leak + fun:malloc + ... + fun:gpgme_get_engine_info +} +{ + gpgme-static-set-engine-info + Memcheck:Leak + fun:malloc + ... + fun:_gpgme_set_engine_info + fun:gpgme_set_engine_info +} +{ + gpgme-static-set-locale + Memcheck:Leak + fun:malloc + fun:strdup + fun:gpgme_set_locale +}