- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
还有另外一个进程不断地创建需要这段代码处理的文件。此代码通过将文件系统的内容与包含处理结果的 sqlite 数据库进行比较,不断扫描文件系统以查找需要处理的新文件 - 每个文件一个记录。此进程以 nice -n 19
运行,以免干扰其他进程创建新文件。对于大量 (>1k) 文件,这一切都完美无缺,但随后会因 BUG: scheduling while atomic
而崩溃。根据this
"Scheduling while atomic" indicates that you've tried to sleep somewhere that you shouldn't
但是代码中唯一的sleep是这样的
void doFiles(void) {
for (...) { // for each file in the file-system
... // check database - do processing if needed
}
sleep(1);
}
int main(int argc, char *argv[], char *envp[]) {
while (true) doFiles();
return -1;
}
代码将在根据数据库检查文件系统中的每个文件后进入休眠状态。由于会不时添加新文件,因此需要重复该过程。此代码中没有多线程。除了错位的 sleep 之外,是否还有其他可能导致“BUG:原子调度”的原因?
编辑:额外的错误输出:
note: mirlin[1083] exited with preempt_count 1
BUG: scheduling while atomic: mirlin/1083/0x40000002
Modules linked in: g_cdc_ms musb_hdrc nop_usb_xceiv irqk edmak dm365mmap cmemk
Backtrace:
[<c002a5a0>] (dump_backtrace+0x0/0x110) from [<c028e56c>] (dump_stack+0x18/0x1c)
r6:c1099460 r5:c04ea000 r4:00000000 r3:20000013
[<c028e554>] (dump_stack+0x0/0x1c) from [<c00337b8>] (__schedule_bug+0x58/0x64)
[<c0033760>] (__schedule_bug+0x0/0x64) from [<c028e864>] (schedule+0x84/0x378)
r4:c10992c0 r3:00000000
[<c028e7e0>] (schedule+0x0/0x378) from [<c0033a80>] (__cond_resched+0x28/0x38)
[<c0033a58>] (__cond_resched+0x0/0x38) from [<c028ec6c>] (_cond_resched+0x34/0x44)
r4:00013000 r3:00000001
[<c028ec38>] (_cond_resched+0x0/0x44) from [<c0082f64>] (unmap_vmas+0x570/0x620)
[<c00829f4>] (unmap_vmas+0x0/0x620) from [<c0085c10>] (exit_mmap+0xc0/0x1ec)
[<c0085b50>] (exit_mmap+0x0/0x1ec) from [<c0037610>] (mmput+0x40/0xfc)
r9:00000001 r8:80000005 r6:c04ea000 r5:00000000 r4:c0427300
[<c00375d0>] (mmput+0x0/0xfc) from [<c003b5e4>] (exit_mm+0x150/0x158)
r5:c10992c0 r4:c0427300
[<c003b494>] (exit_mm+0x0/0x158) from [<c003cd44>] (do_exit+0x198/0x67c)
r7:c03120d1 r6:c10992c0 r5:0000000b r4:c10992c0
...
最佳答案
正如其他人所说,您可以随时在用户代码中使用 sleep()。
您平台上的驱动程序似乎有问题。驱动程序实际上可能不会调用 sleep() 或 schedule(),但它通常会调用内核函数,而内核函数又会调用其中一个函数。
这看起来也像是在嵌入式 TI ARM 处理器上使用内存映射文件 I/O。
关于c++ - "BUG: scheduling while atomic?"的可能原因有哪些,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14903360/
我有一台计算机在一个非常严格的代理服务器后面,它只允许我上网和下载程序它不允许像 Atom 文本编辑器这样的程序下载它的包。 我的问题是如何仅使用基于浏览器的下载来安装它们? 最佳答案 这当然是可能的
我的 keymap.cson 文件中有这个: 'body': 'ctrl-alt-left': 'editor:select-to-first-character-of-line' 但是不行(没有
如何获取 Atom 中所有已安装和已激活插件的列表? 我可以用 apm list --installed --bare获取所有已安装的软件包,但我不想包含禁用的软件包。而且我有很多禁用的包。 最佳答案
我在 OSX 上,在 Atom 中打开了一个我没有命名的文件。我不得不重新启动计算机,当它再次出现时,我点击了错误的东西,它忘记了所有旧文件名,并且未命名的文件似乎消失得无影无踪。如果我使用 Time
当我搜索某个字符串(“在目录中搜索”)时,atom 允许做两件事:指定目录或文件扩展名(但它会在项目中的所有目录中搜索)。是否可以同时进行?例如。我想在 'src' 目录中进行递归搜索,但只使用 *.
我将 OSX 更新为 High Sierra,我的 Atom 停止从命令行工作。 $ atom . FSPathMakeRef(/Applications/Atom.app) failed with
下面屏幕截图中第 95 行和第 96 行之间的红色箭头在 GitHub 的 Atom 编辑器上意味着什么? 谢谢! 最佳答案 如果您当前打开的项目使用 Git 作为修订系统,装订线中的箭头表示您删除了
某些代码编辑器(例如 WebStorm)可以选择在编辑器失去焦点时自动保存。我在 Atom 编辑器中搜索了类似的选项,但尚未找到任何内容。 Atom 编辑器是否有一个设置,允许在失去焦点时自动保存已编
有没有办法(插件或其他东西)在 Atom 编辑器中使用分屏? 我查看了菜单,但找不到任何相关选项。 最佳答案 使用命令面板 使用 cmd + shift + p (OSX) 或 ctrl + 打开命令
我在 Atom 中安装了一个有缺陷的软件包,它导致编辑器反复崩溃。因此,我进入 Atom 设置将其删除,但出于好奇,我事先单击了“打开配置文件夹”按钮,这打开了一个空窗口和开发工具: Atom 随后崩
我已经使用atom.io有一段时间了并且非常喜欢它。我只缺少一件事。我以前使用过bracket和sublime,它们都有一个功能,你只需输入html就可以创建html文档的基本结构。 这只会设置 ht
我尝试在 Atom 编辑器中安装软件包,但总是失败,就像我无法连接到服务器一样。 例如,apm install split-diff 返回请求包信息失败:getaddrinfo ENOTFOUNDat
我使用的是 OSX El Capitan 和 Atom 1.2.4。而且我还安装了“tabs-to-spaces”包。 我正在尝试将编辑器设置为缩进并使制表符为 2 个空格。但我无法完成这项工作,这是
我使用的是 Atom 1.0.15。启动时,Atom 每次都会尝试打开 MTP 设备上的文件,这非常烦人。即使关闭引用 MTP 设备上的文件的选项卡后,Atom 也会尝试在下次启动时重新打开它。 修复
我在 Atom 中安装了一个有缺陷的软件包,它导致编辑器反复崩溃。因此,我进入 Atom 设置将其删除,但出于好奇,我事先单击了“打开配置文件夹”按钮,这打开了一个空窗口和开发工具: Atom 随后崩
我尝试在 Atom 编辑器中安装软件包,但总是失败,就像我无法连接到服务器一样。 例如,apm install split-diff 返回请求包信息失败:getaddrinfo ENOTFOUNDat
在 Atom 文本编辑器上,不同的文件树颜色代表什么。我的文件有 3 种不同的颜色:黑色、绿色和橙色。黑色文件无法正常运行,而绿色文件运行良好。如果有人知道颜色的具体含义,请告诉我。 最佳答案 颜色指
我正在尝试通过 Atom 进行完整搜索,寻找特定的文本。嗯,这听起来很简单,使用 Command + Shift + F ,但是,不会跟踪 node_modules ,并且不会扫描这些目录内的内容。我
以下是我在snippets.cson 文件中编写的两个片段: '.source.python': 'print statement': 'prefix': 'pr' 'body'
我试过在这里查看其他有类似问题的问题,但不幸的是我没能解决这个问题。 关于一些基本背景信息,我目前在实验室中使用 PC,并且实验室在机构的某个地方有 GPU 服务器。我正在尝试将 Atom 编辑器连接
我是一名优秀的程序员,十分优秀!