问题标签 [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 投票
1 回答
1337 浏览

c++ - C++ std::unordered_set SIGFPE 异常

我写了一个程序,我很高兴我会运行它几十次——我什至写下了多次执行的结果——现在它不起作用。

你可能会认为我这么说是高高在上,或者我可能只是改变了一些台词,但我真的不记得对程序做过任何改变。

问题是SIGFPE,根据输入,在程序的不同执行中出现。尽管std::unordered_set<Point<T> *>.

这是我进行此类插入的代码片段:

这是 valgrind 输出的一个重要部分:

这里的问题是:由于我的程序中有可能导致除以零的计算——尽管它们与此过程没有直接关系——是否有可能是错误被插入所掩盖?或者我应该在插入指针时做一些额外的处理std::unordered_set<T>

我正在编译程序x86_64 GNU/Linux,我正在使用g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3.

0 投票
4 回答
9964 浏览

c++ - C/C++ 处理程序 SIGFPE 是什么?

好吧,我搜索了有关 SIGFPE 的文章,然后我写了一些测试,但它的行为很奇怪。然后我不得不把它贴在这里寻求帮助。GCC/G++ 或 ISO C++ 是否明确定义了如果除以零会发生什么?

1)我搜索了文章: 除以零不会抛出 SIGFPE 它与输出相同的是 inf

2)如果我将其重写如下:

然后 signal_handler 不会发生。但是如果我取消注释该行

然后 signal_handler 继续调用。

有人可以解释一下吗?

0 投票
2 回答
1838 浏览

c - 具有 SIGFPE 异常的程序在 gdb 下的行为不同

我有一个简单的 C 程序,当使用 gdb 调试时,它的行为不同。程序是这样的:

当自己运行时,我得到了这个非常奇怪的结果:

没有错误!这并不是说信号没有被触发,它是:

在 GDB 中,情况会有所不同:

要求 GDB 不要停止没有区别

这是怎么回事?!一方面,为什么 SIGFPE 不杀死程序?第二件事,为什么 GDB 的行为不同?

更新。一种想法是子进程正在继承父进程的信号掩码。 然而,从这个成绩单中可以看出,情况显然不是这样: 这个分析是不正确的,见下文。

更新 2。我的一个朋友指出,陷阱只报告由 shell 本身设置的信号,而不是任何父进程设置的信号。所以我们追踪了所有父母的忽略掩码,你瞧,rxvt-unicode 屏蔽了 SIGFPE。一位朋友证实,当他使用 rxvt-unicode 运行可执行文件时,他可以重现。

0 投票
2 回答
3053 浏览

c - 使用 SIGFPE 进行非零除法的核心转储

我有一个 qemu-kvm 进程可疑地使用 SIGFPE 转储核心:

哪里elapsed_timedouble(下面的 gdb 输出中的值)并且NANOSECONDS_PER_SECOND是一个宏:

我想不出应该如何导致 SIGFPE 的原因。有什么线索吗?

场景:我使用 RHEL-6.5 作为主机并尝试启动 Windows 来宾。它可以使用相同的命令稳定地重现。

完整的回溯:

那么,这divsd条指令有什么问题呢?关于如何调试它的任何建议?

自己回答:这是一个内核错误,它意外地将 mxcsr 设置为一些错误的值,当该位未正确屏蔽时,Linux 内核会触发 SIGFPE 代码 INEXACT。

0 投票
2 回答
185 浏览

c++ - C ++中的SIGFPE误导

我试图了解以下程序的奇怪行为。很明显,在定义全局变量“bug”的时候出现了溢出,但是程序在无辜计算1.0+2.0的时候抛出了浮点异常。

我尝试用 g++ 和 clang++ 编译它,但两者的输出相同

0 投票
2 回答
577 浏览

c++ - SIGFPE 恶作剧

我重复相同的计算两次,但在一次我得到一个浮点异常,而在另一个我没有。

我在 g++ 和 clang++ 上都对其进行了测试,并在两者中都得到了以下输出

这是怎么回事?

0 投票
2 回答
454 浏览

c++ - FPE 上的 C++ 返回值

背景

我有一个程序有时会抛出浮点异常,因为(主要)除以零,尽管检查了除以零值。这可能与浮点推测有关,但我不确定。

我已经使用feenableexcept/SIGFPE为 FPE 实现了一个处理程序,但这只会阻止我的程序死机,这比NaN在整个数据中传播 s 更好。

我发现了这个关于浮点陷阱的旧页面,并且似乎暗示这样的陷阱负责返回的默认行为NaNInf或者-Inf除以零。这让我开始思考。

问题

是否有可能以某种方式除以零总是返回值0.0?(有人可能想知道这个的有效性,但在我的情况下这是可取的)

细节

我在 linux 上使用英特尔编译器版本 13.0.0(gcc 版本 4.4.7 兼容性)。

0 投票
1 回答
147 浏览

c++ - 为 double 类型的变量赋值导致的浮点异常

程序收到信号 SIGFPE,算术异常。xxx::init (this=0xbffe47fc, aa=0x0) at s.cc:1061 1061 price = 100.0;

我只是尝试在不同的linux机器RH5.6 32bit上编译和运行代码而不做任何修改,这个应用程序的所有者在RH5.3上编译它没有问题。

gdb BT

B::初始化

b_init

乙::乙

一个::一个

主要的

这是代码

我看起来很正常。任何人都可以阐明它吗?谢谢!

0 投票
1 回答
153 浏览

android - 即使在具有相同 PID 的分段错误之后,Android 原生应用程序也会运行

我在 i.MX51 板上运行自定义 android 并观察到一个应用程序的奇怪问题。

我在 n logcat 中记录了应用程序的分段错误(本机,使用 NDK 编写):

即使在此之后,应用程序继续使用我从 logcat 和 ps 命令确认的相同 PID (2257) 运行。这可能吗 ?如果是,如何?

0 投票
1 回答
875 浏览

linux - SIGFPE 信号不终止并生成核心文件

根据 UNIX 高级编程文档,SIGFPE 信号终止程序并生成核心文件。

这是我的程序

当我在 linux 机器上运行这个程序时,它会反复打印“SIGFPE signal catch”并且不会终止。样本输出为

问题是什么?