Hi,
I spent a bit of time tracking down a problem like this on 32-bit Cygwin -- I
mentioned this on the list a while back, but I'm not sure what the conclusion
was about where to fix this (e.g., if it was a Cygwin bug or a gem5 bug -- I
worked around it by switching to Linux in a VM, still all 32-bit).
Here are the details:
It looked like some updates to the flags field defined on StaticInstBase were
being truncated. I was seeing IsLastMicroop being lost, leading to
assert-fails (m5.opt) / crashes (m5.fast).
decoder.cc was generating uint64_t initializers for the flags and these were
being passed intact to the X86MicroopBase constructor in microop.hh. The
constructor then initialized the flags bitset by using:
flags |= setFlags;
(where flags is a std::bitset, and setFlags is a uint64_t).
I think the implementation of std::bitset I had with Cygwin was only taking the
bottom 32-bits, rather than splitting a uint64_t over two 32-bit words.
I meant to look into this further, and see whether this was a bug in
std::bitset, or in M5's use of it... but I was travelling, switched to using
Virtual PC, and unfortunately forgot to get back to the problem.
--Tim
-----Original Message-----
From: [email protected] [mailto:[email protected]] On
Behalf Of Gabe Black
Sent: 02 September 2011 14:35
To: gem5 users mailing list
Subject: Re: [gem5-users] Invalid microop
I would rather fix bugs than document them. It's probably something
silly since we rarely run on 32 bit machines.
Gabe
On 09/01/11 23:25, Mahmood Naderan wrote:
> I suggest adding an entry in FAQ about this problem.
> If you run X86_FS on a 32 bit host, you will get "panic: Invalid microop!"
>
> On 9/1/11, [email protected] <[email protected]> wrote:
>> Hi Gabe!
>>
>> The problem was occurring on Ubuntu 11.4 32-bit version. Now I installed
>> Ubuntu 11.4 64-bit version with the same setup and it works! The setup is
>> the following:
>>
>> scons 2.0.1
>> swig 1.3.40
>> gcc 4.5.2
>> python 2.7
>>
>> So the only difference was OS (32-bit not working and now with 64-bit
>> working). The machine is Pentium Dual Core E5400. Hope this helps!
>>
>> Kind regards,
>> Borislav Nikolic
>>
>> On Thu, 01 Sep 2011 04:43:58 -0700, Gabe Black <[email protected]>
>> wrote:
>>> A number of people have had problems like this, so if we can figure out
>>> what's going on that would be great. The basic problem is that one of
>>> the very first microops, maybe the first or only one or two later, is
>>> not valid for some reason. Please describe your setup, including
>>> versions of your compiler, etc, if you're on a 32 bit machine, the
>>> version of gem5, where you got your kernel, etc. If you can, try this
>>> again on a different computer with a different setup and see if it works
>>> there. Also run with --debug-flags=Exec,ExecMacro and see what it's
>>> trying to execute. gdb might help too.
>>>
>>> Gabe
>>>
>>> On 09/01/11 00:03, Mahmood Naderan wrote:
>>>> Are you using 32 bit host?
>>>>
>>>> On 8/31/11, [email protected] <[email protected]> wrote:
>>>>> Dear GEM5 users,
>>>>>
>>>>> I was able to build ALPHA_FS architecture and boot
>>>>> linux on it. However, when I tried to do the same with X86_FS (after
>>>>> downloading x86 binaries), I got the following error:
>>>>>
>>>>>
>>>>> borni@borni-G31M-ES2L:~/gem5$ ./build/X86_FS/m5.opt --verbose
>>>>> configs/example/fs.py
>>>>> --kernel=/home/borni/Desktop/X86_GEM5/binaries/x86_64-vmlinux-2.6.22.9
>>>>> gem5
>>>>> Simulator System. http://gem5.org
>>>>> gem5 is copyrighted software; use the
>>>>> --copyright option for details.
>>>>>
>>>>> gem5 compiled Aug 29 2011 13:01:34
>>>>> gem5
>>>>> started Aug 31 2011 18:01:01
>>>>> gem5 executing on borni-G31M-ES2L
>>>>> command
>>>>> line: ./build/X86_FS/m5.opt --verbose configs/example/fs.py
>>>>> --kernel=/home/borni/Desktop/X86_GEM5/binaries/x86_64-vmlinux-2.6.22.9
>>>>> warning:
>>>>> add_child('terminal'): child 'terminal' already has parent
>>>>> Global frequency
>>>>> set at 1000000000000 ticks per second
>>>>> info: kernel located at:
>>>>> /home/borni/Desktop/X86_GEM5/binaries/x86_64-vmlinux-2.6.22.9
>>>>> 0: rtc:
>>>>> Real-time clock set to Sun Jan 1 00:00:00 2012
>>>>> Listening for com_1
>>>>> connection on port 3456
>>>>> warn: Reading current count from inactive timer.
>>>>> 0:
>>>>> system.remote_gdb.listener: listening for remote gdb #0 on port 7000
>>>>> ****
>>>>> REAL SIMULATION ****
>>>>> info: Entering event queue @ 0. Starting
>>>>> simulation...
>>>>> panic: Invalid microop!
>>>>> @ cycle
>>>>> 1000
>>>>> [invoke:build/X86_FS/arch/generic/debugfaults.hh, line 93]
>>>>> Memory
>>>>> Usage: 232296 KBytes
>>>>> Program aborted at cycle 1000
>>>>> Aborted
>>>>>
>>>>> I found two
>>>>> similar questions raised on this list couple of months ago, but nobody
>>>>> replied. I tied with builds ".opt", ".fast", ".debug" with both GEM5
>>>>> stable
>>>>> and development versions. Always the same result. Am I doing something
>>>>> wrong?
>>>>>
>>>>> Kind regards,
>>>>>
>>>>> Borislav Nikolic
>>>> _______________________________________________
>>>> gem5-users mailing list
>>>> [email protected]
>>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>> _______________________________________________
>>> gem5-users mailing list
>>> [email protected]
>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>> _______________________________________________
>> gem5-users mailing list
>> [email protected]
>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>
> _______________________________________________
> gem5-users mailing list
> [email protected]
> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users