A SIGBUS that always happens in the same place is usually an alignment
problem. Unless you're manipulating pointers manually, there may be a
compiler bug. I would look at the specific instruction that fails. If it's a
load or store instruction, check that the memory address is aligned properly
for a double. The CPU and kernel can automatically correct that in many cases
(if that's turned on) but not all. Floating point instructions often have
more strict requirements.
I know I am talking in a vacuum here with no real knowledge of the code currently being discussed, and I can only speak from my personal point of reference. But for myself, there are numerous (countless?) times I have run off chasing a compiler "bug" or an optimizer "bug" or a driver "bug" or "flaky" hardware only to ultimately discover I had done something obscurely stupid that was really hard to spot (or hard for me to spot with my head all wrapped up in the code.) The number of times I've actually found a compiler bug or an optimizer bug is zero. I did find an emacs bug once, but RMS yelled at me for reporting it incorrectly and I gave up on that. So I can only speak for myself, but when something absolutely and completely makes no sense with my code, I know my own time is better spent looking for my own obscure mistake versus chasing a possible compiler bug or operating system bug. The hard part is knowing which path to chase down to look for a problem -- and compilers aren't perfect either, but they usually have been much better tested than my newly written or newly modified code.