I recently installed the Arch Linux based Omarchy on my Laptop, replacing Linux Mint which I’ve used for the last year or so. As you can see, I haven’t posted for over two years, which is a testament to how completely boring (in a good way!) Linux Mint is. I’ve been running Omarchy for about a week now, and I’m already writing a blog post…

The Problem

As I was migrating my files, I found the GoG installer for World of Goo, which is a very old game from 2008. I had it working on Linux Mint (which is officially supported by GoG), and also on Pop!OS, which is similarly Ubuntu-based. The installer completed successfully, and that’s when the problems started.

When I tried to run the game, I was greeted with the following inscrutable error message:

Aborted                    (core dumped) ./WorldOfGoo.bin.x86_64

Cue several days of rabbit holes trying to understand why it didn’t work!

If you’re here because you got the same error message, and you want to jump to the solution, click here for the TL;DR.

Rabbit Holes

On the other hand, if you’re here for the rabbit holes, here are a few things I tried.

Inspecting the core file

To see all core files (essentially a full dump of the program state at the time of the crash), run coredumpctl.

To view the latest core dump, run coredumpctl info.

To start the gdb debugger on the latest core file, run coredumpctl gdb.

If you want to do the above for a core dump other than the latest one, simply append the process ID (PID) the commands above. (You can find the PID in the list of core files from coredumpctl)

Inspecting the Linked Libraries

Inspect the linked libraries for an executable with ldd name-of-executable.

See lots of details about how the program looks up and uses the linked libraries by setting LD_DEBUG=all while running the program. For example:

LD_DEBUG=all ./WorldOfGoo.bin.x86_64

View the Linux System Calls

Run the program with strace:

strace ./WorldOfGoo.bin.x86_64

The Solution

The solution turned out to be surprisingly easy, and didn’t involve any of the tricks above. I still don’t understand why this was the solution. But I stumbled onto it reading this forum post from 2010

  1. Check which dependencies are required by listing the files in ~/GOG Games/world of goo/game/lib64/ In my case, these were the following:
    • libogg.so.0
    • libSDL2-2.0.so.0
    • libSDL2_mixer-2.0.so.0
    • libvorbisfile.so.3
    • libvorbis.so.0
  2. Install the dependencies listed above as system libraries. For example, the following command should do the trick on Arch Linux: pacman -S libogg sdl2-compat sdl2_mixer libvorbis
  3. Finally, rename the world of goo lib64 directory to something else. For example: cd ~/GOG Games/world of goo/game/lib64/ mv lib64 lib64.bak

And, you’re done! Moving the lib64 directory prevents World of Goo from finding the bundled dependencies, so it falls back to the system libraries. And somehow, that’s all that’s needed to make it work!