Immediate Segfault [Linux x86]

Same here, although with 32-bit, Ubuntu 11.04:

Program received signal SIGSEGV, Segmentation fault.
__memcpy_ssse3 () at ../sysdeps/i386/i686/multiarch/memcpy-ssse3.S:195
195     ../sysdeps/i386/i686/multiarch/memcpy-ssse3.S: No such file or directory.
        in ../sysdeps/i386/i686/multiarch/memcpy-ssse3.S
(gdb) bt
#0  __memcpy_ssse3 () at ../sysdeps/i386/i686/multiarch/memcpy-ssse3.S:195
#1  0x08117d4d in GVertexBuffer::CopyIn(_D3DTLVERTEX*, int) ()
#2  0x08115b5e in LibTextEngine::ProcessTextQueue(int) ()
#3  0x0821596a in GUI_MainMenu::Draw() ()
#4  0x08257a9f in Game::GameProc() ()
#5  0x082e2b98 in WinMain(void*, void*, char*, int) ()
#6  0x083865ba in main ()

Incidentally, I have an Intel Integrated graphics card (3100, I think) : is this expected to work with GSB? Cheers!

Edit:

This is all using the newly-uploaded binary:

022caf87c2a1252f348702995afd076c  GSB.bin.x86

Rather than trying to package them yourself every time, if you just include the spec file and any ancillary stuff in a subdirectory of the tarball, we RPM users can repackage it ourselves. Not sure how .debs are built, but I believe they you can do something similar. Then, 1 tarball supports all comers if they want it packaged natively…

Personally how I prefer to package things is with a single unified installer (nixstaller) creates a single “.sh” that can be installed via gui, ncurses, or unattended. and supports both 32bit and 64bit. “other people” however want RPMS and DEBS. (I’m an RPM man myself).

however the biggest issues was a snafu where someone packaged the “old” release instead of the “latest” release when putting it up on the HIB. site.

One cause I have found that can cause a immediate segfault is when the game tries to use a LARGE resolution (spanning dual monitors). the drivers say it’s ok to use it, but when the game does try and use it… things go “boom”. The latest build has a quick check on initial startup to detect that and force 1024x768… However that is only on INITIAL startup… e.g. with no ~/.positech folder.

So, check the resolution defined in ~/.positech/GSB/prefs.ini and make sure it’s SANE!!!

More and more, /me thinks I should have used SDL 1.3 instead of 1.2… (1.3 has multi-monitor support)

Still the same problem for me using the latest builds. The resolution is certainly sane. My laptop’s 5 years old, but the Windows version does run just fine with Wine. Would be nice to have the native version running though. Thanks for the work put into this so far.

did you try deleting your ~/.positech folder before running the latest build? Are you running 32bit or 64bit ubuntu? and which video card/drivers?

The latest build also does NOT need libpng3 (that was an oops in the compilation of SDL_image) and libpng12/libjpeg are included in the install now.

FWIW, this is how I got it running so far:

System: Debian Squeeze 32-Bit
Graphics: AMD Radeon X850XT

I have a dual monitor configuration, so I first stumbled upon the “Could not set video mode” message, which could be fixed by setting the resolution to 1024x768 and windowed to 1 in ~/.positech/GSB/prefs.ini (Can be adjusted in the game options later)

Then I also got the segfault mentioned here. I “fixed” this by using the libSDL_image lib provided by the debian repository. In order to do so, rename/delete “libSDL_image-1.2.so.0” in the lib subfolder of the GSB installation and as root do:

aptitude install libsdl-image1.2

The next trouble I encountered was pulseaudio:

AL lib: pulseaudio.c:485: Context did not connect: Connection refused

I am not too familiar with pulseaudio, but I don’t think the problem is a bug in GSB, but a general issue. Running GSB as root solved the pulseaudio thing and the game runs pretty well, though I am not too excited running it all as root. I googled a bit with regard to the pulseaudio issue and found some hints that suggest adding the user to group “pulse” etc. but it all didn’t work so far. Anyway, with the steps above, I am at least able to play the game, though I am wondering if there are some issues with the libSDL_image that is provided, as the one from the debian repositories seem to work for me.

