由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 如何区分read page fault 和 write page fault
相关主题
dereference a NULL pointer in Csocket被block在accept的时候不能close……
SIGSEGV,Segmentation fault in Cygwin[合集] C++,一个函数完成后出segmentaion fault
help on pthreads.....C++ Segment Fault
gdb debug c++的问题map shared memory to local process
Segmentation fault世界上第一个编译器是怎么产生的?
关于valgrind 的一个问题does the system guarantee this? (转载)
Strange problem with CGI (转载)被一个sigsegv exception 折腾死了
问个C++ Segmentation Fault的问题相对于machine code, assembly到底有啥改进?
相关话题的讨论汇总
话题: fault话题: page话题: sigsegv话题: write
进入Programming版参与讨论
1 (共1页)
g*******y
发帖数: 1930
1
linux下的SIGSEGV信号无法知道是读还是写操作引起的page fault,windows下貌似
access violation exception也无法区分(not sure about this)。难道就没有方法得知到底是引
起page fault的操作是读还是写吗?
求教版上高手!最近一个course project做distributed shared memory,所以需要这个信息,多
谢!
d****p
发帖数: 685
2
if you can launch gdb, then you can find where the crash occurred and
disassemble the instruction to see whether it is a write or read.
for example, if the segmentation fault happens at 0x0000000000400538,
use disas 0x0000000000400538 to check the instruction.
Program received signal SIGSEGV, Segmentation fault.
0x0000000000400538 in main ()
(gdb) disas 0x0000000000400538
Dump of assembler code for function main:
0x0000000000400528 : push %rbp
0x0000000000400529 : mov
t****t
发帖数: 6806
3
对x86来说, 本来CPU的GP fault就没有这个信息.
Page-Fault有一定的信息, 但是通常OS不会pass给用户.

得知到底是引
这个信息,多

【在 g*******y 的大作中提到】
: linux下的SIGSEGV信号无法知道是读还是写操作引起的page fault,windows下貌似
: access violation exception也无法区分(not sure about this)。难道就没有方法得知到底是引
: 起page fault的操作是读还是写吗?
: 求教版上高手!最近一个course project做distributed shared memory,所以需要这个信息,多
: 谢!

g*******y
发帖数: 1930
4
谢谢了。不过我不是想调试,而是想针对不同的page fault改变default处理从而实现
共享内存空间分布
式系统

【在 d****p 的大作中提到】
: if you can launch gdb, then you can find where the crash occurred and
: disassemble the instruction to see whether it is a write or read.
: for example, if the segmentation fault happens at 0x0000000000400538,
: use disas 0x0000000000400538 to check the instruction.
: Program received signal SIGSEGV, Segmentation fault.
: 0x0000000000400538 in main ()
: (gdb) disas 0x0000000000400538
: Dump of assembler code for function main:
: 0x0000000000400528 : push %rbp
: 0x0000000000400529 : mov

g*******y
发帖数: 1930
5
唉,看来没办法了,只有在linux用sigsegv + sigaction了...

【在 t****t 的大作中提到】
: 对x86来说, 本来CPU的GP fault就没有这个信息.
: Page-Fault有一定的信息, 但是通常OS不会pass给用户.
:
: 得知到底是引
: 这个信息,多

t****t
发帖数: 6806
6
assume you know the information. what do you want to do then?

【在 g*******y 的大作中提到】
: 谢谢了。不过我不是想调试,而是想针对不同的page fault改变default处理从而实现
: 共享内存空间分布
: 式系统

g*******y
发帖数: 1930
7
implement some kind of invalidation approach similar to the one used for
cache
coherence
a page could be in one of 3 states: shared, exclusive, invalid. state
transition would be stimulated by read/write operation.

【在 t****t 的大作中提到】
: assume you know the information. what do you want to do then?
1 (共1页)
进入Programming版参与讨论
相关主题
相对于machine code, assembly到底有啥改进?Segmentation fault
C -> assembly关于valgrind 的一个问题
C signal SIGFPE 问题Strange problem with CGI (转载)
Java 问题,请教如何找出一个array里的duplicate segments?问个C++ Segmentation Fault的问题
dereference a NULL pointer in Csocket被block在accept的时候不能close……
SIGSEGV,Segmentation fault in Cygwin[合集] C++,一个函数完成后出segmentaion fault
help on pthreads.....C++ Segment Fault
gdb debug c++的问题map shared memory to local process
相关话题的讨论汇总
话题: fault话题: page话题: sigsegv话题: write