rbowler / spinhawk

spinhawk is the repository for the production-quality version (release 3.xx) of the Hercules mainframe virtualization platform
Other
100 stars 40 forks source link

Illegal instruction in panel_display_r () from /usr/local/lib/libherc.so #38

Closed ASchmidt1 closed 9 years ago

ASchmidt1 commented 9 years ago

Fresh OpenSUSE 13.2, newly built Hercules, unable to start because of illegal instruction:

(gdb) run Starting program: /usr/local/bin/hercules Got object file from memory but can't read symbols: File truncated. Missing separate debuginfos, use: zypper install glibc-debuginfo-2.19-16.9.1.x86_64 [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". [New Thread 0x7ffff7fd6700 (LWP 5904)] Hercules Version 3.11 (c)Copyright 1999-2010 by Roger Bowler, Jan Jaeger, and others Built on Apr 20 2015 at 17:41:57 Build information: Modes: S/370 ESA/390 z/Arch Max CPU Engines: 8 Using setresuid() for setting privileges Dynamic loading support Using shared libraries HTTP Server support No CCKD BZIP2 support No ZLIB support Regular Expressions support Automatic Operator support No HET BZIP2 support Machine dependent assists: cmpxchg1 cmpxchg4 cmpxchg8 Running on maywood-lx-0002 Linux-3.16.7-7-desktop.#1 SMP PREEMPT Wed Dec 17 18:00:44 UTC 2014 (762f x86_64 MP=4 HHCHD018I Loadable module directory is /usr/local/lib/hercules Crypto module loaded (c) Copyright Bernard van der Helm, 2003-2010 Active: Message Security Assist Message Security Assist Extension 1 Message Security Assist Extension 2 Message Security Assist Extension 3 Message Security Assist Extension 4 [New Thread 0x7ffff560f700 (LWP 5905)] HHCHT001I HTTP listener thread started: tid=7FFFF560F700, pid=5900 HHCHT013I Using HTTPROOT directory "/usr/local/share/hercules/" HHCHT006I Waiting for HTTP requests on port 8081 HHCCF065I Hercules: tid=7FFFF7FD7740, pid=5900, pgid=5900, priority=0 [New Thread 0x7ffff4aee700 (LWP 5906)] HHCTE001I Console connection thread started: tid=7FFFF4AEE700, pid=5900 HHCTE003I Waiting for console connection on port 3270 [New Thread 0x7ffff49ed700 (LWP 5907)] [New Thread 0x7ffff48ec700 (LWP 5908)] HHCCP002I CPU0000 thread started: tid=7FFFF49ED700, pid=5900, priority=15 HHCTT002I Timer thread started: tid=7FFFF48EC700, pid=5900, priority=0 HHCCP003I CPU0000 architecture mode ESA/390 [New Thread 0x7ffff47eb700 (LWP 5909)] [New Thread 0x7ffff46ea700 (LWP 5910)]

Program received signal SIGILL, Illegal instruction. 0x00007ffff78c9196 in panel_display_r () from /usr/local/lib/libherc.so (gdb) bt full

0 0x00007ffff78c9196 in panel_display_r () from /usr/local/lib/libherc.so

No symbol table info available.

1 0x00007ffff78bc4c5 in impl () from /usr/local/lib/libherc.so

No symbol table info available.

2 0x0000000000401992 in main ()

No symbol table info available.

rbowler commented 9 years ago

Was this compiled with gcc 4.9?

There have been some reports of sigill and sigsegv when Hercules is compiled with gcc 4.9:

https://groups.yahoo.com/neo/groups/hercules-390/conversations/messages/75121

ASchmidt1 commented 9 years ago

I had noticed that, however, this is the GCC that SUSE ships: gcc version 4.8.3 20140627 [gcc-4_8-branch revision 212064](SUSE Linux)

rbowler commented 9 years ago

You could try compiling it with -O2 instead of -O3 and see if that changes anything.

ASchmidt1 commented 9 years ago

Actually, I noticed in the config.log that configure had added ADDITIONAL optimization options BEYOND -03. In my specific case, the problem was "-march=k8". Basically, "configure" incorrectly thought this was an AMD K8 processor. So, I omitted just that one option and instead used:

./configure --enable-optimization="-O3 -fomit-frame-pointer -fno-strict-aliasing" make clean make sudo make install

and THAT fixed it.