[PTLsim-devel] Runtime Exception
Matt T. Yourst
Sun Apr 1 16:37:18 EDT 2007
On Friday 30 March 2007 08:14, Chen, Yu wrote:
> Hi all,
>
> I'm new to ptlsim. When start to use the simulator, I got a runtime
>
> exception. Here is the output:
> > ./ptlsim /bin/ls -l
>
> //
> // PTLsim: Cycle Accurate x86-64 Simulator
> // Copyright 1999-2007 Matt T. Yourst <yourst at yourst.com>
> //
> // Revision 217 (2007-03-18)
> // Built Mar 30 2007 18:03:22 on bjlc0043 using gcc-3.3
> // Running on bjlc0043.pds01
> //
> // Arguments: /bin/ls -l
> // Thread 27619 is running in 64-bit x86-64 mode
> //
>
> Switching to simulation core 'ooo'...
> Stopping after 9223372036854775807 commits
> Exception 14 (page fault) @ rip 0xffffffffff600000 (1046788 commits,
> 1192441 cycles)
> Aborting...
> Aborted by caller 0x7000a3cf
>
> However, the simulator run successfully with arguments "/bin/ls" (without
> the "-l"). The system is built with Suse 9.3 and kernal 2.6.16, on a Conroe
> processor, and em64t enabled. Can anyone tell me why this exception raised
> and how to fix the error? Thanks in advance.
>
This address (0xffffffffff600000) is inside in the vsyscall page, which is
mapped into every process by the kernel and contains the syscall stubs.
That page is supposed to be listed in /proc//maps so PTLsim can mark it
as valid, but apparently that isn't happening for some reason. Maybe the SuSE
9.3 custom kernel (2.6.16) is non-standard or has patches applied that
cause /proc//maps to have a different format than PTLsim expects.
I tried this on our SuSE 9.3 test system (updated to kernel 2.6.20), and it
works fine, so apparently this is dependent on the older kernel version.
However, I know we've tried it with 2.6.16 as well without problems, so it
must be something specific to the SuSE kernel.
Can you send me your ptlsim.log file, or at least the part starting
with "resync_with_process_maps: found X memory map extents"?
It would also be helpful to have the contents of /proc//maps for any
64-bit process on your machine. It doesn't matter which process you use - as
root, you can run "cat /proc/1/maps" to get the init process maps. This will
tell me if the maps file has some non-standard format.
The only thing I can think of is that some SuSE kernels have special patches
applied that hide the contents of /proc//maps (this is supposed to be a
security measure against code injection attacks on a server, but development
machines should not have this restriction enabled).
- Matt
-------------------------------------------------------
Matt T. Yourst yourst at cs.binghamton.edu
Binghamton University, Department of Computer Science
-------------------------------------------------------
More information about the PTLsim-devel mailing list