问题标签 [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.
c - ARMv8 非法指令
我为 ARMv8 编写了以下程序集:
该函数permute
从一个常规 C 程序调用,其中两个字节指针长度为 128 作为输入。这编译得很好,但是当我运行它时,我得到Illegal instruction
. 如果我注释掉zip1
指令,它也运行良好。
关于可能出现什么问题以及如何进行Illegal instruction
一般调试的任何提示?
c++ - boost::gregorian::date::date 中的非法指令
我有使用 boost 的 C++ 程序(主要是 Logger)。该程序在 Windows 和 Ubuntu 上编译和运行良好。但是,当我尝试将其移植到嵌入式系统(英特尔凌动处理器)上的 Linux Yocto 时,我在运行时遇到非法指令错误。
该程序本身是在带有 Intel-i5 的 Ubuntu PC 上构建的。
我调试了这个问题,它是来自另一个库(OpenCV)的一些 AVX 指令。我禁用了所有 AVX 并解决了问题,但出现了另一个问题。
它现在告诉我(在阅读核心愚蠢之后gdb
):
程序以信号 SIGILL(非法指令)终止。0x00007fe1aed03ade in boost::gregorian::date::date(boost::gregorian::greg_year, boost::gregorian::greg_month, boost::gregorian::greg_day) ()
- 我没有
boost::gregorian::date
明确使用 - 是否有可能
boost::gregorian::date
使用一些优化的指令?!像 SSE 还是 AVX?(似乎不合逻辑) - 关于这个问题的任何线索?
PS该错误在运行时发生在其他任何事情之前。在我得到错误之前,即使cout
在 main 函数的第一行也没有执行。因此,我怀疑某些static constructor
内部 boost 会导致问题,因为我的代码中没有静态构造函数。
编辑:
所有库和程序本身都是用-march=bonnell -mno-avx -O2
python - 尝试导入 tensorflow 时出现非法硬件指令
我刚刚使用该方法的说明安装了 tensorflow virtualenv
。安装过程很顺利,所以我认为那里没有任何问题。安装后我继续尝试导入它以验证一切正常,我收到以下消息:
这发生在我使用 python 交互式控制台使用以下命令之后:
我尝试使用 pip 的链接重新安装它,但没有成功。
我创建了 virtualenv:
在这不起作用之后(因为它产生了同样的错误)我尝试了:
我得到了同样的结果。
我用来安装 tensorflow 的命令是:
如您所见,我打算安装仅限 CPU 的版本。
我读到一些关于其他框架和技术的想法,这些框架和技术显示了这个消息,硬件没有实现指令,所以除了获得新硬件之外没有什么可做的。
有没有办法解决这个问题?我已经尝试了一些不同的安装方法,但都没有看到工作
至于系统规格:
OBS:我在这台机器上确实有一个 GPU,但我认为 tensorflow 不会在它上面运行,因为它有点老了。它是英伟达 8800 GTS 512。
感谢您的帮助,如果有任何缺失的信息,请告诉我。
python - What does "5 Illegal instruction" from bash script mean?
The following script is an entrypoint to a docker image.
run.sh
What does this error mean?
The container is up and running so I guess it fails sometimes, gets restarted and then works.
x86 - 系统声称支持 AVX2,但未实现整数寄存器的广播
cat /proc/cpuinfo
报告设置了 avx2 标志。
但是,AVX2 指令 vpbroadcastb 在运行时会导致非法指令异常。
我使用 x86_64 Linux 和 nasm 作为我的汇编程序。在我的系统上,复制它就像
使用 NASM。
有人知道这是什么一回事吗?这是我正在使用的 AMD A12-9700P RADEON R7 APU。
module - 非法指令 - 内核模块
我正在尝试遵循以下说明:
我的目标是为 PMU 启用用户空间访问。这些是我正在使用的模块的一些说明。
输出(dmesg):
接下来是第二个模块,这次只读取寄存器中的值。
模块(测试它是否保留寄存器上的值):
输出(dmesg):
用一个简单的程序测试用户空间的功能给出:
注意:我知道这可能是因为 PMCR_EL0 的第一位是 0 而 PMUSERENR 不是 f。不知道如何做到这一点,以便模块不会更改寄存器中的值...
可能有助于调试的有用命令:
juno:/ # 猫 /proc/modules
read_arm_pmu 16384 0 - 实时 0x0000000000000000 (PO)
enable_arm_pmu 16384 0 - 实时 0x0000000000000000 (PO)
juno:/ # 猫 /proc/devices
字符设备: 1 mem 5 /dev/tty 5 /dev/console 5 /dev/ptmx 10 misc 13 input 14 sound 29 fb 90 mtd 108 ppp 116 alsa 128 ptm 136 pts 180 usb 189 usb_device 204 ttyAMA 226 drm 249 roccat 250 hidraw 251 bsg 252 三通 253 rtc 254 gpiochip
块设备:1 ramdisk 259 blkext 7 loop 8 sd 31 mtdblock 65 sd 66 sd 67 sd 68 sd 69 sd 70 sd 71 sd 128 sd 129 sd 130 sd 131 sd 132 sd 133 sd 134 sd 134 134 sd 134 sd 134 sd 134 sd 134个设备虚拟块
猫/proc/sys/内核/污染
4097
juno:/ # cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5
2:1844410 1197983 1353732 16779 3199 5419 GIC v2 92级arch_mem_timer
3:0 0 0 0 0 0 GIC v2 29 级arch_timer
4:894927 272142 288023 18616 39333 15390 GIC v2 30级arch_timer
7: 0 0 0 0 0 0 GIC v2 198 电平定时器
14:419017 0 0 0 0 0 GIC v2 68 级别 mhu_link
15:0 0 0 0 0 0 GIC v2 67 级别 mhu_link
16:0 0 0 0 0 0 GIC v2 120 级别 7ff00000.dma
17:0 0 0 0 0 0 GIC v2 121 级别 7ff00000.dma
18:0 0 0 0 0 0 GIC v2 122 级别 7ff00000.dma
19:0 0 0 0 0 0 GIC v2 123 级别 7ff00000.dma
20:0 0 0 0 0 0 GIC v2 124 级别 7ff00000.dma
21:0 0 0 0 0 0 GIC v2 140 级别 7ff00000.dma
22:0 0 0 0 0 0 GIC v2 141 级别 7ff00000.dma
23:0 0 0 0 0 0 GIC v2 142 级别 7ff00000.dma
24:0 0 0 0 0 0 GIC v2 143 级别 7ff00000.dma
25:0 0 0 0 0 0 GIC v2 125 级 hdlcd
26:0 0 0 0 0 0 GIC v2 117 级别 hdlcd
27: 6336 0 0 0 0 0 GIC v2 115 级 uart-pl011
28: 53666 0 0 0 0 0 GIC v2 136 级别 7ffa0000.i2c
30: 47345 0 0 0 0 0 GIC v2 149 级别 ehci_hcd:usb1
33:14370 0 0 0 0 0 GIC v2 65 级别 2d000000.gpu
34:0 0 0 0 0 0 GIC v2 66 级 2d000000.gpu
35:39222 0 0 0 0 0 GIC v2 64 级 2d000000.gpu
37: 52 0 0 0 0 0 GIC v2 194 级别 mmci-pl18x (cmd)
40:0 0 0 0 0 0 GIC v2 100 级别 rtc-pl031
43:0 0 0 0 0 0 GIC v2 169 级别 sata_sil24[0000:03:00.0]
45:0 0 0 0 0 0 M SI 0 边缘 PCIe PME,aerdrv
52: 1049234 0 0 0 0 0 M SI 4194304 边缘 eth0
IPI0: 62569 1835646 1888285 43688 29194 29798 重新调度中断
IPI1:315 1276 725 386 307 207 函数调用中断
IPI2:0 0 0 0 0 0 C PU 停止中断
IPI3:829962 24938 62500 1274 498 1029 定时器广播中断
IPI4:800250 925302 1266671 10821 9264 7192 I RQ 工作中断
IPI5:0 0 0 0 0 0 C PU 唤醒中断
错误:0
我希望你们能帮助我,感觉我在一些可能很简单的事情上浪费了很多时间。
TLDR - 内核模块应该启用用户空间访问,但它不工作。寻求帮助以了解原因。
谢谢,路易斯
编辑:格式化,让我的问题更清楚。
assembly - 在 RISC-V 上执行函数调用时出现非法指令
早上好,
我正在尝试为 RISC-V 架构编写一个简单的汇编程序,其中我有一个简单的 main (_start),它执行一个什么都不做并返回给调用者的函数调用。
我写的代码如下:
为了执行这个程序,我运行:
作为输出,我得到:
在这种情况下,我们在 a6 寄存器中有 2,所以我假设程序的控制权正确地返回给调用者,因为最后一条指令被正确执行,但无论如何我得到错误“执行了非法指令!” 你能给我一些解决这个问题的提示吗?
谢谢
assembly - 在 RISC-V 程序集中的 .data 段中的地址处写入一个字节
我正在编写一个 RISC-V 汇编程序,该程序需要将一个单词(保存到寄存器中)存储到 .data 段中:
但是当程序到达时,sw a1, num
我得到错误“非法操作数`sw a1,num'”。如何将数据存储到 .data 段内的内存位置?你能给我一些提示吗?
python - 非法指令:MacOS High Sierra 上的 4
我正在尝试在 pygame 3.6 中创建一个看起来像聊天的窗口,我刚刚将我的 MacBook 更新到版本 10.13.6,在我这样做之前它工作得很好但是在我收到消息之后:非法指令:4。
代码
Python 3.6(和 2.7)在运行后也会崩溃。
c++ - 为什么 lambda 在 clang 而不是 gcc 上崩溃?
该程序因叮当声而崩溃
报告:
但是,它不会与g++
.
我的困惑是,既然它会导致崩溃,为什么不在clang
编译时将其视为错误呢?
更新
考虑以下代码
gcc
&生成的目标将继续运行并visual studio
返回随机值
像这样的错误比简单的崩溃和clang胜利更难追踪。
clang
我能想到的不引发错误的唯一原因是兼容性。