问题标签 [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++ - 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
.
c++ - C/C++ 处理程序 SIGFPE 是什么?
好吧,我搜索了有关 SIGFPE 的文章,然后我写了一些测试,但它的行为很奇怪。然后我不得不把它贴在这里寻求帮助。GCC/G++ 或 ISO C++ 是否明确定义了如果除以零会发生什么?
1)我搜索了文章: 除以零不会抛出 SIGFPE 它与输出相同的是 inf
2)如果我将其重写如下:
然后 signal_handler 不会发生。但是如果我取消注释该行
然后 signal_handler 继续调用。
有人可以解释一下吗?
c - 具有 SIGFPE 异常的程序在 gdb 下的行为不同
我有一个简单的 C 程序,当使用 gdb 调试时,它的行为不同。程序是这样的:
当自己运行时,我得到了这个非常奇怪的结果:
没有错误!这并不是说信号没有被触发,它是:
在 GDB 中,情况会有所不同:
要求 GDB 不要停止没有区别
这是怎么回事?!一方面,为什么 SIGFPE 不杀死程序?第二件事,为什么 GDB 的行为不同?
更新。一种想法是子进程正在继承父进程的信号掩码。 然而,从这个成绩单中可以看出,情况显然不是这样: 这个分析是不正确的,见下文。
更新 2。我的一个朋友指出,陷阱只报告由 shell 本身设置的信号,而不是任何父进程设置的信号。所以我们追踪了所有父母的忽略掩码,你瞧,rxvt-unicode 屏蔽了 SIGFPE。一位朋友证实,当他使用 rxvt-unicode 运行可执行文件时,他可以重现。
c - 使用 SIGFPE 进行非零除法的核心转储
我有一个 qemu-kvm 进程可疑地使用 SIGFPE 转储核心:
哪里elapsed_time
是double
(下面的 gdb 输出中的值)并且NANOSECONDS_PER_SECOND
是一个宏:
我想不出应该如何导致 SIGFPE 的原因。有什么线索吗?
场景:我使用 RHEL-6.5 作为主机并尝试启动 Windows 来宾。它可以使用相同的命令稳定地重现。
完整的回溯:
那么,这divsd
条指令有什么问题呢?关于如何调试它的任何建议?
自己回答:这是一个内核错误,它意外地将 mxcsr 设置为一些错误的值,当该位未正确屏蔽时,Linux 内核会触发 SIGFPE 代码 INEXACT。
c++ - C ++中的SIGFPE误导
我试图了解以下程序的奇怪行为。很明显,在定义全局变量“bug”的时候出现了溢出,但是程序在无辜计算1.0+2.0的时候抛出了浮点异常。
我尝试用 g++ 和 clang++ 编译它,但两者的输出相同
c++ - SIGFPE 恶作剧
我重复相同的计算两次,但在一次我得到一个浮点异常,而在另一个我没有。
我在 g++ 和 clang++ 上都对其进行了测试,并在两者中都得到了以下输出
这是怎么回事?
c++ - FPE 上的 C++ 返回值
背景
我有一个程序有时会抛出浮点异常,因为(主要)除以零,尽管检查了除以零值。这可能与浮点推测有关,但我不确定。
我已经使用feenableexcept
/SIGFPE
为 FPE 实现了一个处理程序,但这只会阻止我的程序死机,这比NaN
在整个数据中传播 s 更好。
我发现了这个关于浮点陷阱的旧页面,并且似乎暗示这样的陷阱负责返回的默认行为NaN
,Inf
或者-Inf
除以零。这让我开始思考。
问题
是否有可能以某种方式除以零总是返回值0.0
?(有人可能想知道这个的有效性,但在我的情况下这是可取的)
细节
我在 linux 上使用英特尔编译器版本 13.0.0(gcc 版本 4.4.7 兼容性)。
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
乙::乙
一个::一个
主要的
这是代码
我看起来很正常。任何人都可以阐明它吗?谢谢!
android - 即使在具有相同 PID 的分段错误之后,Android 原生应用程序也会运行
我在 i.MX51 板上运行自定义 android 并观察到一个应用程序的奇怪问题。
我在 n logcat 中记录了应用程序的分段错误(本机,使用 NDK 编写):
即使在此之后,应用程序继续使用我从 logcat 和 ps 命令确认的相同 PID (2257) 运行。这可能吗 ?如果是,如何?
linux - SIGFPE 信号不终止并生成核心文件
根据 UNIX 高级编程文档,SIGFPE 信号终止程序并生成核心文件。
这是我的程序
当我在 linux 机器上运行这个程序时,它会反复打印“SIGFPE signal catch”并且不会终止。样本输出为
问题是什么?