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

signals - 我可以忽略除以零导致的 SIGFPE 吗?

我有一个程序故意执行除以零(并将结果存储在 volatile 变量中)以便在某些情况下停止。但是,我希望能够禁用这种暂停,而无需更改执行除以零的宏。

有没有办法忽略它?

我试过使用

但它仍然因消息“浮点异常(核心转储)”而死。

我实际上并没有使用该值,所以我并不真正关心分配给变量的内容;0、随机、未定义...

编辑:我知道这不是最便携的,但它适用于在许多不同操作系统上运行的嵌入式设备。默认停止动作是除以零;其他平台需要不同的技巧来强制看门狗引起的重启(例如禁用中断的无限循环)。对于 PC (linux) 测试环境,我想禁用除以零时的暂停,而不依赖于断言之类的东西。

0 投票
1 回答
1621 浏览

linux - 在 linux 上,什么会导致 dlopen 发出 SIGFPE?

我有一个来源可疑的库,它被标识file为 32 位可执行文件。但是,当我在 32 位 CentOS 4.4 机器上尝试dlopen它时,dlopen 以SIGFPE. 当然,如果二进制文件的格式有问题,那么dlopen应该处理错误吗?

所以问题是:什么样的问题会导致 dlopen 发出 SIGFPE?

0 投票
1 回答
672 浏览

floating-point - C++/CLI:SIGFPE、_control87、_fpreset,将古老的非托管 Watcom C 应用程序移植到 .NET

我有一个数千行的应用程序,它依赖于 SIGFPE(由传递给 signal() 的函数指针处理)来更改状态并在某些浮点条件发生时让代码正确运行。但是,在托管模式下的 C++/CLI 下,_control87 会生成在用 C 编写的静态库中执行的 System.ArithmeticException。不支持 _fpreset 和 _control87。

如何让经典的非托管 SIGFPE 操作在 C++/CLI 应用程序中工作?在我的应用程序中发生浮点问题的位置数量可能非常多,而且我并不完全理解其他程序员多年前编写的所有数值方法。

我希望老式的异常处理能够处理浮点除以零,而不是 INF 值。平台调用样式不起作用,#pragma managed(off) 也不起作用。

我有什么选择?

0 投票
1 回答
163 浏览

c++ - 核心文件完全是胡说八道,或者这段代码真的会引发 SIGFPE 吗?

我的核心文件声称 SIGFPE 是从

gcc-4.3.4/include/c++/4.3.4/bits/stl_iterator_base_funcs.h

在第 176 行。这里是:

这是在我拥有的另一个函数中,该函数确实通过不执行任何浮点运算的代码调用了提前包围。代码是用优化编译的(但有调试符号),所以事情可能会很混乱。

我的核心文件只是在告诉我完全是胡说八道,还是有什么办法可以理解?

0 投票
2 回答
10066 浏览

c - 为什么会有 SIGFPE?

出于某种原因,它曾经工作过。但现在我得到了一个 SIGFPE .....怎么了?

0 投票
0 回答
1317 浏览

linker - 全局符号“_END_”具有非全局绑定

我正在 Solaris 11_x86 系统上移植一个应用程序。当我使用`make编译它时,我得到了这些错误:

我该如何解决?

0 投票
1 回答
452 浏览

loops - gdb:循环内的 SIGFPE

我在一个循环中发生了一个 SIGFPE。如果我设置断点或使用 stop、nopass 等处理 SIGFPE,我会在此行之后丢失帧变量。在断点的情况下,我需要首先通过执行来到达那里n N,其中N是一个很大的数字,以便循环在断点上运行,直到出现发出 SIGFPE 的此类变量值。通过处理或断点执行后,我失去了框架变量,因此我无法反向搜索并进一步调试程序(变量脱离上下文)。

如何快速处理循环内的 SIGFPE?

谢谢!

新信息:是否可以停止具有逻辑观察点的程序?我进入了负责的框架,发现有问题的变量达到了 350 的值(它应该小于零)。为什么不

此时停止执行?

0 投票
2 回答
7098 浏览

c - 浮点异常核心转储

我是Linux信号的新手,请帮忙。以下代码在 Linux 2.6 gcc 中运行时获取核心转储。

$ ./a.out
浮点异常(核心转储)

问题:
1. 既然安装了进程信号掩码,那么第40行生成的“SIGFGE”不应该volatile int z = x/y;被屏蔽吗?
2.如果它没有被阻塞,既然已经安装了信号处理程序,那么信号处理程序不应该捕获“SIGFPE”,而不是核心转储吗?
3. 如果我注释掉第 40 行volatile int z = x/y;,而改用第 42 行raise(SIGFPE);,那么一切都按我的预期进行。x/0 和 raise SIGFPE 有什么区别?

这是代码:

0 投票
3 回答
8104 浏览

c++ - 除以零不会抛出 SIGFPE

我有一个小程序执行浮点除以零,所以我期待 SIGFPE。

实际上,我得到了以下输出:

gcc 版本 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4)

在这种情况下我应该怎么做才能抛出 SIGFPE?FP 操作行为取决于哪些因素(编译器标志/CPU 类型等)?

谢谢

0 投票
2 回答
6579 浏览

c - 'int main(){ return(0); 上的浮点异常 (SIGFPE); }'

我正在尝试为两种不同的 Linux 环境构建一个简单的 C 程序。在一台设备上程序运行良好,在另一台设备上程序生成浮点异常。该程序除了从 main 返回 0 之外什么都不做,这让我相信启动代码可能与 ABI 有一些不兼容?

该程序使用 gcc 编译,具有以下构建规范:

使用内置规范。目标:i386-redhat-linux 配置:../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads =posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,obj-c++ ,java,fortran,ada --enable-java-awt=gtk --disable-dssi --disable-plugin --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4。 2.0/jre --with-cpu=generic --host=i386-redhat-linux 线程模型:posix gcc 4.1.2 20080704 (Red Hat 4.1.2-52)

程序源码如下:

在 Celeron 设备上,该程序在 GDB 下生成以下内容:

以下是我可以收集的详细信息,以帮助了解正在发生的事情:

我可以做些什么来确定是什么导致了这个问题?尝试静态链接到某个版本的 libc 怎么样?

在 GDB 下发生故障后,我执行:

根据我收到的帮助,由于某种原因,libc 启动代码似乎被 0 除。

现在的问题是,是什么导致了这种明显的不良行为?某些东西必须与其他东西不兼容?

装配输出: