问题标签 [page-fault]

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

c++ - 渲染 QWidget 时出现大量页面错误

我注意到我的 Qt 应用程序中有大量页面错误。我通过调整一个停靠小部件(下面有几十个小部件的小部件树)的大小来复制它 2 秒,并使用 AQTime 跟踪该操作。这个操作我得到 2000 个页面错误。这是为什么?

在 Windows XP 32 位上使用 Qt 4.5.3

更新:它们是软页面错误
更新2:我在 Qt Designer 中创建了一个 ui,其中包含 1 个组合框,其中包含 2 个项目。如果我预览这个,每次单击组合框以选择其中一项时,都会出现 200 个页面错误。

0 投票
1 回答
506 浏览

assembly - 汇编 CALL 指令,写入错误?

在使用一些操作码反汇编的 linux 内核的页面错误处理程序中,我看到在 x86 架构上,CALL 或 0xE8 指令偶尔会引发写入错误,并且 ESI 和 EDI 都是 NULL。我想知道这是否有特定原因,因为 CALL 需要一个内存地址并将 EIP 更改为该值,并且不需要页面,因为它只是 EIP + relative_offset。如果有人能澄清这一点,将不胜感激。

0 投票
1 回答
419 浏览

tlb - 英特尔处理器可以延迟 TLB 失效吗?

这参考了 InteI 的软件开发人员手册(订单号:325384-039US 2011 年 5 月),第 4.10.4.4 节“延迟无效”描述了 TLB 条目无效的潜在延迟,这可能在访问其分页结构条目的内存时导致不可预测的结果已经变了。

手册说……“在某些情况下,所需的失效可能会延迟。软件开发人员应该明白,在修改分页结构条目和执行第 4.10.4.2 节中推荐的失效指令之间,处理器可以使用转换基于分页结构条目的旧值或新值。以下项目描述了延迟失效的一些潜在后果: 如果修改分页结构条目以将 R/W 标志从 0 更改为 1,对由该条目控制其翻译的线性地址的写访问可能会也可能不会导致页面错误异常。

让我们假设一个简单的情况,其中针对线性地址修改了页面结构条目(r/w 标志从 0 翻转到 1),然后立即调用相应的 TBL 无效指令。我的问题是——作为 TLB 延迟失效的结果,即使在调用 TLB 失效后,对相关线性地址的写访问也不会出错(页面错误)?

还是说“延迟失效”只能在页面结构发生变化的线性地址的“失效”指令没有发出时才会导致不可预知的结果?

0 投票
1 回答
531 浏览

c++ - 从 Visual Studio 启动应用程序时出现页面错误

我正在使用 Visual Studio 2010 编写和调试一个小程序。问题是,每当我通过 Visual Studio 2010 启动应用程序时,我的应用程序进程会产生每秒 100000 次的页面错误,这会使程序减慢 10 倍或更多。当我从文件系统启动生成的可执行文件时,启动完成后不会生成页面错误。调试和(允许的所有优化)发布版本会发生这种情况。没有异常被抛出。

该程序本身编译大约 200kib,执行时可保存大约 10mib 的数据和超过 4gib 的可用内存。只有主线程和日志框架的线程在运行。数据在开始时加载一次,之后只有结果存储在新分配的内存中并在最后写入日志。

似乎没有很多磁盘活动,Windows 资源监视器显示没有硬故障,而任务管理器显示的数字不断增加。我知道使用 IDE 会出现一些性能损失,但这似乎有点过分。有什么建议吗?

编辑:

注意:通过减少(取消)分配新内存,我能够将计数减少到大约一半。

进程资源管理器 说:进程浏览器

调试器似乎有问题。如果我不附加它,它会按预期运行。尽管我仍然想知道为什么它会引发如此多的页面错误,但它会大大减慢所有构建速度。

0 投票
3 回答
4404 浏览

delphi - 在 D2006 应用程序中获取外部异常 C0000006 - 如何强制 delphi 加载整个可执行文件?

