问题标签 [panic]

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 投票
2 回答
2063 浏览

linux-kernel - 尝试修改驱动程序后“无法在 null 处处理内核空指针取消引用”

我有一个在启动时初始化驱动程序的脚本,在我启用内核跟踪并重新编译内核以尝试调试某个软件的问题之前,该脚本运行良好。如果我尝试以任何方式(modprobe、insmod 等)初始化驱动程序,此输出将打印到屏幕上:

任何有关正在发生的事情的提示将不胜感激!

0 投票
3 回答
33524 浏览

go - Go:从 defer 中返回

如果函数发生恐慌(在 Go 中),我想从函数返回错误:

我似乎误解了恐慌和推迟的概念。有人可以启发我吗?

0 投票
1 回答
7653 浏览

pointers - Golang:从列表元素中获取值

http://play.golang.org/p/TE02wFCprM

当我尝试从列表中的结构中获取值时,我遇到了错误恐慌。

我所做的是制作一个列表并将结构添加到列表中。当我从列表中检索元素时,它是接口类型。但是如果我打印出整个接口类型值,它仍然有结构值。所以我试图得到一个结构值,但得到了恐慌错误。

这条线路运行良好。

代码在这里

我想将结构保存在列表中,并能够从列表中保存的结构之一中检索特定值。

我怎么能做到?

提前致谢。

0 投票
1 回答
12414 浏览

go - Golang 中的安全关闭连接

当我打开一个套接字连接时,我在打开套接字后立即将 socket.Close() 逻辑放在一个 defer 函数中。但是,如果 socket.Close() 会引起另一个恐慌怎么办?我是否应该总是在外部延迟中嵌套另一个延迟/恢复以防止我的程序崩溃?像这样的东西:http ://play.golang.org/p/GnEMQS-0jj

谢谢, 埃尔格斯

0 投票
1 回答
1108 浏览

linux-kernel - 如何知道内核已经恐慌了?

我希望能够监控内核恐慌——知道它们是否以及何时发生。
有没有办法知道,在机器启动后,它由于内核恐慌(而不是,例如,命令重启或电源故障)而停机?

机器可能配置了 KDUMP 和/或 KDB,但我不想假设安装或未安装。

修补内核是一种选择,尽管我更愿意避免它。但即使我这样做了,我也不确定补丁能做什么。

我正在使用内核 2.6.18(我知道很古老)。较新内核的解决方案也可能很有趣。

谢谢。

0 投票
1 回答
618 浏览

linux - 自定义 ebtables 模块 && skb 操作 && 内核恐慌

