问题标签 [illegal-instruction]

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 回答
964 浏览

c - C 非法指令

下面是我编写的 ac 程序的打印输出,我运行它的演示,最后是关于我的编译器的一些信息。

我正在编写一个程序,遇到了一个非法指令错误,这是我以前从未见过的,所以我决定尝试找到一个最小的工作示例,以便找出它与段错误或其他类型错误的区别。奇怪的是,程序中的微小更改似乎会使它返回一个段错误而不是非法指令错误。尽管如此,我还是设法将程序大幅缩减为一个更小的工作示例。话虽如此,对于一个最小的工作示例来说,该程序仍然相当大。

我的问题首先是为什么我会收到非法指令错误,其次是什么是非法指令错误。此外,如果此错误特定于我的机器,我也会感兴趣。这个程序有很多奇怪的属性。例如,似乎需要数字 -11 才能导致错误。

0 投票
2 回答
311 浏览

assembly - 试图将 .c 文件与 .s 文件链接,但我得到“非法指令”

我有这两个文件,9-main.c 和 9-mult.s。

9-main.c

9 倍数

我正在尝试链接它们:

但是如果我执行 a.out:

可能是什么原因?

0 投票
1 回答
225 浏览

tensorflow2.0 - 非法指令。加载 libtensorflow_cc.so 时 nsync::nsync_mu_init(nsync::nsync_mu_s_*) 中的 0x00007ffff3712210

我的应用程序的一部分使用 tensorflow 来加载模型。应用程序代码使用 tensorflow2.3 使用 devtoolset-7 编译。在尝试运行我的应用程序二进制文件时,它在使用堆栈跟踪加载 libtensorflow_cc.so 时崩溃

/proc/cpuinfo 中的标志是

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc eagerfpu pni pclmulqdq ssse3 f ma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpc id_single ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveop t arat md_clear spec_ctrl intel_stibp arch_capabilities

谁能帮助我理解这个问题?

0 投票
0 回答
441 浏览

debugging - 这种“非法指令”错误的通常原因是什么,我该如何调试?

我正在使用 GNU Scientific Library 开发一个程序。它在将非线性方程求解一半后给出“非法指令(核心转储)”。见下文。这种“非法指令”错误的通常原因是什么,在这种情况下我该如何调试?

有了gdb,我得到了一些额外的信息。

上面,nielsen.c98看起来像这样

CPU 是 x86_64 根据uname -m. 操作系统是 Mac(主机)上的 Ubuntu 16.04 VirtualMachine。GCC 版本是 5.4。

代码使用 gcc 编译,并打开了 Address Sanitizer 和 Undefined Sanitizer ( -fsanitize=address,undefined)。

当消毒剂打开时,编译器似乎会产生“ud2”指令。我想知道这个错误是编译器错误、消毒程序错误还是代码错误?

0 投票
1 回答
142 浏览

c++ - 了解和排除 SIGILL

我为基于 armv7 的目标构建了一个用于 erlang (gitlab.com/Vagabond1/erlang-rocksdb@8708fe8) 的 Rocksdb 副本。这是一个 iMX6 SoloX 处理器,这里是 cpuinfo:

我有一个加载已编译的程序,liberocksdb.so但它与 SIGILL 一起崩溃,这是回溯:

下面是拆解:

我不是该领域的专家,但据我了解,程序崩溃是因为该指令udiv对我的 CPU 来说是非法的。我检查了 ARM 开发者网站,这是Cortex M3 指令,我相信我的 CPU 是Cortex M4,所以我想它应该有这个指令?

也许我的分析是错误的,这是别的什么?

我的交叉编译是使用该 CPU 和 rootfs 的交叉工具链进行的,并包含诸如-march=armv7-a -marm -mfpu=neon -mfloat-abi=hard应该提供兼容二进制文件之类的参数。

谢谢

0 投票
1 回答
188 浏览

c - 将函数放在 int main 之外时的非法指令 4

