On 13/3/2024 20:52, Riccardo Mottola wrote:
I found a minor patch by Firefox to solve this namespace collision. So for whatever reason Apple's did differently, it now compiles on all compilers.

However clang9 generates a crashing executable. I tried on both 10.11 and 10.13.

- Apple clang: works fine
- MacPorts clang 7: compiles & works
- MacPorts clang 9 : compiles but fails

anybody has seen this behaviour in other software, perhaps smaller and easier to test than ArcticFox?

Yes, any number of programs have had bugs that only became apparent when building with a newer compiler. But that's a very broad category, so without knowing the nature of the crash you're seeing, it's impossible to say what else might have had a similar problem.

Bugs in clang are not unknown, but far more common is programs relying on certain behaviour for operations that have undefined behaviour according to the language standard. Or sometimes the layout of memory just shifts slightly, causing a previously benign buffer overflow to do damage. Sometimes a newer compiler will also default to a newer version of the language, so if that's the cause of the differing behaviour, you can use -std to change it back.

Otherwise, you have to do the hard work of debugging: Look at the crash report to see where and how the code is crashing, pay attention to compiler warnings, and systematically eliminate possibilities of what could be going wrong. Building with clang's sanitizers may be helpful, particularly -fsanitize=address and -fsanitize=undefined, though in a code base this size I wouldn't be surprised if they also detected hundreds of other potential issues.

- Josh

Reply via email to