[PTLsim-devel] Page fault
Yan Luo
Tue Jul 31 10:52:12 EDT 2007
Hello,
I encountered a "page fault" assertion failure when run my program under
PTLsim. The same program run to completion successfully on native x86-64. I
tried both ooo and seq cores, but they failed at the same rip. The following
is the tail of ptlsim.log . Any hints? Thank you. ~Yan
BasicBlock 0x3a22185030 of type jmp: 13 bytes, 6 transops (6t 1m 1s, uses
1000100000000000000000000000000000000000000000000000001010000001), 1 refs,
0x0 taken, 0x0 not taken:
0x3a22185030: sub.+ rsp = rsp,8 [zco] [som] [eom] [4 bytes]
0x3a22185034: mov.- rax = zero,0xffffffffff600400 [som] [eom] [7
bytes]
0x3a2218503b: add tr6 = trace,0x3a2218503d [som] [2 bytes]
0x3a2218503b: st mem = [rsp,-8],tr6
0x3a2218503b: sub rsp = rsp,8
0x3a2218503b: jmp.- rip = rax,zero [taken 0x0, seq 0x0] [eom] [2
bytes]
Basic block terminates with taken rip 0x0, not taken rip 0x0
End of basic block: rip 0x3a22185030 -> taken rip 0x0x0, not taken rip 0x0x0
Sequentially executing basic block 0x3a22185030 (6 uops), insn limit
9223372036854636263
Translating 0xffffffffff600400 (0 bytes valid) at 30241 cycles, 139547
commits
Translation crosses into invalid page (mfn 0): ripstart 0xffffffffff600400,
rip 0xffffffffff600403, faultaddr 0xffffffffff600400; expected 3 bytes but
only got 0 (next page 0xffffffffff601000)
translate: page fault at iteration 30241, 139547 commits: ripstart
0xffffffffff600400, rip 0xffffffffff600403: required 3 more bytes but only
fetched 0 bytes; page fault error code: [ present read kernel execute ]
Add bb 0x400c7bd0 (0xffffffffff600400, 3 bytes) to low page list 0x400cd0f0:
loc 0x400c0440:0
=====================================================================
BasicBlock 0xffffffffff600400 of type barrier: 3 bytes, 6 transops (6t 0m
0s, uses 0000000000000000000000000000000000000000000000000000001010011111),
1 refs, 0x1 taken, 0x1 not taken:
0xffffffffff600400: add ar1 = trace,0xffffffffff600400 [som] [3
bytes]
0xffffffffff600400: mov ar2 = zero,17
0xffffffffff600400: add selfrip = trace,0xffffffffff600400
0xffffffffff600400: add nextrip = trace,0xffffffffff600400
0xffffffffff600400: collcc tr0 = zf,cf,of [zco]
0xffffffffff600400: brp.+ rip = zero,zero [taken 0x1, seq 0x1]
[eom] [3 bytes]
Basic block terminates with taken rip 0x1, not taken rip 0x1
End of basic block: rip 0xffffffffff600400 -> taken rip 0x0x1, not taken rip
0x0x1
Sequentially executing basic block 0xffffffffff600400 (6 uops), insn limit
9223372036854636260
[vcpu 0] Barrier (#1 -> 0x700250a0 exec_page_fault called from
0xffffffffff600400; return to 0xffffffffff600400) at 30241 cycles, 139548
commits
Exception 14 (page fault) @ rip 0xffffffffff600400 (139548 commits, 30241
cycles)
Writing 0 bytes from rip 0xffffffffff600400 to test.dat...
Aborting...
Assert false failed in kernel.cpp:1007 (void
Context::propagate_x86_exception(byte, W32, Waddr)) at 30241 cycles, 30241
iterations, 139548 user commits
More information about the PTLsim-devel mailing list