-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://reviews.gem5.org/r/2430/#review5439
-----------------------------------------------------------


This patch seems to be broken for X86 when restoring from checkpoints. A sample 
test crashes with segmentation fault. Here are the steps:
0. Sample test program does int array manipulation and creates a checkpoint 
before computation.
1. Run in se mode with --cpu-type=atomic --mem-type=simple_mem to keep things 
simple. This will create the checkpoint.
2. Run in se mode with --cpu-type=atomic --mem-type=simple_mem -r 1 and it will 
run fine.
3. Now run

gem5.opt.cxx m5out/config.ini -r m5out/cpt.XYZ

and it will seg fault right away at:

Simulate:: Entering event queue @ 7088000. Starting simulation...
EventQueue (MainEventQueue-0)::schedule event (Event_21) for 
18446744073709551615
EventQueue (MainEventQueue-0)::serviceOne event named Event_8 at 7088500
Program received signal SIGSEGV, Segmentation fault.
getPage (addr=4195355, this=0x0) at build/X86/cpu/decode_cache.hh:86
86              if (recent[0] != pageMap.end()) {
(gdb)

Trying it with other cpu-type and other mem-type results in similar seg faults. 
It looks like this patch is missing some state initialization or some other 
checkpoint restore functionality for X86.

- Cagdas Dirik


On Oct. 9, 2014, 2:32 p.m., Andreas Hansson wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.gem5.org/r/2430/
> -----------------------------------------------------------
> 
> (Updated Oct. 9, 2014, 2:32 p.m.)
> 
> 
> Review request for Default.
> 
> 
> Repository: gem5
> 
> 
> Description
> -------
> 
> Changeset 10440:faea9dd0b3b1
> ---------------------------
> config: Add the ability to read a config file using C++ and Python
> 
> This patch adds the ability to load in config.ini files generated from
> gem5 into another instance of gem5 built without Python configuration
> support. The intended use case is for configuring gem5 when it is a
> library embedded in another simulation system.
> 
> A parallel config file reader is also provided purely in Python to
> demonstrate the approach taken and to provided similar functionality
> for as-yet-unknown use models. The Python configuration file reader
> can read both .ini and .json files.
> 
> C++ configuration file reading:
> 
> A command line option has been added for scons to enable C++ configuration
> file reading: --with-cxx-config
> 
> There is an example in util/cxx_config that shows C++ configuration in action.
> util/cxx_config/README explains how to build the example.
> 
> Configuration is achieved by the object CxxConfigManager. It handles
> reading object descriptions from a CxxConfigFileBase object which
> wraps a config file reader. The wrapper class CxxIniFile is provided
> which wraps an IniFile for reading .ini files. Reading .json files
> from C++ would be possible with a similar wrapper and a JSON parser.
> 
> After reading object descriptions, CxxConfigManager creates
> SimObjectParam-derived objects from the classes in the (generated with this
> patch) directory build/ARCH/cxx_config
> 
> CxxConfigManager can then build SimObjects from those SimObjectParams (in an
> order dictated by the SimObject-value parameters on other objects) and bind
> ports of the produced SimObjects.
> 
> A minimal set of instantiate-replacing member functions are provided by
> CxxConfigManager and few of the member functions of SimObject (such as drain)
> are extended onto CxxConfigManager.
> 
> Python configuration file reading (configs/example/read_config.py):
> 
> A Python version of the reader is also supplied with a similar interface to
> CxxConfigFileBase (In Python: ConfigFile) to config file readers.
> 
> The Python config file reading will handle both .ini and .json files.
> 
> The object construction strategy is slightly different in Python from the C++
> reader as you need to avoid objects prematurely becoming the children of other
> objects when setting parameters.
> 
> Port binding also needs to be strictly in the same port-index order as the
> original instantiation.
> 
> 
> Diffs
> -----
> 
>   SConstruct 148b96b7bc77 
>   configs/example/read_config.py PRE-CREATION 
>   src/SConscript 148b96b7bc77 
>   src/python/m5/SimObject.py 148b96b7bc77 
>   src/python/m5/params.py 148b96b7bc77 
>   src/sim/SConscript 148b96b7bc77 
>   src/sim/cxx_config.hh PRE-CREATION 
>   src/sim/cxx_config.cc PRE-CREATION 
>   src/sim/cxx_config_ini.hh PRE-CREATION 
>   src/sim/cxx_config_ini.cc PRE-CREATION 
>   src/sim/cxx_manager.hh PRE-CREATION 
>   src/sim/cxx_manager.cc PRE-CREATION 
>   util/cxx_config/Makefile PRE-CREATION 
>   util/cxx_config/README PRE-CREATION 
>   util/cxx_config/main.cc PRE-CREATION 
>   util/cxx_config/stats.hh PRE-CREATION 
>   util/cxx_config/stats.cc PRE-CREATION 
> 
> Diff: http://reviews.gem5.org/r/2430/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Andreas Hansson
> 
>

_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to