Программа зависает на __gmpn_divrem_2C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Программа зависает на __gmpn_divrem_2

Сообщение Anonymous »

Я написал многопоточную программу, в которой каждый поток выполняет вычисления над разными данными. Расчеты реализованы с использованием библиотеки gmpxx. Я заметил, что в какой-то момент один или несколько потоков могут застрять в функции __gmpn_divrem_2 (проверял с помощью gdb, возможно, это бесконечный цикл). Можете ли вы подсказать, что с этим делать? Может, стоит как-то проверить аргументы перед делением? Я использую последнюю версию библиотеки 6.3.0. К сожалению, я не могу привести пример чисел, с которыми это происходит, так как числа разные и меняются очень быстро.
GDB backtrace:
(gdb) bt
#0 0x00007b376e9309dc in __gmpn_divrem_2 () from /lib/x86_64-linux-gnu/libgmp.so.10
#1 0x00007b376ca8d4f0 in ?? ()
#2 0x00007b376ca8d4e0 in ?? ()
#3 0x0000000000000005 in ?? ()
#4 0x0000000000000000 in ?? ()

Пример формулы:
// some code...
mpz_class gval0 = a*c;
mpz_class gval1 = b*fee2*fee1;
mpz_class bottom = gval1 + num0*c*fee1;
if (bottom

Подробнее здесь: https://stackoverflow.com/questions/798 ... n-divrem-2
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»