Page MenuHomeWildfire Games

Analysis of unique_range assertion failure on MacOS
AbandonedPublic

Authored by Teiresias on Jan 3 2020, 7:45 PM.

Details

Reviewers
None
Trac Tickets
#5165
Summary

The associated patch is not (yet) intended as a contribution to 0AD. It's a trimmed down version of the test case introducted by D1511, which caused a Jenkins test error on macos (but not on VS build).

The idea of the patch is to have the little bit of code which utilizes UniqueRange execute without the "overhead" of ArchiveReader_Zip and other code found in archive_zip.cpp. If the test case of this patch still crashes, it indicates that there is a problem in the allocator code.

Currently, no review required as the code is not yet intended for production. However, should the test indicate an error in the allocator code, it has to be extended into a bugfix with review and everything.

Test Plan
  1. Have the Jenkins pipeline build and run/test a 0AD system on all platforms, using the patch
  2. If the test again fails on MacOS, it means that there is either a general problem in the allocator or it's usage is incorrect (again a problem since that code is already in trunk)
  3. If the test case passes on all platforms, the culprit is apparently outside the allocator itself, either in the zip handling patch or in io::Store. The second being unlikely, for a local test run has shown io::Store does not allocate buffers.

Event Timeline

Teiresias created this revision.Jan 3 2020, 7:45 PM
Vulcan added a comment.Jan 3 2020, 7:47 PM

Successful build - Chance fights ever on the side of the prudent.

Link to build: https://jenkins.wildfiregames.com/job/vs2015-differential/937/display/redirect

Vulcan added a comment.Jan 3 2020, 7:49 PM

Successful build - Chance fights ever on the side of the prudent.

Linter detected issues:

Link to build: https://jenkins.wildfiregames.com/job/docker-differential/1455/display/redirect

Vulcan added a comment.Jan 3 2020, 7:50 PM

Build failure - The Moirai have given mortals hearts that can endure.

Link to build: https://jenkins.wildfiregames.com/job/macos-differential/33/display/redirect

I've reproduced that assertion locally on macOS 10.14.6 in debug-mode. I've figured out the reason: it seems that OSAtomicAdd64 doesn't work as expected in debug mode, maybe address was misaligned.

Stan added a subscriber: Stan.Jan 21 2020, 10:02 AM

I've reproduced that assertion locally on macOS 10.14.6 in debug-mode. I've figured out the reason: it seems that OSAtomicAdd64 doesn't work as expected in debug mode, maybe address was misaligned.

Can it be fixed?

In D2531#108430, @Stan wrote:

I've reproduced that assertion locally on macOS 10.14.6 in debug-mode. I've figured out the reason: it seems that OSAtomicAdd64 doesn't work as expected in debug mode, maybe address was misaligned.

Can it be fixed?

Sure.

In D2531#108430, @Stan wrote:

I've reproduced that assertion locally on macOS 10.14.6 in debug-mode. I've figured out the reason: it seems that OSAtomicAdd64 doesn't work as expected in debug mode, maybe address was misaligned.

Can it be fixed?

Sure.

I'm pretty sure we need to replace those with standard C++11 functions at some point anyways.

Stan added a comment.May 17 2020, 10:06 PM

Can one of you submit a patch, so @Teiresias can finish his patch eventually? :D

See D613 for some code that removes UniqueRange altogether.

Stan updated this revision to Diff 14148.Nov 22 2020, 4:50 PM
Stan edited the test plan for this revision. (Show Details)

Rebase, in order to check everything is okay so this can be abandoned.

Build failure - The Moirai have given mortals hearts that can endure.

builderr-debug-gcc6.txt
In file included from ../../../source/lib/allocators/tests/test_uniquerange.cpp:16:0:
/zpool0/gcc6/source/lib/allocators/tests/test_uniquerange.h:25:41: fatal error: lib/allocators/unique_range.h: No such file or directory
 #include "lib/allocators/unique_range.h"
                                         ^
compilation terminated.
make[1]: *** [obj/test_Debug/test_uniquerange.o] Error 1
make: *** [test] Error 2

Link to build: https://jenkins.wildfiregames.com/job/docker-differential/3737/display/redirect

Build failure - The Moirai have given mortals hearts that can endure.

Link to build: https://jenkins.wildfiregames.com/job/vs2015-differential/3180/display/redirect

Stan updated this revision to Diff 14154.Nov 22 2020, 5:32 PM

Actually rebase --'' the header was removed

Build failure - The Moirai have given mortals hearts that can endure.

