-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Open
Description
Detailed steps on how to reproduce the bug
we are experiencing consistent failures of the UnitTestRunner on Linux/arm64, when building with CONFIG=Release.
-----------------------------------------------------------------
Starting tests in: IntersectingRangedValues / IntersectingRangedValuesTests - iterating over multiple RangedValues...
Completed tests in IntersectingRangedValues / IntersectingRangedValuesTests - iterating over multiple RangedValues
-----------------------------------------------------------------
Starting tests in: SimpleShapedText / getTextRange: LTR Latin text without ligatures - no soft breaks...
Segmentation fault
it appears to work nicely when building with CONFIG=Debug (which i think is the default).
of course, the Release builds are built without -g:
| JUCE_CFLAGS += $(JUCE_CPPFLAGS) $(TARGET_ARCH) -O3 $(CFLAGS) |
so I've manually changed that line to:
JUCE_CFLAGS += $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -O3 $(CFLAGS)What is the expected behaviour?
i expect that the unit-tests succeed, regardless of whether i use a Debug or a Release build.
Operating systems
Linux
What versions of the operating systems?
Debian/GNU linux (sid)
the tests are run on a headless build machine without audio hardware.
Architectures
Arm64/aarch64
Stacktrace
Starting tests in: SimpleShapedText / getTextRange: LTR Latin text without ligatures - no soft breaks...
Thread 1 "UnitTestRunner" received signal SIGSEGV, Segmentation fault.
std::_Rb_tree_rebalance_for_erase (__z=0xfffffffffffffffd, __header=...) at ../../../../../src/libstdc++-v3/src/c++98/tree.cc:296
warning: 296 ../../../../../src/libstdc++-v3/src/c++98/tree.cc: No such file or directory
(gdb) bt
#0 std::_Rb_tree_rebalance_for_erase (__z=0xfffffffffffffffd, __header=...) at ../../../../../src/libstdc++-v3/src/c++98/tree.cc:296
#1 0x0000aaaaab1d2a70 in std::__rb_tree::_Node_traits<std::pair<juce::String const, juce::LruCache<juce::String, juce::Array<juce::Unicode::Codepoint, juce::DummyCriticalSection, 0>, 128ul>::Pair>, std::pair<juce::String const, juce::LruCache<juce::String, juce::Array<juce::Unicode::Codepoint, juce::DummyCriticalSection, 0>, 128ul>::Pair>*>::_S_rebalance_for_erase (__z=<optimized out>, __header=...) at /usr/include/c++/15/bits/stl_tree.h:698
#2 std::_Rb_tree<juce::String, std::pair<juce::String const, juce::LruCache<juce::String, juce::Array<juce::Unicode::Codepoint, juce::DummyCriticalSection, 0>, 128ul>::Pair>, std::_Select1st<std::pair<juce::String const, juce::LruCache<juce::String, juce::Array<juce::Unicode::Codepoint, juce::DummyCriticalSection, 0>, 128ul>::Pair> >, std::less<juce::String>, std::allocator<std::pair<juce::String const, juce::LruCache<juce::String, juce::Array<juce::Unicode::Codepoint, juce::DummyCriticalSection, 0>, 128ul>::Pair> > >::_M_erase_aux (this=<optimized out>, __position=...) at /usr/include/c++/15/bits/stl_tree.h:3115
#3 std::_Rb_tree<juce::String, std::pair<juce::String const, juce::LruCache<juce::String, juce::Array<juce::Unicode::Codepoint, juce::DummyCriticalSection, 0>, 128ul>::Pair>, std::_Select1st<std::pair<juce::String const, juce::LruCache<juce::String, juce::Array<juce::Unicode::Codepoint, juce::DummyCriticalSection, 0>, 128ul>::Pair> >, std::less<juce::String>, std::allocator<std::pair<juce::String const, juce::LruCache<juce::String, juce::Array<juce::Unicode::Codepoint, juce::DummyCriticalSection, 0>, 128ul>::Pair> > >::erase[abi:cxx11](std::_Rb_tree_const_iterator<std::pair<juce::String const, juce::LruCache<juce::String, juce::Array<juce::Unicode::Codepoint, juce::DummyCriticalSection, 0>, 128ul>::Pair> >) (this=<optimized out>, __position=...) at /usr/include/c++/15/bits/stl_tree.h:1821
#4 std::map<juce::String, juce::LruCache<juce::String, juce::Array<juce::Unicode::Codepoint, juce::DummyCriticalSection, 0>, 128ul>::Pair, std::less<juce::String>, std::allocator<std::pair<juce::String const, juce::LruCache<juce::String, juce::Array<juce::Unicode::Codepoint, juce::DummyCriticalSection, 0>, 128ul>::Pair> > >::erase (this=<optimized out>, __position=...) at /usr/include/c++/15/bits/stl_map.h:1122
#5 juce::LruCache<juce::String, juce::Array<juce::Unicode::Codepoint, juce::DummyCriticalSection, 0>, 128ul>::get<juce::Array<juce::Unicode::Codepoint, juce::DummyCriticalSection, 0> (&)(juce::String const&)> (this=<optimized out>,
key=..., fn=<optimized out>) at ../../../../modules/juce_core/detail/juce_LruCache.h:56
#6 juce::Unicode::performAnalysis (string=...) at ../../../../modules/juce_graphics/unicode/juce_Unicode.cpp:86
#7 0x0000aaaaab132af8 in juce::detail::getLineRanges (data=...) at ../../../../modules/juce_graphics/detail/juce_SimpleShapedText.cpp:1260
#8 juce::detail::SimpleShapedText::shape (this=0xffffffffee40, data=..., options=...) at ../../../../modules/juce_graphics/detail/juce_SimpleShapedText.cpp:1288
#9 0x0000aaaaab1356a4 in juce::detail::SimpleShapedText::SimpleShapedText (this=0xffffffffee40, data=<optimized out>, options=...) at ../../../../modules/juce_graphics/detail/juce_SimpleShapedText.cpp:119
#10 0x0000aaaaab1d608c in juce::detail::SimpleShapedTextTests::runTest (this=this@entry=0xaaaaab9dc5b8 <juce::detail::simpleShapedTextTests>, text=text@entry=0xaaaaab68d5e8 "Some trivial text", maxWidth=maxWidth@entry=100000)
at ../../../../modules/juce_graphics/detail/juce_SimpleShapedText.cpp:1564
#11 0x0000aaaaab1d6434 in juce::detail::SimpleShapedTextTests::runTest (this=0xaaaaab9dc5b8 <juce::detail::simpleShapedTextTests>) at ../../../../modules/juce_graphics/detail/juce_SimpleShapedText.cpp:1585
#12 0x0000aaaaaaf3b8d8 in juce::UnitTest::performTest (this=0xaaaaab9dc5b8 <juce::detail::simpleShapedTextTests>, newRunner=0xfffffffff128) at ../../../../modules/juce_core/unit_tests/juce_UnitTest.cpp:103
#13 juce::UnitTestRunner::runTests (this=0xfffffffff128, tests=..., randomSeed=<optimized out>) at ../../../../modules/juce_core/unit_tests/juce_UnitTest.cpp:191
#14 0x0000aaaaaab9aca8 in main (argc=<optimized out>, argv=<optimized out>) at ../../Source/Main.cpp:122
(gdb)Plug-in formats (if applicable)
No response
Plug-in host applications (DAWs) (if applicable)
No response
Testing on the develop branch
I have not tested against the develop branch
Code of Conduct
- I agree to follow the Code of Conduct
Metadata
Metadata
Assignees
Labels
No labels