the initial release had a bad 32bit SDL_image lib that was loading libpng.so.3, where the game was linked against libpng.so.12. The build pushed out today has an rebuild libSDL_image as well as libpng12 and libjpeg libraries that should fix those issues.

And pulse audio is an annoying piece of software if it’s not setup right. (and sometimes when it is). the libopenal that is included with the game is openAL-soft 1.12 release, http://kcat.strangesoft.net/openal.html so you can create a ~/.alsoftrc and putting

drivers = alsa

to completely bypass pulse audio.

I have an odd error on linux 11.04 32-bit

Reading symbols from /media/New Volume/GSB/GSB.bin.x86…(no debugging symbols found)…done.
(gdb) r
Starting program: /media/New Volume/GSB/GSB.bin.x86
[Thread debugging using libthread_db enabled]
[New Thread 0x77549b70 (LWP 29986)]
[New Thread 0x70f87b70 (LWP 29987)]
[New Thread 0x6c785b70 (LWP 29988)]

Program received signal SIGSEGV, Segmentation fault.
0x77aa91b1 in ?? () from /lib/i386-linux-gnu/libc.so.6

video card is intel integrated on an atom N455. using the intel drivers that came with ubuntu.

after it segfaults like that can you type “thread apply all bt” in the GDB console and give the output it provides?

It’s not odd at all… Microsoft has got APIs written specifically for the purpose of writing games and they’re not afraid to wipe the slate clean and take the best approach if it meant making it slightly easier for game companies to write games. Naturally, low budget game studios flock to these APIs in droves because they’re so much easier to use.

When you’re a pioneer of technology, everybody follows you rather than the other way around. That’s just the world works… The open source drivers have been playing catch-up for years when it comes to OpenGL and we’re looking at soon getting OpenGL 3.0 drivers… Meanwhile, hardware manufs. have been selling OpenGL 4.2 ready hardware for over 18 months now. There’s just too much work to be done and too few contributors to do it… That’s why it’s so important to support the efforts of both the Mesa team and the game developers!

I’m running Ubuntu 11.10 64-bit. I have GSB via the Humble Bundle 4. I can run the x86-64 bin and it starts up fine. However, when I click the ‘Ship Design’ button, I get this:

r600_shader.c:921 tgsi_unsupported - RET tgsi opcode unsupported EE r600_shader.c:141 r600_pipe_shader_create - translation from TGSI failed ! Segmentation fault

Not sure what these errors mean.

I also installed GSB on the same computer via the SH file from HB, and the same thing happens when I start it via Unity. Don’t know how to capture that output though.

Yes i have problem with the 64bits file too. Try with the 32bits version. Work fine for me on my 64bits machine.

I did delete the ~/.positech folder before running. I’m using 32bit Oneiric, with an Intel 945GM integrated card (the drivers would be the default). I don’t have libpng3 either, but I still get the immediate seg fault. I also tried Spektrum’s advice (renaming libSDL_image, etc.), but got his error: ~/GSB/lib/libjpeg.so.62: no version information available (required by /usr/lib/i386-linux-gnu/libtiff.so.4).

Looks like the Intel 945GM graphics chipset isn’t going to cut it no matter what - it only supports OpenGL 1.4, and doesn’t support GLSL at all. I guess I won’t be getting GSB running on my 1280x768 netbook after all (mostly wanted to have it for shipbuilding and testing, not playing for real, but still…). F15 32-bit, segfaults after it displays the title screen for a couple of seconds. Unless there’s a way to make it work by disabling lots of graphics options, which I haven’t tried yet (other than the shaders).

Sounds like a bug in your graphics driver…

You need to use gdb to debug it.

sudo apt-get install gdb gdb ./GSB.bin.x86_64 r (continue until you see SegFault in GDB) bt
Then copy and paste the result of running bt in gdb after segfault.

I also get this message when I try to start the game as a normal user (with the libSDL_image renamed, so it uses the one installed by the system repository). When I start it as root, it works, but I have no clue why.

I got the same error on Linux Mint 12 32 bit using the open source ATI drivers. To me it looks like an unimplemented driver feature. Switching to FGLRX fixed the problem. Of course then I had the issue of getting a version of FGLRX that at least sort of works with Gnome 3, but that is another story.

