Illegal instruction error (EvoRTS, AMD CPU, nouveau, Debian)

Illegal instruction error (EvoRTS, AMD CPU, nouveau, Debian)

Discuss everything related to running Spring on your chosen distribution of Linux.

Moderator: Moderators

Post Reply
phillipsjk
Posts: 24
Joined: 16 Jul 2014, 21:21

Illegal instruction error (EvoRTS, AMD CPU, nouveau, Debian)

Post by phillipsjk »

As described here I finally got EvolutionRTS installed. However the game aborts after the loading screen with an "Illegal Instruction" error. At least two people in that thread blamed the video drivers: because among other things, the Video RAM is listed as "unknown".

I am not claiming that the nouveau drivers are perfect, but I suspect the game was not compiled to properly support my CPU (the output of /proc/cpuinfo is listed in the first post of the other thread). I tried to run gdb to prove this after testing --safemode (command-line option) and xinerama (xserver option incompatible with xrandr). The watchdog errors in the attachment from the other thread were due to memory starvation. Incidentally, it took me two attampts to get a "clean boot" because XFCE "helpfully" restored iceweasel (~=firefox,with dozens of tabs) for me :P

On my first gdb attempt, the program was stopped on the error, but I had no access to the gdb window. I have to force-kill it. On my second attempt, I attached gdb to the running program ("sgring --safemode") from another window. Spring stopped responding to input at that point. Restarting the application with the run command meant that it eventually captured the mouse-pionter (and could not get anything useful from gdb). On a third attempt I logged in remotely and attached gdb to the running program. Restarting with gdb's "run" command failed with the error: "Fatal: Could not initialize SDL: Unable to open a console terminal".

Edit: it appears the libIL.so.1 library gets unfairly implicated. I downloaded the source-code of that library to look at the functions mentioned in the stack trace:

Code: Select all