builderr-debug-macos.txt
../../../source/simulation2/scripting/JSInterface_Simulation.cpp:154:4: warning: suggest braces around initialization of subobject [-Wmissing-braces]
                        CFixedVector2D(-halfSize.X, -halfSize.Y),
                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
../../../source/third_party/fmt/format.cpp:145:7: warning: '_POSIX_C_SOURCE' is not defined, evaluates to 0 [-Wundef]
#if ((_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && !_GNU_SOURCE) || (defined(__ANDROID__) && __ANDROID__)
      ^
../../../source/third_party/fmt/format.cpp:145:37: warning: '_XOPEN_SOURCE' is not defined, evaluates to 0 [-Wundef]
#if ((_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && !_GNU_SOURCE) || (defined(__ANDROID__) && __ANDROID__)
                                    ^
2 warnings generated.
ld: warning: direct access in function 'RLMgCallback(mg_event, mg_connection*, mg_request_info const*)' from file 'obj/pyrogenesis_Debug/main.o' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'RLMgCallback(mg_event, mg_connection*, mg_request_info const*)' from file 'obj/pyrogenesis_Debug/main.o' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'tinygettext::POParser::parse()' from file '../../../binaries/system/libtinygettext_dbg.a(po_parser.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'JSI_Network::StartNetworkJoin(ScriptInterface::CmptPrivate*, CStrW const&, CStr8 const&, unsigned short, bool, CStr8 const&)' from file '../../../binaries/system/libengine_dbg.a(JSInterface_Network.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CStr8::Find(CStr8 const&) const' from file '../../../binaries/system/libengine_dbg.a(CStr.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CStr8::ReverseFind(CStr8 const&) const' from file '../../../binaries/system/libengine_dbg.a(CStr.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CStr8::AfterLast(CStr8 const&, unsigned long) const' from file '../../../binaries/system/libengine_dbg.a(CStr.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CStr8::BeforeLast(CStr8 const&, unsigned long) const' from file '../../../binaries/system/libengine_dbg.a(CStr.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CStr8::AfterFirst(CStr8 const&, unsigned long) const' from file '../../../binaries/system/libengine_dbg.a(CStr.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CStr8::BeforeFirst(CStr8 const&, unsigned long) const' from file '../../../binaries/system/libengine_dbg.a(CStr.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CStr8::Remove(CStr8 const&)' from file '../../../binaries/system/libengine_dbg.a(CStr.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CStr8::Replace(CStr8 const&, CStr8 const&)' from file '../../../binaries/system/libengine_dbg.a(CStr.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CTemplateLoader::LoadTemplateFile(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)' from file '../../../binaries/system/libengine_dbg.a(TemplateLoader.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'SplitExts(char const*)' from file '../../../binaries/system/libengine_dbg.a(Util.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'SplitExts(char const*)' from file '../../../binaries/system/libengine_dbg.a(Util.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'COList::HandleAdditionalChildren(XMBElement const&, CXeromyces*)' from file '../../../binaries/system/libgui_dbg.a(COList.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
In file included from ../../../source/tools/atlas/AtlasObject/AtlasObjectJS.cpp:21:
In file included from ../../../source/tools/atlas/AtlasObject/JSONSpiritInclude.h:32:
../../../source/third_party/jsonspirit/json_spirit_writer_template.h:37:50: warning: unused typedef 'Char_type' [-Wunused-local-typedef]
        typedef typename String_type::value_type Char_type;
                                                 ^
1 warning generated.
../../../source/tools/atlas/AtlasUI/ActorEditor/ActorEditor.cpp:45:2: warning: 'GetCurrentProcess' is deprecated: first deprecated in macOS 10.9 [-Wdeprecated-declarations]
        GetCurrentProcess(&PSN);
        ^
/System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Processes.h:415:1: note: 'GetCurrentProcess' has been explicitly marked deprecated here
MacGetCurrentProcess(ProcessSerialNumber * PSN)               AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9;
^
/System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Processes.h:412:34: note: expanded from macro 'MacGetCurrentProcess'
    #define MacGetCurrentProcess GetCurrentProcess
                                 ^
1 warning generated.
In file included from ../../../source/tools/atlas/AtlasUI/ScenarioEditor/Sections/Map/Map.cpp:23:
In file included from ../../../source/tools/atlas/AtlasObject/JSONSpiritInclude.h:32:
In file included from ../../../source/third_party/jsonspirit/json_spirit_writer_template.h:13:
../../../source/third_party/jsonspirit/json_spirit_value.h:586:24: warning: 'static' function 'value_type_to_string' declared in header file should be declared 'static inline' [-Wunneeded-internal-declaration]
    static std::string value_type_to_string( const Value_type vtype )
                       ^
In file included from ../../../source/tools/atlas/AtlasUI/ScenarioEditor/Sections/Map/Map.cpp:23:
In file included from ../../../source/tools/atlas/AtlasObject/JSONSpiritInclude.h:32:
../../../source/third_party/jsonspirit/json_spirit_writer_template.h:37:50: warning: unused typedef 'Char_type' [-Wunused-local-typedef]
        typedef typename String_type::value_type Char_type;
                                                 ^
2 warnings generated.
ld: warning: direct access in function 'wxNavigationEnabled<wxWindow>::wxNavigationEnabled()' from file 'obj/AtlasUI_Debug/ActorEditor.o' to global weak symbol 'wxNavigationEnabled<wxWindow>::OnChildFocus(wxChildFocusEvent&)' from file '/Users/wfg/Jenkins/workspace/macos-differential/libraries/osx/wxwidgets/lib/libwx_osx_cocoau_core-3.0.a(corelib_busyinfo.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'wxNavigationEnabled<wxWindow>::wxNavigationEnabled()' from file 'obj/AtlasUI_Debug/ActorEditor.o' to global weak symbol 'wxNavigationEnabled<wxWindow>::OnFocus(wxFocusEvent&)' from file '/Users/wfg/Jenkins/workspace/macos-differential/libraries/osx/wxwidgets/lib/libwx_osx_cocoau_core-3.0.a(corelib_busyinfo.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'wxNavigationEnabled<wxWindow>::wxNavigationEnabled()' from file 'obj/AtlasUI_Debug/ActorEditor.o' to global weak symbol 'wxNavigationEnabled<wxWindow>::OnNavigationKey(wxNavigationKeyEvent&)' from file '/Users/wfg/Jenkins/workspace/macos-differential/libraries/osx/wxwidgets/lib/libwx_osx_cocoau_core-3.0.a(corelib_busyinfo.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'wxStringToStringHashMap_wxImplementation_HashTable::clear()' from file 'obj/AtlasUI_Debug/ActorEditor.o' to global weak symbol 'wxStringToStringHashMap_wxImplementation_HashTable::DeleteNode(_wxHashTable_NodeBase*)' from file '/Users/wfg/Jenkins/workspace/macos-differential/libraries/osx/wxwidgets/lib/libwx_baseu-3.0.a(baselib_appbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'wxStringToNumHashMap_wxImplementation_HashTable::clear()' from file 'obj/AtlasUI_Debug/ActorEditor.o' to global weak symbol 'wxStringToNumHashMap_wxImplementation_HashTable::DeleteNode(_wxHashTable_NodeBase*)' from file '/Users/wfg/Jenkins/workspace/macos-differential/libraries/osx/wxwidgets/lib/libwx_baseu-3.0.a(baselib_appbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'wxNavigationEnabled<wxListCtrlBase>::wxNavigationEnabled()' from file 'obj/AtlasUI_Debug/EditableListCtrl.o' to global weak symbol 'wxNavigationEnabled<wxListCtrlBase>::OnChildFocus(wxChildFocusEvent&)' from file '/Users/wfg/Jenkins/workspace/macos-differential/libraries/osx/wxwidgets/lib/libwx_osx_cocoau_core-3.0.a(corelib_listctrlcmn.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'wxNavigationEnabled<wxListCtrlBase>::wxNavigationEnabled()' from file 'obj/AtlasUI_Debug/EditableListCtrl.o' to global weak symbol 'wxNavigationEnabled<wxListCtrlBase>::OnFocus(wxFocusEvent&)' from file '/Users/wfg/Jenkins/workspace/macos-differential/libraries/osx/wxwidgets/lib/libwx_osx_cocoau_core-3.0.a(corelib_listctrlcmn.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'wxNavigationEnabled<wxListCtrlBase>::wxNavigationEnabled()' from file 'obj/AtlasUI_Debug/EditableListCtrl.o' to global weak symbol 'wxNavigationEnabled<wxListCtrlBase>::OnNavigationKey(wxNavigationKeyEvent&)' from file '/Users/wfg/Jenkins/workspace/macos-differential/libraries/osx/wxwidgets/lib/libwx_osx_cocoau_core-3.0.a(corelib_listctrlcmn.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'wxNavigationEnabled<wxCompositeWindow<wxSpinCtrlBase> >::wxNavigationEnabled()' from file 'obj/AtlasUI_Debug/Player.o' to global weak symbol 'wxNavigationEnabled<wxCompositeWindow<wxSpinCtrlBase> >::OnChildFocus(wxChildFocusEvent&)' from file '/Users/wfg/Jenkins/workspace/macos-differential/libraries/osx/wxwidgets/lib/libwx_osx_cocoau_core-3.0.a(corelib_spinctlg.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'wxNavigationEnabled<wxCompositeWindow<wxSpinCtrlBase> >::wxNavigationEnabled()' from file 'obj/AtlasUI_Debug/Player.o' to global weak symbol 'wxNavigationEnabled<wxCompositeWindow<wxSpinCtrlBase> >::OnFocus(wxFocusEvent&)' from file '/Users/wfg/Jenkins/workspace/macos-differential/libraries/osx/wxwidgets/lib/libwx_osx_cocoau_core-3.0.a(corelib_spinctlg.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'wxNavigationEnabled<wxCompositeWindow<wxSpinCtrlBase> >::wxNavigationEnabled()' from file 'obj/AtlasUI_Debug/Player.o' to global weak symbol 'wxNavigationEnabled<wxCompositeWindow<wxSpinCtrlBase> >::OnNavigationKey(wxNavigationKeyEvent&)' from file '/Users/wfg/Jenkins/workspace/macos-differential/libraries/osx/wxwidgets/lib/libwx_osx_cocoau_core-3.0.a(corelib_spinctlg.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'wxCompositeWindow<wxSpinCtrlBase>::wxCompositeWindow()' from file 'obj/AtlasUI_Debug/Player.o' to global weak symbol 'wxCompositeWindow<wxSpinCtrlBase>::OnWindowCreate(wxWindowCreateEvent&)' from file '/Users/wfg/Jenkins/workspace/macos-differential/libraries/osx/wxwidgets/lib/libwx_osx_cocoau_core-3.0.a(corelib_spinctlg.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'wxNavigationEnabled<wxBookCtrlBase>::wxNavigationEnabled()' from file 'obj/AtlasUI_Debug/Player.o' to global weak symbol 'wxNavigationEnabled<wxBookCtrlBase>::OnChildFocus(wxChildFocusEvent&)' from file '/Users/wfg/Jenkins/workspace/macos-differential/libraries/osx/wxwidgets/lib/libwx_osx_cocoau_core-3.0.a(corelib_choicbkg.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'wxNavigationEnabled<wxBookCtrlBase>::wxNavigationEnabled()' from file 'obj/AtlasUI_Debug/Player.o' to global weak symbol 'wxNavigationEnabled<wxBookCtrlBase>::OnFocus(wxFocusEvent&)' from file '/Users/wfg/Jenkins/workspace/macos-differential/libraries/osx/wxwidgets/lib/libwx_osx_cocoau_core-3.0.a(corelib_choicbkg.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'wxNavigationEnabled<wxBookCtrlBase>::wxNavigationEnabled()' from file 'obj/AtlasUI_Debug/Player.o' to global weak symbol 'wxNavigationEnabled<wxBookCtrlBase>::OnNavigationKey(wxNavigationKeyEvent&)' from file '/Users/wfg/Jenkins/workspace/macos-differential/libraries/osx/wxwidgets/lib/libwx_osx_cocoau_core-3.0.a(corelib_choicbkg.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
In file included from ../../../source/graphics/tests/test_Camera.cpp:17:
/Users/wfg/Jenkins/workspace/macos-differential/source/graphics/tests/test_Camera.h:168:4: warning: suggest braces around initialization of subobject [-Wmissing-braces]
                        CVector3D(-101.0f, -101.0f, 101.0f),
                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
In file included from ../../../source/lib/allocators/tests/test_uniquerange.cpp:16:
/Users/wfg/Jenkins/workspace/macos-differential/source/lib/allocators/tests/test_uniquerange.h:25:10: fatal error: 'lib/allocators/unique_range.h' file not found
#include "lib/allocators/unique_range.h"
         ^
1 error generated.
make[1]: *** [obj/test_Debug/test_uniquerange.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [test] Error 2

Link to build: https://jenkins.wildfiregames.com/job/macos-differential/2080/display/redirect

Successful build - Chance fights ever on the side of the prudent.

builderr-debug-macos.txt
ld: warning: direct access in function 'RLMgCallback(mg_event, mg_connection*, mg_request_info const*)' from file 'obj/pyrogenesis_Debug/main.o' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'RLMgCallback(mg_event, mg_connection*, mg_request_info const*)' from file 'obj/pyrogenesis_Debug/main.o' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'tinygettext::POParser::parse()' from file '../../../binaries/system/libtinygettext_dbg.a(po_parser.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'JSI_Network::StartNetworkJoin(ScriptInterface::CmptPrivate*, CStrW const&, CStr8 const&, unsigned short, bool, CStr8 const&)' from file '../../../binaries/system/libengine_dbg.a(JSInterface_Network.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CStr8::Find(CStr8 const&) const' from file '../../../binaries/system/libengine_dbg.a(CStr.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CStr8::ReverseFind(CStr8 const&) const' from file '../../../binaries/system/libengine_dbg.a(CStr.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CStr8::AfterLast(CStr8 const&, unsigned long) const' from file '../../../binaries/system/libengine_dbg.a(CStr.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CStr8::BeforeLast(CStr8 const&, unsigned long) const' from file '../../../binaries/system/libengine_dbg.a(CStr.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CStr8::AfterFirst(CStr8 const&, unsigned long) const' from file '../../../binaries/system/libengine_dbg.a(CStr.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CStr8::BeforeFirst(CStr8 const&, unsigned long) const' from file '../../../binaries/system/libengine_dbg.a(CStr.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CStr8::Remove(CStr8 const&)' from file '../../../binaries/system/libengine_dbg.a(CStr.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CStr8::Replace(CStr8 const&, CStr8 const&)' from file '../../../binaries/system/libengine_dbg.a(CStr.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CTemplateLoader::LoadTemplateFile(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)' from file '../../../binaries/system/libengine_dbg.a(TemplateLoader.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'SplitExts(char const*)' from file '../../../binaries/system/libengine_dbg.a(Util.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'SplitExts(char const*)' from file '../../../binaries/system/libengine_dbg.a(Util.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'COList::HandleAdditionalChildren(XMBElement const&, CXeromyces*)' from file '../../../binaries/system/libgui_dbg.a(COList.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'TestCLogger::ParseOutput()' from file 'obj/test_Debug/test_CLogger.o' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CxxTest::XmlFormatter::enterSuite(CxxTest::SuiteDescription const&)' from file 'obj/test_Debug/test_root.o' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'ts_str_contains(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)' from file 'obj/test_Debug/test_setup.o' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'tinygettext::POParser::parse()' from file '../../../binaries/system/libtinygettext_dbg.a(po_parser.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'JSI_Network::StartNetworkJoin(ScriptInterface::CmptPrivate*, CStrW const&, CStr8 const&, unsigned short, bool, CStr8 const&)' from file '../../../binaries/system/libengine_dbg.a(JSInterface_Network.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CStr8::Find(CStr8 const&) const' from file '../../../binaries/system/libengine_dbg.a(CStr.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CStr8::ReverseFind(CStr8 const&) const' from file '../../../binaries/system/libengine_dbg.a(CStr.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CStr8::AfterLast(CStr8 const&, unsigned long) const' from file '../../../binaries/system/libengine_dbg.a(CStr.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CStr8::BeforeLast(CStr8 const&, unsigned long) const' from file '../../../binaries/system/libengine_dbg.a(CStr.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CStr8::AfterFirst(CStr8 const&, unsigned long) const' from file '../../../binaries/system/libengine_dbg.a(CStr.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CStr8::BeforeFirst(CStr8 const&, unsigned long) const' from file '../../../binaries/system/libengine_dbg.a(CStr.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CStr8::Remove(CStr8 const&)' from file '../../../binaries/system/libengine_dbg.a(CStr.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CStr8::Replace(CStr8 const&, CStr8 const&)' from file '../../../binaries/system/libengine_dbg.a(CStr.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'CTemplateLoader::LoadTemplateFile(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)' from file '../../../binaries/system/libengine_dbg.a(TemplateLoader.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'SplitExts(char const*)' from file '../../../binaries/system/libengine_dbg.a(Util.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'SplitExts(char const*)' from file '../../../binaries/system/libengine_dbg.a(Util.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'COList::HandleAdditionalChildren(XMBElement const&, CXeromyces*)' from file '../../../binaries/system/libgui_dbg.a(COList.o)' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file '../../../libraries/osx/gloox/lib/libgloox.a(clientbase.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
builderr-release-macos.txt
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../../../binaries/system/liblowlevel.a(dbghelp.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../../../binaries/system/liblowlevel.a(file_stats.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../../../binaries/system/liblowlevel.a(vfs_path.o) has no symbols

Link to build: https://jenkins.wildfiregames.com/job/macos-differential/2084/display/redirect

Stan abandoned this revision.Nov 22 2020, 6:57 PM

Fixed by D613 Thanks for the test case @Teiresias