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

Fix memory leak in zzX #515

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

Conversation

UnionTech-Software
Copy link

@UnionTech-Software UnionTech-Software commented Dec 20, 2024

This patch fixes the memory leak in zzX

When we are testing NTL::zz_pXModulus&getPhimXMod functions, if an exception occurs during the execution of the moduli.insert operation, it will result in the allocated memory not being released. Therefore, this modification uses smart pointers to avoid memory leaks

==47958==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 176 byte(s) in 1 object(s) allocated from:
#0 0x794a300b61e7 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:99
#1 0x5777885d6c36 in helib::getPhimXMod(helib::PAlgebra const&) /home/uos/HElib-2.3.0/HElib-2.3.0/src/zzX.cpp:96

Indirect leak of 49152 byte(s) in 2 object(s) allocated from:
#0 0x794a300b6357 in operator new[](unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:102
#1 0x794a2fda81c1 in long* NTL::MakeRawArray(long) ../include/NTL/SmartPtr.h:998
#2 0x794a2fda81c1 in NTL::UniqueArray::SetLength(long) ../include/NTL/SmartPtr.h:1620
#3 0x794a2fda81c1 in NTL::fftRep::DoSetSize(long, long) /home/uos/HElib-2.3.0/HElib-2.3.0/build/dependencies/Source/ntl_fetched/src/lzz_pX.cpp:1378

Indirect leak of 13888 byte(s) in 1 object(s) allocated from:
#0 0x794a300b4887 in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:145
#1 0x577788032e4b in NTL::VecNTL::zz_p::AllocateTo(long) /home/uos/HElib-2.3.0/HElib-2.3.0/build/helib_pack/include/NTL/vector.h:653

Indirect leak of 56 byte(s) in 1 object(s) allocated from:
#0 0x794a300b64c7 in operator new(unsigned long, std::nothrow_t const&) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:105
#1 0x794a2fdac3a4 in NTL::Lazy<NTL::VecNTL::zz_p, NTL::DefaultDeleterPolicy>* NTL::MakeRaw<NTL::Lazy<NTL::VecNTL::zz_p, NTL::DefaultDeleterPolicy>>() ../include/NTL/SmartPtr.h:710
#2 0x794a2fdac3a4 in void NTL::UniquePtr<NTL::Lazy<NTL::VecNTL::zz_p, NTL::DefaultDeleterPolicy>, NTL::DefaultDeleterPolicy>::make<>() ../include/NTL/SmartPtr.h:1109
#3 0x794a2fdac3a4 in void NTL::OptionalVal<NTL::Lazy<NTL::VecNTL::zz_p, NTL::DefaultDeleterPolicy> >::make<>() ../include/NTL/SmartPtr.h:1479
#4 0x794a2fdac3a4 in NTL::build(NTL::zz_pXModulus&, NTL::zz_pX const&) /home/uos/HElib-2.3.0/HElib-2.3.0/build/dependencies/Source/ntl_fetched/src/lzz_pX.cpp:2845

SUMMARY: AddressSanitizer: 63272 byte(s) leaked in 5 allocation(s).

This patch fixes the memory leak in zzX

==47958==ERROR: LeakSanitizer: detected memory leaks
                                                                                                                                       
Direct leak of 176 byte(s) in 1 object(s) allocated from:
    #0 0x794a300b61e7 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:99                          
    homenc#1 0x5777885d6c36 in helib::getPhimXMod(helib::PAlgebra const&) /home/uos/HElib-2.3.0/HElib-2.3.0/src/zzX.cpp:96

Indirect leak of 49152 byte(s) in 2 object(s) allocated from:
    #0 0x794a300b6357 in operator new[](unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:102                       
    homenc#1 0x794a2fda81c1 in long* NTL::MakeRawArray<long>(long) ../include/NTL/SmartPtr.h:998
    homenc#2 0x794a2fda81c1 in NTL::UniqueArray<long>::SetLength(long) ../include/NTL/SmartPtr.h:1620
    homenc#3 0x794a2fda81c1 in NTL::fftRep::DoSetSize(long, long) /home/uos/HElib-2.3.0/HElib-2.3.0/build/dependencies/Source/ntl_fetched/src/lzz_pX.cpp:1378

Indirect leak of 13888 byte(s) in 1 object(s) allocated from:
    #0 0x794a300b4887 in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:145                              
    homenc#1 0x577788032e4b in NTL::Vec<NTL::zz_p>::AllocateTo(long) /home/uos/HElib-2.3.0/HElib-2.3.0/build/helib_pack/include/NTL/vector.h:653

Indirect leak of 56 byte(s) in 1 object(s) allocated from:
    #0 0x794a300b64c7 in operator new(unsigned long, std::nothrow_t const&) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:105  
    homenc#1 0x794a2fdac3a4 in NTL::Lazy<NTL::Vec<NTL::zz_p>, NTL::DefaultDeleterPolicy>* NTL::MakeRaw<NTL::Lazy<NTL::Vec<NTL::zz_p>, NTL::DefaultDeleterPolicy>>() ../include/NTL/SmartPtr.h:710
    homenc#2 0x794a2fdac3a4 in void NTL::UniquePtr<NTL::Lazy<NTL::Vec<NTL::zz_p>, NTL::DefaultDeleterPolicy>, NTL::DefaultDeleterPolicy>::make<>() ../include/NTL/SmartPtr.h:1109
    homenc#3 0x794a2fdac3a4 in void NTL::OptionalVal<NTL::Lazy<NTL::Vec<NTL::zz_p>, NTL::DefaultDeleterPolicy> >::make<>() ../include/NTL/SmartPtr.h:1479
    homenc#4 0x794a2fdac3a4 in NTL::build(NTL::zz_pXModulus&, NTL::zz_pX const&) /home/uos/HElib-2.3.0/HElib-2.3.0/build/dependencies/Source/ntl_fetched/src/lzz_pX.cpp:2845

SUMMARY: AddressSanitizer: 63272 byte(s) leaked in 5 allocation(s).
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.

1 participant