前段时间我实现了基于 Ashwin Kashyap 的 vnat 模块的 ebtables 模块(http://www.research.rutgers.edu/~ashwink/misc_projs/ebt_vnat.html)。模块可用于 broute 表中的 BROUTING 链,用于剥离 vlan 标签并将 vlan id 放入 nf 标记中。模块还允许根据 nat 表的 POSTROUTING 链中的 nf 标记值添加 vlan 标记。模块在处理桥接流量时没有任何问题。系统坚如磐石,稳定。一旦我将 tproxy 拦截添加到混合中,问题就开始了。这会在运行一段时间后导致内核恐慌。我强调这样一个事实,即在经过几分钟的 tproxied 流量流之后,我在第一个数据包后没有看到内核恐慌。看来我处理 SKB 的方式对于 L3+ 处理来说不够干净。顺便说一句,我正在开发 2.6.32 内核。请在下面的评论中找到模块的关键部分:

我将不胜感激任何指针(只要它们至少为 64 位长)。谢谢!

0 投票
1 回答
419 浏览

linux - 内核恐慌后系统是否有可能保持活动状态?

昨天,在运行我的应用程序时,我在控制台syslog广播中看到,这看起来像是内核恐慌并且控制台变得没有响应。今天,我注意到我可以连接到服务器,putty并且当我运行时uptime显示系统已经运行了几天。当我运行时,dmesg我看到了oom_killer日志和Oops日志,但我希望我会看到系统重新启动并且dmesg没有任何内核恐慌的痕迹。所以现在我很困惑,是否存在内核恐慌?如果是,那么我怎么能连接到服务器,而系统似乎没有重新启动(它已经启动了几天)。如果没有,那我怎么能连接到服务器呢?在我手动重新启动服务器之前不应该冻结服务器吗?

0 投票
2 回答
1005 浏览

linux-kernel - 在 kmalloced 缓冲区上使用 deferred_io 的内核恐慌

我正在为 ARM 上的 SPI LCD 显示器编写帧缓冲区。在完成之前,我已经编写了一个仅内存驱动程序并在 Ubuntu(Intel、Virtualbox)下试用了它。驱动程序运行良好——我使用 kmalloc 分配了一块内存,对其进行了页面对齐(实际上它是页面对齐的),并使用帧缓冲系统创建了一个 /dev/fb1。如果相关的话,我有我自己的 mmap 函数(deferred_io 忽略它并使用它自己的外观)。

我已经设定:

当我使用测试程序打开 /dev/fb1 并对其进行映射时,它可以正常工作。我可以看到 x11vnc 发生了什么来“分享”fb1:

并使用 vnc 查看器查看:

我通过写入整个映射缓冲区来确保我没有溢出,这似乎很好。

当我添加 deferred_io 时出现问题。作为对其的测试,我有 1 秒的延迟,并且被调用的 deferred_io 函数除了 pr_devel() 打印之外什么都不做。我跟着文档

现在,测试程序可以正常打开 /dev/fb1,mmap 返回正常,但是一旦我写入该指针,就会出现内核恐慌。以下转储实际上来自 ARM 机器,但在 Ubuntu VM 上也会出现恐慌:

我完全被难住了——其他司机看起来或多或少和我的一样,但我认为他们可以工作。大多数人实际上使用 vmalloc - 为此目的,kmalloc 和 vmalloc 之间有区别吗?

0 投票
0 回答
4860 浏览

oop - 恐慌:“糟糕:0000 [#1]”(查看日志了解详细信息)- 更新内核测试

我试图解释一个可重复的系统崩溃,但不是那么频繁。我相信它与第三方驱动程序和光学扫描设备有关。我不确定扫描设备的驱动程序是否导致挂起,如果它在导致挂起的 USB 驱动程序中带出某些东西,或者它是否完全不同。

我不是驱动程序开发人员,所以我在阅读位于此处的 Linux 内核崩溃手册 - h​​ttp://rogunix.com/docs/Reversing&Exploiting/Linux_Kernel_Crash_Book.pdf 时正在摸索崩溃转储

我能够使用 kexec 工具设置调试内核来生成 vmcore。崩溃时看到 PANIC: "Oops: 0000 [#1]" (查看日志了解详细信息) 并且在日志中看到错误: 无法在虚拟地址 00100100 处理内核分页请求。

你能帮我解释更多的转储,这样我就可以回到驱动程序的开发人员那里告诉他们调查结果,或者你能告诉我根本不是驱动程序。

这里有更多来自垃圾场的信息。提前谢谢了。

崩溃> bt

崩溃>日志

更新内核测试

我已经更新到最新的 CentOS 5.5 发布内核(2.6.18-371.6.1),但仍然出现内核崩溃。然而这次恐慌发生在命令“khubd”而不是“swapper”上。我能够捕获转储,并在下面提供了我希望是相关信息来查明这个问题。它是内核中的错误还是驱动程序中的错误?

崩溃> bt

崩溃>日志(截断)

0 投票
2 回答
558 浏览

windows - 启用调试启动选项时,打印屏幕按钮似乎会检查 Windows

我正在我的 Windows 机器上进行一些驱动程序开发,我一直想知道为什么按下 PrtSc(打印屏幕)按钮进行屏幕捕获似乎会挂起我的机器。有一些论坛建议DEBUG在 Windows 中设置引导选项时会发生这种情况,并且这是 Windows 内核中的恐慌/错误检查。

这是 Windows 错误吗?或者这在某种程度上是否真的有用,比如在 Linux 中,PrtSc/SysRq 实际上是一个内核中断键?

更新 #1:我使用的是 Windows 7 x64 Professional Build 7601。