问题标签 [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.
c++ - 解码运行时错误 (SIGFPE)
这是 spoj.com ( http://www.spoj.com/problems/PRIC/ ) 上的一个问题。我们必须检查序列的数字是否:ai=( a(i-1)+1234567890 ) mod 2^ 31 是否为素数,第一个数字是 1。下面给出了我的代码(请尽量忽略笨拙。)基于 eratosthenes 的筛子。
问题:我们必须为 i=33,333,333 的序列打印“素数(1)或非(0)”,我的代码对于 i(代码中的 c3)值高达 8000 左右以及之后(例如 c3> 19000) 它开始给出 SIGFPE 错误。现在我用谷歌搜索了这个错误,它与除法/模减 0 有关。但是为什么该代码适用于高达 9000 的 c3 值但不能超过此值?
linux - 为什么不会出现浮点异常?
我正在学习浮点数的算术。我写了以下代码。但不会发生浮点异常。我的环境是 Cent OS 6.4 (x86_64)。
请教我这个理由。
c++ - Why does this gives a runtime floating point error?
I am doing an assignment for school which introduced hashmaps, and so I am creating a templated class for a hashmap that uses the std::hash
function. The problem that I am having comes in my insert
function, which is shown below:
My error occurs at the line: int bucket = intKey % this->size();
.
I don't quite understand why this would give a floating point error since I am doing my work entirely in integers. With the key "banana" and the value 3, the hashed int is 2068534322. In the case where this->size
is 5, the modulo should be evaluated as 2.
So, why exactly am I getting a floating point error?
EDIT 1: I also tried this->size()
replaced with a hard-coded 5 (which is what this->size
should evaluate to), so the this->size
isn't having a problem evaluating with a 0.
assembly - fpu ia-32,浮点异常
我正在学习 ia-32 并且在 32 位 Ubuntu 上一切正常,但是我切换到 64 位并开始使用标志 -m32 现在我无法在任何地方使用 DIV,无论寄存器的内容如何,它总是给我浮点异常...而且我确定我不会被零除。我正在使用 gcc 和 gdb。
这是最接近我的问题的问题:FPU IA-32 SIGFPE, Arithmetic exception
我试图将指令 fldcw 与 0x220 放在一起,但没有区别。
我的源代码:
GDB 日志:
c - 什么是“FPE_FLTSUB:下标超出范围”信号?
在sys/signal.h
中,a 的可能代码之一SIGFPE
是FPE_FLTSUB
注释只是说“下标超出范围 -NOTIMP”。我在 OS X 10.9 上,但它似乎也在glibc 中。
它不是标准的 IEEE 例外之一,那么它是什么,何时提出?
c - gdb 共享库没有调试信息
我尝试调试一个程序以查找 beaglebone black debian 上的浮点异常位置我安装了 libc6 和 libc6-dbg 但仍然
看起来像这样。
我的调试目录是:搜索单独调试符号的目录是“/usr/lib/debug”
浮点异常看起来像这样
程序收到信号 SIGFPE,算术异常。0xb6de9a98 in raise () from /lib/arm-linux-gnueabi/libc.so.6
error-handling - 在 Fortran 运行时禁用 FPE 处理程序
我有一个用 Fortran 编写的库,它使用 Intel 的 MKL(静态链接)。我正在使用 ifort 进行编译和链接。
当我使用 -fpe0 选项将我的库(动态)与一些其他代码链接时,我在 MKL 中得到浮点异常,这似乎是英特尔已知的事情,无需担心。我认为这是由于一些投机性的处决。
但是,当其他人使用我的库时,他们可能会尝试使用 -fpe0 将他们的代码链接到我的库,这可能会导致麻烦。所以我想知道:有没有办法在运行时关闭 FPE 处理程序,当进入我的库并在返回时将其恢复到原始状态?
谢谢!
c - 带有 gcc 和无符号整数的 SIGFPE
我从用不同版本编译的可执行文件中得到了这种奇怪的行为gcc
,都发出SIGFPE
信号,最好的部分是我的代码中没有任何类型的浮点;如果有人能对此有所了解......我真的不知道从哪里开始调试这个,这太奇怪了,这个错误是由我从4.9
to的所有 gcc 安装触发的6.0
。
这是重现问题的片段
这段代码的目的是重现问题,我知道它的逻辑并没有太大意义(取模部分)但clang
通过了测试,没有版本gcc
相同,我想知道为什么如果这种行为有技术解释。
assembly - 如何从汇编程序中的信号处理程序返回主线代码?
我一直在为 Linux 编写一个 NASM 程序。我希望能够从我为 SIGFPE 建立的信号处理程序中返回到正常的代码路径。精简后的示例代码是:
幻数是为了代码的紧凑性。
在 idiv 指令之前,esp 是0xffffcc00
. 在信号处理程序的入口处, esp 是0xffffc52c
. 相当多的东西已经放在堆栈上!有大量关于 __NR_sigreturn 的信息。我没有运气尝试使用它。处理程序中的一条ret
指令只是让我回到 idiv 指令,这次没有处理程序。
关于我可以在.handle
标签上做什么以安全返回主线的任何想法?
(我知道 sigaction 是可用的,但我想了解在这种情况下发生了什么。)
exception - 奇怪的浮点异常
在下面的代码片段中,我在运行时遇到了一个浮点异常。我相信异常发生在除以 r 的行。当我评论该行时,我没有收到任何错误。
同样非常奇怪的是,当我使用“-g”标志在 gcc 中编译(尝试调试)或者如果我在“if 语句”之后立即插入一些“cout 语句”,那么我在运行时不会得到任何浮点异常.
我已经盯着这段代码的屏幕看了好几个小时,也许我犯了一些愚蠢的错误..请帮忙!
更新:所以我能够通过将 1e-15 添加到有争议的行上的分母来解决问题..
我仍然不确定为什么 if 条件为 true .. for if(fabs(r)>1e-7) when r =0;