OS X: g ++ скомпилированная программа получает ошибку шины, а clang — нет

Я работаю на Осколок Кевина Бисона.

Программа хорошо работает с clang-omp++ smallpt.cpp,

Но это не идет хорошо под g++ -fopenmp smallpt.cpp:

  1. Двойное предупреждение (скомпилировано успешно):

/var/folders/j_/5w2s7bwx4zl9r_m976qpmpcc0000gn/T//ccEDNQ2r.s:612:11:
примечание: измените имя раздела на «__text» .section __TEXT, __ textcoal_nt, coalesced, pure_instructions
^ ~~~~~~~~~~~~~

/var/folders/j_/5w2s7bwx4zl9r_m976qpmpcc0000gn/T//ccEDNQ2r.s:1571:11:
предупреждение: раздел «__textcoal_nt» устарел

  1. bus error закрывает программу при каждом запуске:

Рендеринг (4 суперсэмпла) 0.39% [1] 21811 ошибка шины ./smallpt

Когда я комментирую основную строку (строка 279):

SingleRay = SingleRay + radiance(SRay(Camera.m_Origin+RandDir * Scale, RandDir.normalize()), 0) * (1.0/SampleNum);

Программа заканчивается без bus error (и произвести темное изображение).

Я не вижу незаконного доступа к памяти, что с ним не так и как я могу это исправить (в g++)?


Я заменяю erand48() к самоопределению. (может быть не имеет значения)

$ g++ -v
Using built-in specs.
COLLECT_GCC=g++-6
COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc/6.2.0/libexec/gcc/x86_64-apple-darwin16.0.0/6.2.0/lto-wrapper
Target: x86_64-apple-darwin16.0.0
Configured with: ../configure --build=x86_64-apple-darwin16.0.0 --prefix=/usr/local/Cellar/gcc/6.2.0 --libdir=/usr/local/Cellar/gcc/6.2.0/lib/gcc/6 --enable-languages=c,c++,objc,obj-c++,fortran --program-suffix=-6 --with-gmp=/usr/local/opt/gmp --with-mpfr=/usr/local/opt/mpfr --with-mpc=/usr/local/opt/libmpc --with-isl=/usr/local/opt/isl --with-system-zlib --enable-libstdcxx-time=yes --enable-stage1-checking --enable-checking=release --enable-lto --with-build-config=bootstrap-debug --disable-werror --with-pkgversion='Homebrew gcc 6.2.0 --without-multilib' --with-bugurl=https://github.com/Homebrew/homebrew/issues --enable-plugin --disable-nls --disable-multilib
Thread model: posix
gcc version 6.2.0 (Homebrew gcc 6.2.0 --without-multilib)

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …