Hello, I have a solution for the second problem. Please find it below, as it might help someone: - First problem, host system was 32bit and the img was 64 bit. - Once I compiled the application on 64bit Linux, the system complained that the kernel version on img is too old compared to the one where the binary has been compiled. - Compiling the application dynamically solved the problem, but I might need in the future some libs from the host so I am not sure how that will go.
On Thu, Aug 18, 2016 at 9:08 PM, Jason Lowe-Power <[email protected]> wrote: > Hi Jasmin, > > The first problem seems to be a memory corruption bug in gem5. I'd suggest > compiling in debug mode (without tcmalloc!!!) and running with valgrind, as > long as it doesn't take too long to hit the problem. > > For the second problem: I've never seen that before. There's no reason that > gem5 shouldn't be able to run a static binary. Again, I would probably try > to use a debugger or some debug flags to try to figure out what was going > on. > > Good luck! > Jason > > On Thu, Aug 18, 2016 at 10:23 AM Jasmin Jahic <[email protected]> > wrote: > > > Hello, > > > > I faced two situations with gem5, which I was able to reproduce on 2 > > different machines. It might be a bug, or it might be that I am doing > > something wrong, but would like to report it in any case. > > > > 1. Running gem5 from the developers version of gem5 in FS mode, for x86 > > with gem5.opt for the images present on http://www.gem5.org/Download > > doesn't work (see the details below). Versions gem5.fast and gem5.debug > > work well. Also, all versions work well in the gem5-stable version. > > 2. Compiling a static simple program on host and transferring the binary > to > > the gem5 fs image, doesn't work on x86 (see the details below). The > system > > on image is a Gentoo Linux 2.6.22.9. I tried to compile the software on > > Linux Mint 18 Sarah and Ubuntu 12.04. > > > > 1. Details: > > scons build/X86/gem5.opt -j8 > > -- Works fine > > > > Start script: > > export M5_PATH="/home/me/workspaceGEM5/gem5-full- > system-files/x86-system" > > > > build/X86/gem5.opt \ > > configs/example/fs.py \ > > --mem-size=512MB \ > > --kernel=x86_64-vmlinux-2.6.22.9 \ > > > > Console output: > > Global frequency set at 1000000000000 ticks per second > > warn: DRAM device capacity (8192 Mbytes) does not match the address range > > assigned (512 Mbytes) > > info: kernel located at: > > > > /home/me/workspaceGEM5/gem5-full-system-files/x86-system/ > binaries/x86_64-vmlinux-2.6.22.9 > > Listening for com_1 connection on port 3456 > > 0: rtc: Real-time clock set to Sun Jan 1 00:00:00 2012 > > 0: system.remote_gdb.listener: listening for remote gdb #0 on port 7000 > > warn: Reading current count from inactive timer. > > warn: ClockedObject: More than one power state change request encountered > > within the same simulation tick > > **** REAL SIMULATION **** > > info: Entering event queue @ 0. Starting simulation... > > warn: Don't know what interrupt to clear for console. > > *** stack smashing detected ***: build/X86/gem5.opt terminated > > Program aborted at tick 7027708000 > > --- BEGIN LIBC BACKTRACE --- > > build/X86/gem5.opt(_Z15print_backtracev+0x1c)[0x84db31c] > > build/X86/gem5.opt(_Z12abortHandleri+0x3e)[0x84ea65e] > > [0xb77a7c14] > > [0xb77a7c31] > > /lib/i386-linux-gnu/libc.so.6(gsignal+0x39)[0xb7037e89] > > /lib/i386-linux-gnu/libc.so.6(abort+0x157)[0xb70393e7] > > /lib/i386-linux-gnu/libc.so.6(+0x6725c)[0xb707325c] > > /lib/i386-linux-gnu/libc.so.6(__fortify_fail+0x68)[0xb71037c8] > > /lib/i386-linux-gnu/libc.so.6(+0xf7758)[0xb7103758] > > > > build/X86/gem5.opt(_ZNK10X86ISAInst12cvtfp80h_ > int7executeEP11ExecContextPN5Trace10InstRecordE+0x115)[0x92ed9f5] > > build/X86/gem5.opt(_ZN15AtomicSimpleCPU4tickEv+0x25d)[0x844557d] > > build/X86/gem5.opt(_ZN10EventQueue10serviceOneEv+0x94)[0x84e3bc4] > > build/X86/gem5.opt(_Z9doSimLoopP10EventQueue+0x78)[0x8507298] > > build/X86/gem5.opt(_Z8simulatey+0x257)[0x8507887] > > build/X86/gem5.opt[0x855c2cc] > > > > /usr/lib/i386-linux-gnu/libpython2.7.so.1.0(PyCFunction_Call+0xbe)[ > 0xb74eb1fe] > > > > /usr/lib/i386-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x6628)[ > 0xb7488308] > > > > /usr/lib/i386-linux-gnu/libpython2.7.so.1.0(PyEval_ > EvalCodeEx+0x80e)[0xb75c281e] > > > > /usr/lib/i386-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x5dd1)[ > 0xb7487ab1] > > > > /usr/lib/i386-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x5ebe)[ > 0xb7487b9e] > > > > /usr/lib/i386-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x5ebe)[ > 0xb7487b9e] > > > > /usr/lib/i386-linux-gnu/libpython2.7.so.1.0(PyEval_ > EvalCodeEx+0x80e)[0xb75c281e] > > > > /usr/lib/i386-linux-gnu/libpython2.7.so.1.0(PyEval_ > EvalCode+0x2e)[0xb7481b3e] > > > > /usr/lib/i386-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x7e52)[ > 0xb7489b32] > > > > /usr/lib/i386-linux-gnu/libpython2.7.so.1.0(PyEval_ > EvalCodeEx+0x80e)[0xb75c281e] > > > > /usr/lib/i386-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x5dd1)[ > 0xb7487ab1] > > > > /usr/lib/i386-linux-gnu/libpython2.7.so.1.0(PyEval_ > EvalCodeEx+0x80e)[0xb75c281e] > > > > /usr/lib/i386-linux-gnu/libpython2.7.so.1.0(PyEval_ > EvalCode+0x2e)[0xb7481b3e] > > > > /usr/lib/i386-linux-gnu/libpython2.7.so.1.0(PyRun_ > StringFlags+0x68)[0xb7512498] > > build/X86/gem5.opt(_Z6m5MainiPPc+0x71)[0x84e9ee1] > > build/X86/gem5.opt(main+0x3c)[0x82fd39c] > > /lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xf7)[0xb7024637] > > --- END LIBC BACKTRACE --- > > Aborted > > > > 2. Details: > > > > Software: > > > > #include <stdio.h> > > int main() > > { > > printf("Hello world!\n"); > > return 0; > > } > > > > Makefile: > > > > SRC = test.c > > GCC = g++ > > GCCFLAGS = -static > > OUT = testBinary > > > > testBinary : test.o > > $(GCC) $(GCCFLAGS) -o $(OUT) test.o > > > > test.o : test.c > > $(GCC) -c -o $@ $< > > > > clean: > > rm -f *.o $(OUT) > > > > - Mount the image and copy the testBinary to /usr. > > - Unmount image > > - On the gem5 fs, run: cd /usr; ./testBinary > > > > Console output: > > gem5.opt: build/X86/arch/x86/tlb.cc:348: Fault > > X86ISA::TLB::translate(RequestPtr, ThreadContext*, > BaseTLB::Translation*, > > BaseTLB::Mode, bool&, bool): Assertion `entry' failed. > > Program aborted at cycle 84398750506500 > > Aborted > > > > The same output is generated in gem5.debug, regardless if I use gem5 > latest > > or gem5-stable version. The version gem5.fast reports an > > error:"Segmentation fault". > > > > Best regards, > > Jasmin > > _______________________________________________ > > gem5-dev mailing list > > [email protected] > > http://m5sim.org/mailman/listinfo/gem5-dev > > > _______________________________________________ > gem5-dev mailing list > [email protected] > http://m5sim.org/mailman/listinfo/gem5-dev > _______________________________________________ gem5-dev mailing list [email protected] http://m5sim.org/mailman/listinfo/gem5-dev