For those of you with “shader” issues on the intel graphics cards, can you try deleting the “data/shaders” folder (you can’t just simply rename it as the game just searches in all folders). Once the shaders are deleted, does the game run then? The shaders themselves are not entirely complex, they are rather simple… mostly doing color shifts or brightness shifts and SHOULD work fine w/ mesa/open source DRI drivers.

I am getting a segfault immediately after starting the game. I purchased it from the latest Humble bundle.

Thread 4 (Thread 0xac6d8b70 (LWP 23273)):
#0 0xb7fe2424 in __kernel_vsyscall ()
#1 0xb7f71b16 in nanosleep ()
from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
#2 0xb7d5aa38 in SDL_Delay (ms=100) at ./src/timer/unix/SDL_systimer.c:118
#3 0x08399ec0 in UpdaterThread(void*) ()
#4 0xb7d0b05b in SDL_RunThread (data=0x88b4ad0)
at ./src/thread/SDL_thread.c:204
#5 0xb7d583dd in RunThread (data=0x88b4ad0)
at ./src/thread/pthread/SDL_systhread.c:47
#6 0xb7f69c39 in start_thread ()
from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
#7 0xb7a4a96e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6
Backtrace stopped: Not enough registers or memory available to unwind further

Thread 3 (Thread 0xb0fdfb70 (LWP 23272)):
#0 0xb7fe2424 in __kernel_vsyscall ()
#1 0xb7a3cf86 in poll () from /lib/i386-linux-gnu/i686/cmov/libc.so.6
#2 0xb7660cd6 in ?? () from /usr/lib/i386-linux-gnu/libpulse.so.0
#3 0xb764ef4a in pa_mainloop_poll ()
from /usr/lib/i386-linux-gnu/libpulse.so.0
#4 0xb764f7a7 in pa_mainloop_iterate ()
from /usr/lib/i386-linux-gnu/libpulse.so.0
#5 0xb764f884 in pa_mainloop_run () from /usr/lib/i386-linux-gnu/libpulse.so.0
#6 0xb7660c5e in ?? () from /usr/lib/i386-linux-gnu/libpulse.so.0
#7 0xb5843a26 in ?? () from /usr/lib/i386-linux-gnu/libpulsecommon-1.0.so
#8 0xb7f69c39 in start_thread ()
from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
#9 0xb7a4a96e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6
Backtrace stopped: Not enough registers or memory available to unwind further

Thread 2 (Thread 0xb75e6b70 (LWP 23271)):
#0 0xb7fe2424 in __kernel_vsyscall ()
#1 0xb7f71b16 in nanosleep ()
from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
#2 0xb7d5aa38 in SDL_Delay (ms=1) at ./src/timer/unix/SDL_systimer.c:118
#3 0xb7d5aa81 in RunTimer (unused=0x0) at ./src/timer/unix/SDL_systimer.c:203
#4 0xb7d0b05b in SDL_RunThread (data=0x84f7c78)
at ./src/thread/SDL_thread.c:204
#5 0xb7d583dd in RunThread (data=0x84f7c78)
at ./src/thread/pthread/SDL_systhread.c:47
#6 0xb7f69c39 in start_thread ()
from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
#7 0xb7a4a96e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6
Backtrace stopped: Not enough registers or memory available to unwind further

Program received signal SIGSEGV, Segmentation fault.
0xb7a8e151 in ?? () from /lib/i386-linux-gnu/i686/cmov/libc.so.6
(gdb) bt
#0 0xb7a8e151 in ?? () from /lib/i386-linux-gnu/i686/cmov/libc.so.6
#1 0x08117d4d in GVertexBuffer::CopyIn(_D3DTLVERTEX*, int) ()
#2 0x08115b5e in LibTextEngine::ProcessTextQueue(int) ()
#3 0x0821596a in GUI_MainMenu::Draw() ()
#4 0x08257a9f in Game::GameProc() ()
#5 0x082e2b98 in WinMain(void*, void*, char*, int) ()
#6 0x083865ba in main ()