Ask Your Question
0

llibrostime i386 uses illegal instruction (fucomip)

asked 2014-02-01 02:38:03 -0600

Hi,

I am trying to run ROS Hydro on an Intel Galileo running Debian. I've installed ROS, the i386 version, and it's giving me an Illegal Instruction error when running the listener cpp tutorial. It appears the offending code is in librostime:

$ gdb devel/lib/beginner_tutorials/talker 
...
Program received signal SIGILL, Illegal instruction.
0xb7931195 in ros::DurationBase<ros::wallduration>::fromSec(double) () from /opt/ros/hydro/lib/librostime.so
(gdb) backtrace
#0  0xb7931195 in ros::DurationBase<ros::wallduration>::fromSec(double) () from /opt/ros/hydro/lib/librostime.so 
#1  0xb7e64d1a in ros::WallDuration::WallDuration(double) () from /opt/ros/hydro/lib/libroscpp.so
#2  0xb7ea1ee0 in ?? () from /opt/ros/hydro/lib/libroscpp.so
#3  0xb7ea1f82 in ?? () from /opt/ros/hydro/lib/libroscpp.so
#4  0xb7ff0202 in ?? () from /lib/ld-linux.so.2
#5  0xb7ff02d9 in ?? () from /lib/ld-linux.so.2
#6  0xb7fe287f in ?? () from /lib/ld-linux.so.2
(gdb) display/i $pc
1: x/i $pc
=&gt; 0xb7931195 &lt;_ZN3ros12DurationBaseINS_12WallDurationEE7fromSecEd+37&gt;: fucomip %st(1),%st

It looks like it's using the fucomip instruction, which was added with the Pentium Pro.

I'll try to figure out how to build this from source... but is this a configuration error in the build farm? </ros::wallduration></ros::wallduration>

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2014-02-01 06:01:59 -0600

Dirk Thomas gravatar image

This is not a configuration error on the build farm. The build farm has to make a decision about the minimum supported instruction set and uses the defaults defined on the compiling system. It is very likely that a Pentium Pro is not cover by that due to its age.

You should be easily able to build the packages you need from source following the instructions on the wiki: http://wiki.ros.org/hydro/Installatio...

edit flag offensive delete link more

Comments

Dirk, Aptitude tells me this is an i386 package. Doesn't that mean it should only include 386 instructions? If that's true, fucomip should not occur, because that's not an i386 instruction. Or am I misunderstanding something?

Jon Stephan gravatar imageJon Stephan ( 2014-02-01 07:41:19 -0600 )edit

"i386" does not stand for the 386 instruction set. It indicates 32-bit binaries. The opposite one is "amd64" for 64-bit binaries.

Dirk Thomas gravatar imageDirk Thomas ( 2014-02-01 11:54:40 -0600 )edit

Hmmm... in gcc it does: http://gcc.gnu.org/onlinedocs/gcc-3.3.6/gcc/i386-and-x86_002d64-Options.html, there are i386 through i686 flags If i386 is actually i686 in ROS, that's unfortunate. The Galileo board can support i586, but not i686, i'd hate to have to build from source when it's so close.

Jon Stephan gravatar imageJon Stephan ( 2014-02-01 16:10:23 -0600 )edit
1

Ubuntu officially dropped support for i386, i486, or i586, with 10.10. I can't find the actual press release, but this is noted for the 12.04 notes: https://help.ubuntu.com/12.04/installation-guide/i386/hardware-supported.html

fergs gravatar imagefergs ( 2014-02-01 16:22:16 -0600 )edit

Ok, I see, that's too bad.

Jon Stephan gravatar imageJon Stephan ( 2014-02-02 07:28:31 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2014-02-01 02:38:03 -0600

Seen: 457 times

Last updated: Feb 01 '14