问题标签 [sigfpe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
46 浏览

compiler-construction - 当我划分 1/1 x86_64bit 时获得 SIGFPE

我正在尝试构建从 Scheme 语言到 X86_64bit 的编译器,同时使用 gdb 进行调试,以查看我的程序在哪里崩溃,这是发生了什么:(我显示了相关的寄存器,你可以看到 rax=1, r15= 1,使我的程序崩溃的命令是 div r15)

我搜索了这个问题,但我只能看到除以零时给出 SIGFPE(显然不是这里的情况)

0 投票
1 回答
416 浏览

fortran - fortran 错误回溯导致 where 循环

我正在处理大型 fortran 代码,并且在使用快速选项进行编译之前(为了在大型数据库上执行测试),我通常使用“警告”选项进行编译,以检测和回溯所有问题。

因此,通过gfortran -fbacktrace -ffpe-trap=invalid,zero,overflow,underflow -Wall -fcheck=all -ftrapv -g2编译,我收到以下错误:

并且代码 f_mod.f90:132 的部分包含一个 where 循环:

但我在这里没有看到任何错误。所有其他位置都是通往这部分的子程序的调用。当然,由于这是一个 SIGFPE 错误,所以我在编译时必须在执行时遇到问题gfortran -g1。(我在 linux 上使用 gfortran 6.4.0)

此外,此错误会随着代码完全不同部分的修改而出现和消失。因此,问题来自这个 where 循环?或者来自其他地方并且回溯是错误的?如果是这种情况,我怎么能找到这个错误?

编辑:

因为,我无法在一个最小的例子中重现这个错误(他们正在工作),我认为问题出在其他地方。但是如何在大代码中找到问题呢?

0 投票
0 回答
870 浏览

android - 将 OpenMP 与 Android NDK 一起使用

在这个项目中,我有一个预编译库,它是使用“-fopenmp”标志编译的。构建整个项目是可行的,但是一旦使用 OpenMP,我就会收到以下错误:

A/libc:致命信号 8 (SIGFPE),代码 1,tid 32702 (ndroidapp) 中的故障地址 0x8a8fe7cd

只要通过 JNI 使用 OpenMP,就会发生这种情况。不幸的是,我找不到太多关于该错误的信息。如果我在没有 OpenMP 的情况下编译它,整个项目都可以正常工作。

这是 Gradle 的一部分:

这里有几行我用来编译库的makefile:

我能做些什么来解决这个问题?错误可能来自哪里?在这种情况下甚至可以使用 OpenMP 吗?

0 投票
0 回答
406 浏览

fortran - Fortran中加速度计算子程序模块中的浮点协处理器故障

对于我正在制作的分子动力学程序,我的两个模块遇到了一些问题。两者都发生在模块中的力计算中,我尝试更改所有值的精度。其中一个模块打印在下面。我在第 14 行得到错误,第一次力计算,我假设其余的也会有问题。有什么建议么?

0 投票
2 回答
33 浏览

c - 由于 SIGFPE、算术异常,除法运算导致执行错误

我为 MCU 编写了一个算法,该算法在对除法结果进行更多计算之前执行两个并行电阻的表达式。调试时这些值没有意义;它们太大了,float var 没有更新它们的初始值。

所以我去了https://www.onlinegdb.com/并在那里尝试了我的算法的一部分。执行代码时,它会在以下行启动一个非正常退出的算术异常:

首先我使用浮点数,但我认为异常可能是由溢出引起的,因此我使用 double 将变量存储做得更大,但出现了相同的异常。然后我尝试做同样的事情,但说:

并且执行成功了!

所以,我看到'1'运营商是原因。但我不明白为什么以及如何修复它(不使用math.h)。

代码是这样的:

我期待得到(调试):

  • a = 1/(1/10 + 1/100) = 9.09

我认为这不是一个适合浮点数或双变量的大值。而不是这个,我得到了例外。

如何使用浮点数/双精度值和 int 值以避免 1/(较小的值)时出现异常?

0 投票
0 回答
50 浏览

c - -2147483648 % -1 导致浮点异常

例如:

(程序将这些值作为命令行参数,因为当硬编码时,我认为在编译时-2147483648 % -1会被替换)0

-2147483648分别使用和-1作为第一个和第二个参数运行这个简单的程序会引发一个 SIGFPE。为什么会这样?还有其他类似的特殊情况吗?我怎样才能避免它?

谢谢!

0 投票
0 回答
57 浏览

c - 为什么当 INT_MIN 除以 -1 时使用 SIGFPE

这是一个简单的代码,如下所示:

编译后运行代码时,会出现一个 SIGFPE:

我的系统信息:
内核:4.19.0-5-amd64
CPU:Intel(R) Core(TM) i7-5600U CPU @ 2.60GHz
gcc 版本 8.3.0

我打算看到除法的签名 int 溢出。但是我对信号 FPE 感到非常困惑,因为没有计算浮点数。

0 投票
0 回答
128 浏览

c - 不发生被零除时如何调试 sigfpe

我正在尝试O0 -ggdb3sw64上编译 ruby​​ ---- 一个类似于alpha的拱门,但遇到了一个奇怪的 SIGFPE 错误:

IIUC,来自 gdb 的回溯告诉我第 1 帧distance_multiply是 sigfpe 的根本原因。

下面是定义distance_multiply

可以看到,如果 m 为零,则直接返回,所以devided-by-zerosigfpe 永远不会发生。我还尝试在以下内容dm帮助下转储值printf

输出:

从日志中我们可以看到,最后的日志总是:

d = 1,m = 1,ONIG_INFINITE_DISTANCE = -1

并且d < ONIG_INFINITE_DISTANCE / m部分未打印,因为它已经被困在 sigfpe 中。奇怪的是,一些以前的日志也打印出来了d = 1, m = 1, ONIG_INFINITE_DISTANCE = -1,这意味着这些情况下不会出现whend = 1和sigfpe 。m = 1

可能会发生什么?我已经没有想法了。在这里可以拆卸帮助吗?

编辑:

抱歉缺少宏定义:

0 投票
0 回答
85 浏览

c - SIGFPE 尝试将端口连接到会议

随叫随到pjmedia_conf_add_port_fatal error: unexpected signal during runtime execution [signal SIGFPE: floating-point exception code=0x1 addr=0x7f466bd37f32 pc=0x7f466bd37f32]

当我尝试将采样率设置为高于 16kHz 和/或超过 1 个通道时,就会发生这种情况。

我需要使用具有 48kHz 采样率和 2 个通道的回调从呼叫中发送/接收 PCM 数据。

我究竟做错了什么?GDB 显示:

0 投票
1 回答
224 浏览

unix - 为什么 SIGFPE 用于整数算术异常?

为什么要SIGFPE用于整数算术异常,例如除以零,而不是为整数算术异常创建单独的信号或首先为算术异常命名信号?