Crash at application start/initialization: how to figure out what is causing it?

Is juce::Identifier crashing the application before the C++ program initialization even reaches the constructors? I.e. is the C++ initialization doing something weird in the problem I describe below?


I need a little help in figuring out what could be going wrong when launching my macOS app on another user’s computer.

The application crashes before it can show anything on screen.
The user is running macOS 10.12.6.

Below is the macOS crash report’s beginning which to me looks like it’s trying to initialize the application before it can be run. Am I correct?

Is there some well known issue which causes this kind of behavior?

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.    	0x000000010e38124a juce::StringPool::getGlobalPool() + 74
1   com    	0x000000010e61e7b5 _GLOBAL__sub_I_View_Transport_Control.cpp + 1445
2   dyld                          	0x0000000113bc1a1b ImageLoaderMachO::doModInitFunctions(ImageLoader::LinkContext const&) + 385
3   dyld                          	0x0000000113bc1c1e ImageLoaderMachO::doInitialization(ImageLoader::LinkContext const&) + 40
4   dyld                          	0x0000000113bbd4aa ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, char const*, ImageLoader::InitializerTimingList&, ImageLoader::UninitedUpwards&) + 338
5   dyld                          	0x0000000113bbc524 ImageLoader::processInitializers(ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&, ImageLoader::UninitedUpwards&) + 138
6   dyld                          	0x0000000113bbc5b9 ImageLoader::runInitializers(ImageLoader::LinkContext const&, ImageLoader::InitializerTimingList&) + 75
7   dyld                          	0x0000000113bae47a dyld::initializeMainExecutable() + 195
8   dyld                          	0x0000000113bb28c6 dyld::_main(macho_header const*, unsigned long, int, char const**, char const**, char const**, unsigned long*) + 3966
9   dyld                          	0x0000000113bad249 dyldbootstrap::start(macho_header const*, int, char const**, long, macho_header const*, unsigned long*) + 470
10  dyld                          	0x0000000113bad036 _dyld_start + 54


Exception Type:        EXC_BAD_INSTRUCTION (SIGILL)
Exception Codes:       0x0000000000000001, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Illegal instruction: 4
Termination Reason:    Namespace SIGNAL, Code 0x4
Terminating Process:   exc handler [0]

The only thing I found in View_Transport_Control.cpp that seems to call juce::StringPool::getGlobalPool() in any way are the following lines:

namespace TransportIDs
{
    juce::Identifier type("TransportNodeRoot");
    juce::Identifier global_bpm("TransportNodeGlobalBPM");
    juce::Identifier clip_launch_quantized_beat("TransportNodeClipLaunchQuantizedBeat");
};

juce::Identifier constructor calls that. Am I doing something wrong in those lines for this crash to happen?

This thread suggests it could be static constexpr inside the classes, so I’ll try removing them and see if the application starts working on the users computer.

Changing the constexpr didn’t fix the crash so it’s something different then.