juce-framework / JUCE

JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, LV2 and AAX audio plug-ins.
https://juce.com
Other
6.3k stars 1.67k forks source link

[Bug]: (JUCE 8) Memory Leak At lowLevelShape Function On Windows Standalone Application Built With MSVC #1391

Open FangCunWuChang opened 2 weeks ago

FangCunWuChang commented 2 weeks ago

Detailed steps on how to reproduce the bug

I was using juce::Graphics::drawFittedText then it caused a memory leak.

What is the expected behaviour?

Detected memory leaks! Dumping objects -> {12214} normal block at 0x0000013CC2B233B0, 2 bytes long. Data: 63 00 {12213} normal block at 0x0000013CC2774360, 16 bytes long. Data: < # < 3 < > 80 E0 23 89 3C 01 00 00 B0 33 B2 C2 3C 01 00 00 {6024} normal block at 0x0000013C8923DF90, 6 bytes long. Data: 7A 68 2D 63 6E 00 {6023} normal block at 0x0000013C8923E080, 16 bytes long. Data: < # < > 00 00 00 00 00 00 00 00 90 DF 23 89 3C 01 00 00 {6022} normal block at 0x0000013CC26C2790, 216 bytes long. Data: < > 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 {4786} normal block at 0x0000013C88D1ABB0, 184 bytes long. Data: < > 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Object dump complete.

Operating systems

Windows

What versions of the operating systems?

10.0.22631.3737

Architectures

64-bit

Stacktrace

ucrtbased.dll!00007ffe79d4d2bf()    未知
    ucrtbased.dll!00007ffe79d4d20d()    未知
    ucrtbased.dll!00007ffe79d5016c()    未知
    ucrtbased.dll!00007ffe79d4be8e()    未知
    juce-full.dll!hb_object_create<hb_unicode_funcs_t>() 行 240  C++
    juce-full.dll!hb_unicode_funcs_create(hb_unicode_funcs_t * parent) 行 186    C++
    juce-full.dll!hb_ucd_unicode_funcs_lazy_loader_t::create() 行 228    C++
    juce-full.dll!hb_data_wrapper_t<void,0>::call_create<hb_unicode_funcs_t,hb_ucd_unicode_funcs_lazy_loader_t>() 行 166 C++
    juce-full.dll!hb_lazy_loader_t<hb_unicode_funcs_t,hb_ucd_unicode_funcs_lazy_loader_t,void,0,hb_unicode_funcs_t>::get_stored() 行 221 C++
    juce-full.dll!hb_lazy_loader_t<hb_unicode_funcs_t,hb_ucd_unicode_funcs_lazy_loader_t,void,0,hb_unicode_funcs_t>::get_unconst() 行 247    C++
    juce-full.dll!hb_ucd_get_unicode_funcs() 行 258  C++
    juce-full.dll!hb_unicode_funcs_get_default() 行 164  C++
    juce-full.dll!hb_buffer_t::reset() 行 280    C++
    juce-full.dll!hb_buffer_create() 行 748  C++
    juce-full.dll!juce::lowLevelShape(const juce::String & string, juce::Range<__int64> range, const juce::Font & font, juce::TextScript script, const juce::String & language, juce::TextDirection direction) 行 341    C++
    juce-full.dll!juce::ConsumableGlyphs::reshape() 行 739   C++
    juce-full.dll!juce::ConsumableGlyphs::ConsumableGlyphs(const juce::String & stringIn, juce::Range<__int64> rangeIn, juce::ShapingParams params) 行 624   C++
    juce-full.dll!juce::SimpleShapedText::shape::__l2::<lambda_3>::operator()(juce::Range<__int64> range, const juce::ShapingParams & shapingParams) 行 984  C++
    juce-full.dll!juce::SimpleShapedText::shape(const juce::String & data, const juce::ShapedTextOptions & options) 行 1139  C++
    juce-full.dll!juce::SimpleShapedText::SimpleShapedText(const juce::String * data, const juce::ShapedTextOptions & options) 行 288    C++
    juce-full.dll!juce::ShapedText::Impl::Impl(juce::String textIn, juce::ShapedTextOptions optionsIn) 行 110    C++
    [外部代码]  
    juce-full.dll!juce::ShapedText::ShapedText(juce::String text, juce::ShapedTextOptions options) 行 162    C++
    juce-full.dll!juce::GlyphArrangement::addFittedText(const juce::Font & f, const juce::String & text, float x, float y, float width, float height, juce::Justification layout, int maximumLines, float minimumHorizontalScale) 行 251 C++
    juce-full.dll!juce::Graphics::drawFittedText::__l2::<lambda_1>::operator()(const juce::Graphics::drawFittedText::__l2::ArrangementArgs & args) 行 478    C++
    juce-full.dll!juce::LruCache<`juce::Graphics::drawFittedText'::`2'::ArrangementArgs,juce::`anonymous namespace'::ConfiguredArrangement,128>::get<`juce::Graphics::drawFittedText'::`2'::<lambda_1>>(juce::Graphics::drawFittedText::__l2::ArrangementArgs key, juce::Graphics::drawFittedText::__l2::<lambda_1> && fn) 行 61 C++
    juce-full.dll!juce::`anonymous namespace'::GlyphArrangementCache<`juce::Graphics::drawFittedText'::`2'::ArrangementArgs>::get<`juce::Graphics::drawFittedText'::`2'::<lambda_1>>(juce::Graphics::drawFittedText::__l2::ArrangementArgs && args, juce::Graphics::drawFittedText::__l2::<lambda_1> && configureArrangement) 行 84  C++
    juce-full.dll!juce::Graphics::drawFittedText(const juce::String & text, juce::Rectangle<int> area, juce::Justification justification, int maximumNumberOfLines, float minimumHorizontalScale) 行 487 C++