james@torchlight:~/ilmbase-1.0.1$ grep -r 'PsdGetData' ./*
james@torchlight:~/ilmbase-1.0.1$ grep -r 'ReadRGB' ./*
james@torchlight:~/ilmbase-1.0.1$ grep -r 'ReadPSD' ./*
james@torchlight:~/ilmbase-1.0.1$ grep -r 'Industrial L' ./*
./COPYING:Copyright (c) 2006, Industrial Light & Magic, a division of Lucasfilm
./COPYING:    * Neither the name of Industrial Light & Magic nor the names of
./debian/copyright:// Copyright (c) 2005, Industrial Light & Magic, a division of Lucas
./debian/copyright:// *       Neither the name of Industrial Light & Magic nor the names of
./Half/half.cpp:// Copyright (c) 2002, Industrial Light & Magic, a division of Lucas
./Half/half.cpp:// *       Neither the name of Industrial Light & Magic nor the names of
...
I don't know where the people behind EvolutionRTS got their copy of weblobby, but I plan to try running gdb on that as well: since it produced the same error without touching my video card (AFAIK). (I am still unclear how/if weblobby is supposed to install spring.)

Edit2: weblobby stack trace:

Code: Select all

james@torchlight:~/weblobby-1.4-linux32/lib$ export LD_LIBRARY_PATH=$PWD
james@torchlight:~/weblobby-1.4-linux32/lib$ gdb weblobby
GNU gdb (GDB) 7.6.2 (Debian 7.6.2-1.1+b1)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/james/weblobby-1.4-linux32/lib/weblobby...done.
(gdb) run
Starting program: /home/james/weblobby-1.4-linux32/lib/weblobby 
warning: Could not load shared library symbols for linux-gate.so.1.
Do you need "set solib-search-path" or "set sysroot"?
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-linux-gnu/i686/cmov/libthread_db.so.1".

Program received signal SIGILL, Illegal instruction.
0xb35bd523 in ucnv_getDefaultName () from /home/james/weblobby-1.4-linux32/lib/libicuuc.so.51
(gdb) bt
#0  0xb35bd523 in ucnv_getDefaultName () from /home/james/weblobby-1.4-linux32/lib/libicuuc.so.51
#1  0xb44fa07d in ?? () from /home/james/weblobby-1.4-linux32/lib/libQt5Core.so.5
#2  0xb44f52a1 in QTextCodec::codecForLocale() () from /home/james/weblobby-1.4-linux32/lib/libQt5Core.so.5
#3  0xb43e9873 in ?? () from /home/james/weblobby-1.4-linux32/lib/libQt5Core.so.5
#4  0xb43e99c7 in ?? () from /home/james/weblobby-1.4-linux32/lib/libQt5Core.so.5
#5  0xb43f26f7 in QTextStream::QTextStream(_IO_FILE*, QFlags<QIODevice::OpenModeFlag>) ()
   from /home/james/weblobby-1.4-linux32/lib/libQt5Core.so.5
#6  0xb52e275d in ?? () from /home/james/weblobby-1.4-linux32/lib/libQt5Qml.so.5
#7  0xb7fed8ae in call_init (l=<optimized out>, argc=argc@entry=1, argv=argv@entry=0xbffff424, env=env@entry=0xbffff42c)
    at dl-init.c:78
#8  0xb7fed9a4 in call_init (env=0xbffff42c, argv=0xbffff424, argc=1, l=<optimized out>) at dl-init.c:36
#9  _dl_init (main_map=0xb7fff930, argc=1, argv=0xbffff424, env=0xbffff42c) at dl-init.c:126
#10 0xb7fdfd3f in _dl_start_user () from /lib/ld-linux.so.2
Attachments
infolog.cb-xinerama.txt
Info log running Sring from the springlobby launcher; using xinerama for video.

The video detection messages do not appear to have changed much (mostly expected since it is the same driver).
maximum texture size: 8192 (from 4096)
maximum SmoothPointSize: 255 (from 64)
maximum vec4 varying/attributes: 32/16 (from 8/16)
maximum drawbuffers: 8 (from 4)
number of UniformBufferBindings: 45 (506kB) (from 0)


Even though this was another clean boot, the watchdog timer did warn of a delay.
(19.49 KiB) Downloaded 12 times
infolog.safemode.txt
infolog after running Spring directly without the launcher; using the safemode option. (xrandr video)

It is a clean boot, eliminating watchdog timer errors/warnings.
(19.82 KiB) Downloaded 14 times
Last edited by phillipsjk on 19 Jul 2014, 22:37, edited 1 time in total.
User avatar
jK
Spring Developer
Posts: 2299
Joined: 28 Jun 2007, 07:30

Re: Illegal instruction error (EvoRTS, AMD CPU, nouveau, Deb

Post by jK »

It's not your fault, nor your system's.
It's the supplied engine/libs in EvoRTS. No idea what Forb did there but it seems just broken. He likely continued to use such tools that bundle all dependency libs etc. (this is not meant to be personal at all, I just think about what can cause such crashes). Or you use a system installed spring that failed cause of other reasons.

We (= engine devs) provide since some releases so called `static builds`, those will 100% work for you cause they have (nearly) no external dependencies (esp. no devIL).
You can simply download SpringWebLobby, that will download game/map/engine at runtime when you join a battleroom.
phillipsjk
Posts: 24
Joined: 16 Jul 2014, 21:21

Re: Illegal instruction error (EvoRTS, AMD CPU, nouveau, Deb

Post by phillipsjk »

Well, using the 32bit static binary linked here, I was able to run without throwing an "illegal instruction" error.

It was a slide-show, the AI killed itself, and the minimap obscured the results screen: but it was able to run.

The infolog.txt does not appear to be generated in the same place either.
You can simply download SpringWebLobby, that will download game/map/engine at runtime when you join a battleroom.
This scares me. Is the code sand-boxed in any way?

If the answer is "no," I essentially need a separate machine for gaming and playing with magic Internet money. (I actually plan to dual-boot; but have not set that up yet).
User avatar
Silentwings
Posts: 3720
Joined: 25 Oct 2008, 00:23

Re: Illegal instruction error (EvoRTS, AMD CPU, nouveau, Deb

Post by Silentwings »

This scares me. Is the code sand-boxed in any way? If the answer is "no," I essentially need a separate machine for gaming and playing with magic Internet money.
Yes, if you want to run any WIP project from an open source community, written by multiple authors many of whom never met one another, and you also want 100% assurance of the fitness/safety of running their code, yes you are going to need a seperate machine.

On the other hand, everyone else just runs it and nothing went wrong yet.
User avatar
CarRepairer
Cursed Zero-K Developer
Posts: 3359
Joined: 07 Nov 2007, 21:48

Re: Illegal instruction error (EvoRTS, AMD CPU, nouveau, Deb

Post by CarRepairer »

What are you afraid of? Spring has been around for about a decade now. Is there any online evidence that it is malicious? Did you compile the browser with which you're posting on this forum before using it?
User avatar
PicassoCT
Journeywar Developer & Mapper
Posts: 10450
Joined: 24 Jan 2006, 21:12

Re: Illegal instruction error (EvoRTS, AMD CPU, nouveau, Deb

Post by PicassoCT »

It can lead to nervous break-downs though, cause you have to play with players who like to insult and there is no moderation.

Paranoia is good, paranoia is health. If anything, the NSA has proven all paranoids right. But not all of the time. You have to distribute your security concerns according to logic and protection worthiness.

This is a toy. A communicative toy, but essentially a entertainment. To be concerned about its security is valid. You are free therefore to check on the code. There might even be some security holes, which a patch for would be gladly accepted.

But is nothing more. Fearing spring, is like being afraid that your washing machine is following you around. Within your bathroom it might even be true, but its still not evil.
phillipsjk
Posts: 24
Joined: 16 Jul 2014, 21:21

Re: Illegal instruction error (EvoRTS, AMD CPU, nouveau, Deb

Post by phillipsjk »

At the risk of giving the DM ideas, I am worried about losing money. A "toy" is not worth that much. I need to set up my "secure" work-station pronto :P

I don't normally store private keys on my machine, but windows of opportunity do exist :P

A note about "magic Internet money": security and correctness is more important than for traditional banking software. With traditional banking, just about every transaction can be reveresed in the case of fraud. This is not the case with "magic Internet money": all transactions are irriversible.
CarRepairer wrote:What are you afraid of? Spring has been around for about a decade now. Is there any online evidence that it is malicious? Did you compile the browser with which you're posting on this forum before using it?
Was going to say my browser does not execute arbitrary code from the Internet, but in fact is does by default. I have started using NoScript after disabling JavaScript in the options failed to stop running scripts in recent versions of firefox (mainly for performance reasons). Browser developers do make efforts to "sandbox" such scripts.
User avatar
Forboding Angel
Evolution RTS Developer
Posts: 14673
Joined: 17 Nov 2005, 02:43

Re: Illegal instruction error (EvoRTS, AMD CPU, nouveau, Deb

Post by Forboding Angel »

jK wrote:It's not your fault, nor your system's.
It's the supplied engine/libs in EvoRTS. No idea what Forb did there but it seems just broken.
Wrong. The only engine crap that evo includes in the steam install is the developer supplied minimal portable spring archives (in particular, spring 96.0) THAT ALL LOBBIES USE.

Try again.
User avatar
Jools
XTA Developer
Posts: 2816
Joined: 23 Feb 2009, 16:29

Re: Illegal instruction error (EvoRTS, AMD CPU, nouveau, Deb

Post by Jools »

Again I agree with the OP; security of applications should be taken seriously. But Spring is open source software, in this sense it is much more secure than closed source potentially NSA-ware. You can trust spring, we have discussions about what to do with sensitive data such as IP-addresses etc that are needed when you play a multiplayer game. As a matter of fact, in Spring, even a player's skill is considered a sensitive data (but this is really not near as sensitive imo as e.g. banking data).
User avatar
Jools
XTA Developer
Posts: 2816
Joined: 23 Feb 2009, 16:29

Re: Illegal instruction error (EvoRTS, AMD CPU, nouveau, Deb

Post by Jools »

phillipsjk wrote:At the risk of giving the DM ideas, I am worried about losing money. A "toy" is not worth that much. I need to set up my "secure" work-station pronto :P
No such thing. Maybe a type-writer, ask the german goverment. Anything that has at any time been connected to the internet has already been compromised.
phillipsjk
Posts: 24
Joined: 16 Jul 2014, 21:21

Re: Illegal instruction error (EvoRTS, AMD CPU, nouveau, Deb

Post by phillipsjk »

You are all mostly missing my point: I agree the software is open source, but that does not help if it is arbirarily downloaded from random hosts whenever a new map asks for it.

You can ask the government of Iran why "air gaps" don't always work. My goal setting up a "secure" workstation would be mainly to force any interested 3 and 4 letter agenies to actually install a hardware keylogger. Of course, that assumes that my network card does not have a back-door that scans the memory when sent a specially crafted packet :P
User avatar
PicassoCT
Journeywar Developer & Mapper
Posts: 10450
Joined: 24 Jan 2006, 21:12

Re: Illegal instruction error (EvoRTS, AMD CPU, nouveau, Deb

Post by PicassoCT »

How about security by obscurity? Just dont appear on there radar screens. Pretend to be a normal user, have a virtual machine where they can spy on, happily pretending to have everything on you ever after, and which is actually just a redirected DAU using his comp.

Also you need security measures at the doors and windows, to detect real world access to your hardware
If possible cauterize easy access ports on your mobile devices.

They are not gonna get us
User avatar
CarRepairer
Cursed Zero-K Developer
Posts: 3359
Joined: 07 Nov 2007, 21:48

Re: Illegal instruction error (EvoRTS, AMD CPU, nouveau, Deb

Post by CarRepairer »

phillipsjk wrote:I don't know where the people behind EvolutionRTS got their copy of weblobby,
Evo's link to the weblobby google drive downloads is the same location linked from the project site, it's maintained by one of our developers.

I'd like very much if you could get on the server so we could address the weblobby issue you're having in real time.

Really though, if you're restricting yourself with all these fences (using a P3, intentionally using an old video card, half a gig of ram, block javascript on any of the websites like evo, spring & steam, refusal to agree to spring server ToS, and whatever else) it should not be surprising that you're running into wall after wall. Not that you shouldn't keep trying if you're determined, I hope you get it to work. Just trying to keep things in perspective. You're missing a lot of fun games that people are playing as we speak!
phillipsjk
Posts: 24
Joined: 16 Jul 2014, 21:21

Re: Illegal instruction error (EvoRTS, AMD CPU, nouveau, Deb

Post by phillipsjk »

CarRepairer wrote:
phillipsjk wrote:I don't know where the people behind EvolutionRTS got their copy of weblobby,
Really though, if you're restricting yourself with all these fences (using a P3, intentionally using an old video card, half a gig of ram, block javascript on any of the websites like evo, spring & steam, refusal to agree to spring server ToS, and whatever else) it should not be surprising that you're running into wall after wall. Not that you shouldn't keep trying if you're determined, I hope you get it to work. Just trying to keep things in perspective. You're missing a lot of fun games that people are playing as we speak!
I should edit the post you are referring to: I am running an AMD Sempron with 1GB of RAM. My video card did meet the listed minimum requirements two days ago (they have been since updated). Edit: I actually bought the card "new"; I believe it actually included a coupon for a "better" card (past 90 days; all available cards appear to require PCI-E).

I refused to agree to the terms "as written": but agreed after verifiying that all of the de-duplicated copies were in fact the same.

As I have mentioned in another thread, it can take me 6 months or more to set up a machine: in part because I get bogged down in small details. So I may be able to play in 6 months after my "magic Internet money" activity is safely moved to a "secure" machine (actually another (encrypted) disk in the same machine).

Your observation are otherwise correct: I seem to do things just strangely enough to break things.
CarRepairer wrote: I'd like very much if you could get on the server so we could address the weblobby issue you're having in real time.
Not sure what you mean by "get on the server"... the program terminates before getting that far (see weblobby backtrace in OP (fudged a bit since gdb does not work on shell scripts)) Edit: unless you mean the undisclosed IRC server.
Last edited by phillipsjk on 22 Jul 2014, 09:36, edited 2 times in total.
User avatar
Silentwings
Posts: 3720
Joined: 25 Oct 2008, 00:23

Re: Illegal instruction error (EvoRTS, AMD CPU, nouveau, Deb

Post by Silentwings »

Edit: unless you mean the undisclosed IRC server.
Not sure what you mean by undisclosed, there is nothing hidden about it, but if you need details they are here: http://springrts.com/wiki/IrcBridge.
gajop
Moderator
Posts: 3051
Joined: 05 Aug 2009, 20:42

Re: Illegal instruction error (EvoRTS, AMD CPU, nouveau, Deb

Post by gajop »

Alternatively you can use this: http://webchat.springrts.com/
phillipsjk
Posts: 24
Joined: 16 Jul 2014, 21:21

Re: Illegal instruction error (EvoRTS, AMD CPU, nouveau, Deb

Post by phillipsjk »

It turns out my slide-show frame rates were due to using software rendering (Using the LLVM pipe). For xinerama (indirect rendering), nouveau is limited to GL version1.4. I repeated testing with xrandr: so that I could test hardware-accelarated direct rendering.

I found that indirect rendering was "more correct" than direct rendering. At the direction of somebody in #nouveau on freenode, I first forced the GL version to 1.4 (nouveau supports 2.1 for direct rendering with my hardware):

Code: Select all

$ export MESA_GL_VERSION_OVERRIDE=1.4
When that made no difference, I tried forcing indirect rendering in xrandr mode:

Code: Select all

$ export LIBGL_ALWAYS_INDIRECT=1
Note, to reverse that you need the command:

Code: Select all

$ unset LIBGL_ALWAYS_INDIRECT
If that made a difference (which it did), I was asked to run the application under aptitrace, then run the replay with direct rendering. Unfortunately, spring does not appear to like apitrace. Failing with:

Code: Select all

james@torchlight:/srv/james/spring-96.0$ /srv/james/apitrace/build/apitrace trace --api=gl ./spring --safemode
apitrace: loaded
[ParseCmdLine] command-line args: "./spring --safemode"
Using configuration source: "/srv/james/spring-96.0/springsettings.cfg"
Using additional configuration source: "/home/james/.config/spring/springsettings.cfg"
...
Error: [ErrorMessageBox][3]
Error: [ErrorMessageBox][4]
Fatal: Spring crashed
Spring has crashed:
Aborted (SIGABRT).

A stacktrace has been written to:
  /srv/james/spring-96.0/infolog.txt
apitrace: loaded
Edit2: I ran diff on the output of glxinfo between the two modes (direct vs indirect redendering). Indirect rendering omits the following extensions:

Code: Select all

GLX_MESA_swap_control, GLX_OML_sync_control, GLX_SGI_video_sync
GL_AMD_shader_trinary_minmax, GL_ANGLE_texture_compression_dxt3, GL_ANGLE_texture_compression_dxt5, GL_APPLE_vertex_array_object, GL_ARB_ES2_compatibility,
GL_ARB_clear_buffer_object, GL_ARB_copy_buffer, GL_ARB_debug_output, GL_ARB_depth_clamp,
GL_ARB_draw_elements_base_vertex, GL_ARB_explicit_attrib_location,
GL_ARB_fragment_coord_conventions,GL_ARB_fragment_shader, 
GL_ARB_get_program_binary, GL_ARB_half_float_pixel,
GL_ARB_half_float_vertex, GL_ARB_internalformat_query,
GL_ARB_invalidate_subdata, GL_ARB_map_buffer_alignment,
GL_ARB_map_buffer_range, GL_ARB_occlusion_query2, GL_ARB_pixel_buffer_object,
GL_ARB_provoking_vertex, GL_ARB_robustness, GL_ARB_sampler_objects,
GL_ARB_shader_objects, GL_ARB_shading_language_100, GL_ARB_sync,
GL_ARB_texture_mirror_clamp_to_edge,  GL_ARB_texture_storage, GL_ARB_texture_swizzle, 
GL_ARB_timer_query, GL_ARB_vertex_array_bgra,
GL_ARB_vertex_array_object, GL_ARB_vertex_attrib_binding,
GL_ARB_vertex_buffer_object, GL_ARB_vertex_shader,
GL_ATI_blend_equation_separate, GL_ATI_separate_stencil,
GL_EXT_compiled_vertex_array,
GL_EXT_framebuffer_blit, GL_EXT_framebuffer_multisample,
GL_EXT_framebuffer_multisample_blit_scaled, GL_EXT_gpu_program_parameters,
GL_EXT_packed_depth_stencil, GL_EXT_pixel_buffer_object, GL_EXT_provoking_vertex,
GL_EXT_texture_cube_map, GL_EXT_texture_sRGB,
GL_EXT_texture_sRGB_decode, GL_EXT_texture_snorm, GL_EXT_texture_swizzle,
GL_EXT_timer_query, GL_EXT_vertex_array_bgra,
GL_IBM_multimode_draw_arrays, GL_IBM_rasterpos_clip, GL_KHR_debug,
GL_MESA_texture_signed_rgba, GL_MESA_window_pos, 
GL_NV_conditional_render,  GL_NV_packed_depth_stencil, GL_NV_primitive_restart,
GL_NV_vdpau_interop, GL_OES_EGL_image, GL_OES_read_format, GL_S3_s3tc,
The following functions appear to be ommited in direct rendering mode:

Code: Select all

GL_ATIX_texture_env_combine3,
Edit3: Bisection of the suspect extentions (with MESA_EXTENSION_OVERRIDE) failed. Glxinfo gave errors such as:

Code: Select all

Mesa 10.1.4 implementation error: Trying to disable a permanently enabled extension: GL_EXT_compiled_vertex_array
Edit: for the people on dial-up, the "less-correct" screen-shot has the ground textures replaced with a peach colour.
Attachments
evo_indirect_GL1.4.png
"More correct" indirect rendering
(1.05 MiB) Not downloaded yet
evo_direct_GL1.4.png
"Less correct" direct rendering
(419.89 KiB) Not downloaded yet
infolog.apitrace.txt
Messages emmited when trying to run spring under apitrace.
(6.43 KiB) Downloaded 16 times
abma
Spring Developer
Posts: 3798
Joined: 01 Jun 2009, 00:08

Re: Illegal instruction error (EvoRTS, AMD CPU, nouveau, Deb

Post by abma »

first you should distinguish between a weblobby and spring crash, both are mostly independant.

about the SIGILL crash:
spring crashes in libIL.so.1, this looks like either the game you load is broken or the library itself.

can you try to reinstall libdevil?


about the opengl problems:

in spring 96.0 you can try to set ReportGLErrors = 1, this maybe shows some errors before the crash.

in summary it looks like "Gallium 0.4 on NV4A" seems to not to be able to run spring. not sure if this is because of the GFX card is to old/lacks some features or mesa/noveau is to buggy.
Post Reply

Return to “Linux”