It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
high rated
I ran into some problems when trying to run the games on a more recent distribution, but figured out a way to work around those and thought I might share it here. The first issue I encountered was the game crashing when using wayland (and the game tries to use Xwayland):

'JourneyDown1' terminated by signal SIGSEGV

Backtrace:
#0 updateKeyCodeLUT () at /home/toddy/Gobby/Common/glfw-3.0.4/src/x11_init.c:236
#1 initExtensions () at /home/toddy/Gobby/Common/glfw-3.0.4/src/x11_init.c:515
#2 _glfwPlatformInit () at /home/toddy/Gobby/Common/glfw-3.0.4/src/x11_init.c:653
#3 0x081e388e in glfwInit () at /home/toddy/Gobby/Common/glfw-3.0.4/src/init.c:124
#4 0x0805979f in gobby::DesktopGLRenderer::init() ()
#5 0x0807638e in gobby::Core::start() ()
#6 0x080521b8 in main ()

The other issue was the game crashing with a bad cast in some logging function:

terminate called after throwing an instance of 'std::bad_cast'
what(): std::bad_cast
'JourneyDown1' terminated by signal SIGABRT

Backtrace:
#0 0xf7fd0ac9 in __kernel_vsyscall ()
#1 0xf7962566 in raise () from /lib/libc.so.6
#2 0xf794a3b5 in abort () from /lib/libc.so.6
#3 0x082a19d5 in __gnu_cxx::__verbose_terminate_handler() ()
#4 0x08205ea3 in __cxxabiv1::__terminate(void (*)()) ()
#5 0x08205f1d in std::terminate() ()
#6 0x08203260 in __cxa_throw ()
#7 0x08293586 in std::__throw_bad_cast() ()
#8 0x0806c963 in gobby::DesktopLog::log(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ()
#9 0x08056c98 in gobby::DesktopGLRenderer::resizeCallback(GLFWwindow*, int, int) ()
#10 0x08059e9d in gobby::DesktopGLRenderer::init() ()
#11 0x0807638e in gobby::Core::start() ()
#12 0x080521b8 in main ()

And here is my solution to these two issues. Save the following as "tjd_fixes.cpp" and compile it using "g++ -m32 -shared -D_GLIBCXX_USE_CXX11_ABI=1 tjd_fixes.cpp -o tjd_fixes.so". Then run the game with "env LD_PRELOAD=./tjd_fixes.so ./JourneyDown1".

// Needed to prevent a crash in DesktopLog::log()
#include <iostream>

// Fix crash when running under xwayland
// based on https://github.com/glfw/glfw/commit/2d39dff84af0f51e5c11c3e9b953cd2e2af166ef

#define XkbUseCoreKbd 0x0100
#define XkbKeyNamesMask (1<<9)

extern "C" void *XkbGetMap(void *display, unsigned int which, unsigned int device_spec);
extern "C" int XkbGetNames(void *dpy, unsigned int which, void *Xkb);

extern "C" void *XkbGetKeyboard(void *display, unsigned int which, unsigned int device_spec) {
void *result = XkbGetMap(display, 0, XkbUseCoreKbd);
XkbGetNames(display, XkbKeyNamesMask, result);
return result;
}

extern "C" void XkbFreeKeyboard(void *xkb, unsigned int which, int free_all) {
return;
}
avatar
borschty: I ran into some problems when trying to run the games on a more recent distribution, but figured out a way to work around those and thought I might share it here.
Thanks a bunch for figuring that out. While I'm not using wayland, the other crash happened nonetheless.

One thing to add perhaps: on Ubuntu 20.04 I had to install g++-multilib to get things compiled. Guess the regular package no longer comes with 32bit support.
Thank you a lot for this fix. Albeit i feel there is need to contact developer about this.

BTW, same problem exists in all 3 games in trilogy, which is understandable since they all use same executable with different resource files.
Post edited November 17, 2020 by Redfern
Worked for me too (Linux Mint 20.1 Cinnamon), thanks a bunch!