我刚刚开始学习 C 语言,但我的一个程序遇到了问题。

执行时出现错误:“非法指令 4”:./dictionary large.txt

Large.txt 是一个包含 143091 个按字母顺序排列的单词的文件,每个单词都从一个新行开始。我正在尝试将它们全部加载到哈希表中,如果所有单词都成功加载,则返回 true。

如果 bool load() 中的代码在 int main 中并且 load() 不存在,则此代码对我有用。但是,一旦我将它放在 load() 函数中并从 main 调用它,就会出现错误。

我会很感激这方面的帮助,因为非法指令的线程并不多。

这是我的代码:

先感谢您!

克里斯

0 投票
0 回答
60 浏览

gcc - Tool to check illegal instruction in an executable in Linux

I have an application written in C/C++ and compiled with gcc/g++ with option -march=... in order to run on specific machine hardware. After compiling, i copy that executable to the destination machine. However, to make sure that it will run fine on that hardware, i wanna ask if there is any tool or way to examine that executable to see if it’s runnable (not contain any illegal instruction) without running the executable?

0 投票
0 回答
37 浏览

ios - 归档我的应用程序时如何在 Xcode 中调试非法指令错误 4

背景

我已经多次归档我的应用程序,没有任何问题。在最近的更新中,我添加了 Firebase 远程配置,以便进行 A/B 测试。当我去存档应用程序的新版本时,我收到一条非法指令:4 错误消息。

我的理解

我理解,“非法指令消息只是告诉您,您的二进制文件包含您试图运行它们的操作系统版本不理解的指令。”

问题

我的问题是如何解决这个问题?它在模拟器中运行良好。有没有办法找出操作系统不理解的指令?有没有办法调试这个或了解更多关于发生了什么?

非常感谢。

0 投票
0 回答
325 浏览

opencv - 树莓派 4 - 8GM RAM - 64 位操作系统 aarch64 - easyocr - 火炬 - opencv - 非法指令

我正在尝试让 easyocr 在树莓派 4 上运行,并且可以使用一些建议或帮助。我使用的是 5 月 7 日至 2021 年的 64 位版本 (2021-05-07-raspios-buster-arm64.zip)。当我进行全新的操作系统安装时,我执行以下命令:

我打开一个 python3 编辑器并执行以下命令:

最后一条命令导致非法指令错误。我认为 openCV 可能是罪魁祸首,所以我从源代码编译它并再次尝试。我得到了同样的错误。我尝试过使用 32 位构建,但 Torch 需要 64 位才能工作。我在 Windows 64 位机器上通过 Anaconda 尝试了相同的序列和代码,它可以正常工作。

我接下来的两次尝试将是从 source 构建 easyocr 和/或 torch,但我在这里抓住了稻草。我真的不知道如何找出是什么软件导致了非法指令,所以我可以磨练那个包。我会很感激任何关于我可以做些什么来获得更多信息的想法或关于我可以尝试什么的想法。

谢谢一堆。

[编辑]我安装了 python3-dbg,所以我可以在 gdb 下运行应用程序。当我这样做时,我得到的错误是

[EDIT2]我找到了一个 git hub 存储库,它为像我这样有非法指令错误的人创建轮文件 (WHL)。 到目前为止,它没有帮助。我尝试了一些,但将使用更系统的方法。看看我能不能找到合适的组合。

0 投票
1 回答
290 浏览

rust - 为什么恐慌时恐慌会导致非法指令?

考虑以下故意导致双重恐慌的代码:

我知道这通常发生在Drop从先前的恐慌中展开时实现恐慌,但为什么它会导致程序发出非法指令?听起来代码已损坏或意外跳转到某个地方。我认为这可能与系统或代码生成有关,但我在各种平台上进行了测试,它们都以相同的原因发出类似的错误:

  • Linux:

  • 窗户(带cargo run):

  • 锈游乐场:

这是怎么回事?这是什么原因造成的?