>   VocalShaper.exe!Splash::paint(juce::Graphics & g) 行 170 C++
    juce-full.dll!juce::Component::paintComponentAndChildren(juce::Graphics & g) 行 1640 C++
    juce-full.dll!juce::Component::paintEntireComponent(juce::Graphics & g, bool ignoreAlphaLevel) 行 1765   C++
    juce-full.dll!juce::ComponentPeer::handlePaint(juce::LowLevelGraphicsContext & contextToPaintTo) 行 144  C++
    juce-full.dll!juce::D2DContext::handleDirect2DPaint() 行 4792    C++
    juce-full.dll!juce::D2DContext::handleShowWindow() 行 4766   C++
    juce-full.dll!juce::HWNDComponentPeer::peerWindowProc(HWND__ * h, unsigned int message, unsigned __int64 wParam, __int64 lParam) 行 3830 C++
    juce-full.dll!juce::HWNDComponentPeer::windowProc(HWND__ * h, unsigned int message, unsigned __int64 wParam, __int64 lParam) 行 3550 C++
    [外部代码]  
    juce-full.dll!juce::HWNDComponentPeer::setVisible(bool shouldBeVisible) 行 1561  C++
    juce-full.dll!juce::Component::setVisible(bool shouldBeVisible) 行 275   C++
    VocalShaper.exe!MainApplication::initialise(const juce::String & commandLineParameters) 行 524   C++
    juce-full.dll!juce::JUCEApplicationBase::initialiseApp() 行 312  C++
    juce-full.dll!juce::JUCEApplication::initialiseApp() 行 97   C++
    juce-full.dll!juce::JUCEApplicationBase::main() 行 271   C++
    VocalShaper.exe!WinMain(HINSTANCE__ * __formal, HINSTANCE__ * __formal, char * __formal, int __formal) 行 656    C++
    [外部代码]

Plug-in formats (if applicable)

Standalone

Plug-in host applications (DAWs) (if applicable)

No response

Testing on the develop branch

The bug is present on the develop branch

Code of Conduct

szarvas commented 1 week ago

We released a change on the develop branch which is likely to have fixed this issue https://github.com/juce-framework/JUCE/commit/203934d949306e8c0b94f27a327012b5881238a5

Are you experiencing problems past this commit?