退出我的应用程序时偶尔会出现此问题 - 我的应用程序正在通过网络运行 EXE。我知道当部分 EXE 按需加载时,这是一个页面错误。

我还在 TDrawGrid 的 OnDrawCell 方法中观察到它,所以我很困惑这可能是如何导致页面加载的。此外,异常不断发生。

所以我的问题:

错误 C0000006 是否可能由其他原因导致?我已经对应用程序管理内存的方式进行了相当大的更改,尽管没有什么异常,而且我相信代码的行为。

如何让应用程序在启动时将其全部加载到内存中(在 Delphi 2006 中 - 我知道有用于更高版本的 Delphi 的指令)。

TIA

0 投票
2 回答
17849 浏览

memory-management - 分段错误与页面错误

  1. 我想知道分段错误和页面错误之间有什么区别和关系?

  2. 分段错误是否只属于分段内存模型?

    页面错误是否只属于分页内存模型?

    如果两者都是,那么由于大多数计算机系统如 x86 和 Linux 使用分页内存模型而不是分段内存模型,为什么 GCC C 编译器有时会报告分段错误错误?

谢谢并恭祝安康!

0 投票
1 回答
671 浏览

windows - 为什么设备驱动程序会导致页面错误?

我有一个 Windows 控制台应用程序,它使用并行 IO 卡进行高速数据传输。(通用标准HPDI32ALT

我的进程在用户模式下运行,但是,我确信设备 API 后面的某个地方存在一些内核模式驱动程序活动(PCI DMA 传输、读取设备状态寄存器等)。工作模型大致是这样的:

  • 启动时:我从 API 请求一个指向 IO 缓冲区的指针。
  • 在我的主循环中:
    • 阻止 API 等待设备缓冲区中的空间(低水位线)
    • 用传输数据填充 IO 缓冲区
    • 通过将指针传递给 IO 缓冲区来开始向设备传输(在此期间 API 使用 PCI 总线上的 DMA 将数据移动到卡上)
    • 阻塞等待 IO 完成的 API

该应用程序似乎在适当的数据速率和长时间的持续吞吐量下正常工作,但是,当我查看 sys internals tool process explorer 中的进程时,我看到了大量的页面错误(每秒约 6k)。我正在将 ~30MB/s 移动到卡上。

我有足够的 RAM,并且有理由确定页面错误与磁盘 IO 无关。

关于可能导致页面错误的任何想法?我也有这个应用程序的接收端,它在接收模式下使用相同的 IO 卡。API 的接收模式使用不会导致大量页面错误。

将 IO 缓冲区移动到内核模式的行为会导致页面错误吗?

0 投票
2 回答
461 浏览

erlang - Erlang 导致页面错误

当我与我的用户一起运行此处描述的脚本时,一切都很好:

当我以 root 身份运行它时,它崩溃了:

该错误是可重现的。

我的问题是:

  • 有人可以尝试向我解释那里发生了什么吗?

  • 是erlang运行时还是我的操作系统有问题?

  • 有人可以重现此错误吗?

我在带有内核的 ubuntu natty 上运行 erlang 5.7.4

在飞鸿 X4 上。

0 投票
3 回答
1033 浏览

windows - Windows DDK 示例如何处理被调出的问题?我在示例中没有看到太多处理它的代码

为什么 Windows DDK 示例不处理被分页?它们是不可分页的吗?

0 投票
1 回答
944 浏览

c++ - 使用 g++ 避免 C++ 程序中的次要页面错误

我正在尝试解决这个难题:运输编码难题。这是我到目前为止提出的代码:

我知道这个逻辑可能存在一些错误。但我的问题与逻辑无关。当我提交此代码时,它成功运行,但我得到的分数低于它所说的次要页面错误数409。当我看到排行榜时,有人提交了带有轻微页面错误的 C++ 代码69。有什么办法可以控制这些轻微的页面错误?可能正在使用一些 g++ 标志?现在我的make文件很简单:g++ -o MyExe MyExe.cc.