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

×
What a great game. I played all the way to the end. Lots of scares, nightmarish dread, etc. and I kept my room dark, full screen on 4K 50" monitor up close, with a good headphone enclosed around the ear. Well worth it.

Anyway, the game crashes in several places consistently (the first is in the lab after scan). The dmesg output shows:

segmentation fault reading 0 at 0e80797 hpl::cstring::GetFileName(string&)()

Error messages in hpl.log seems to indicate some files cannot be found, such as maps/main_menu.voice, splash_oneshot_tiny.ps, omicronrobotnode_output_highlight, etc. It seems to occur when there is a lag (maybe loading lots of textures?)

The workaround is to restart the game and hopefully game checkpoints are saved so I can continue from the checkpoint (not too much progress lost).

Is this the norm, or is it my setup? I didn't have any error message during install, and the error doesn't seem to indicate any hardware problem (eVGA GeForce 1050TI 4GB Gaming, proprietary driver 390.87, Fedora 27). I didn't request support since they don't support non-Ubuntu distribution.

I also have Penumbra series and Amnesia both from steam and gog (bundled purchases forced me to buy same games from both), and I found that gog version is older and buggier than steam version. I wonder if this is the case here too, since they are all from the same publisher.
Post edited December 31, 2018 by migos
No posts in this topic were marked as the solution yet. If you can help, add your reply
avatar
migos: Anyway, the game crashes in several places consistently (the first is in the lab after scan). The dmesg output shows:

segmentation fault reading 0 at 0e80797 hpl::cstring::GetFileName(string&)()

Error messages in hpl.log seems to indicate some files cannot be found, such as maps/main_menu.voice, splash_oneshot_tiny.ps, omicronrobotnode_output_highlight, etc. It seems to occur when there is a lag (maybe loading lots of textures?)

The workaround is to restart the game and hopefully game checkpoints are saved so I can continue from the checkpoint (not too much progress lost).
I've had a similar issue, this workaround didn't work for me. The crash backtrace is:

#0 0x0000000000e87497 in hpl::cString::GetFileName(std::string const&) ()
#1 0x0000000000e87284 in hpl::cString::GetFileExt(std::string const&) ()
#2 0x0000000000d58dba in hpl::cImageManager::FindImage(std::string const&, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&) ()
#3 0x0000000000d58b43 in hpl::cImageManager::CreateInFrame(std::string const&, int) ()
#4 0x0000000000c4e15c in hpl::cGui::CreateGfxImage(std::string const&, hpl::eGuiMaterial, hpl::cColor const&, bool) ()
#5 0x0000000000aa1d45 in cLuxHelpFuncs::ParseStringHelper_AddIcon(std::string const&, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&, float, std::vector<cLuxScreenTextIcon*, std::allocator<cLuxScreenTextIcon*> >&) ()
#6 0x0000000000a9c234 in cLuxHelpFuncs::ParseStringHelper_ExecuteCommand(cLuxStringCommand const&, cLuxScreenTextFormatParameters const&, std::vector<cLuxScreenTextIcon*, std::allocator<cLuxScreenTextIcon*> >&) ()
#7 0x0000000000a99fec in cLuxHelpFuncs::ParseString(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, cLuxScreenTextFormatParameters const&, std::vector<cLuxScreenTextIcon*, std::allocator<cLuxScreenTextIcon*> >&) ()
#8 0x0000000000a9f6f6 in cLuxHelpFuncs::ParseStringIntoScreenText(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, hpl::cImGui*, cLuxScreenTextFormatParameters const&, std::vector<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, std::allocator<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >&, std::vector<cLuxScreenTextIcon*, std::allocator<cLuxScreenTextIcon*> >&, std::vector<std::vector<unsigned int, std::allocator<unsigned int> >, std::allocator<std::vector<unsigned int, std::allocator<unsigned int> > > >&, float&, float&) ()
#9 0x0000000000b16ea4 in cGlobalScriptFuncs::ParseStringIntoScreenText(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, hpl::cImGui*, cLuxScreenTextFormatParameters const&, hpl::iScriptArray*, hpl::iScriptArray*, hpl::iScriptArray*, float&, float&, bool) ()
#10 0x0000000001446cb5 in X64_CallFunction(unsigned long const*, int, unsigned long (*)(), unsigned long&, bool) ()
#11 0x0000000000000044 in ?? ()
#12 0x0000000000000000 in ?? ()

I worked around it by attaching the debugger to the process and setting breakpoint in the following point inside cLuxHelpFuncs::ParseStringHelper_AddIcon:

0x0000000000aa1d3a <+170>: mov %r13,%rdi
0x0000000000aa1d3d <+173>: mov %rbp,%rsi
0x0000000000aa1d40 <+176>: callq 0xc4e130 <_ZN3hpl4cGui14CreateGfxImageERKSsNS_12eGuiMaterialERKNS_6cColorEb>
=> 0x0000000000aa1d45 <+181>: mov %rax,%rbp

(gdb) b *0xaa1d40 if $rsi == 0

and then when the breakpoint hits skipping the call and setting the result to NULL:

Thread 1 "Soma.bin.x86_64" hit Breakpoint 1, 0x0000000000aa1d40 in cLuxHelpFuncs::ParseStringHelper_AddIcon
(gdb) p/x $pc = 0xaa1d45
$5 = 0xaa1d45
(gdb) p/x $rax = 0
$6 = 0x0
(gdb) c

Works smoothly for me after that.

It all can be automated with the following command:

break *0xaa1d40
condition $bpnum $rsi == 0
commands
p/x $pc = 0xaa1d45
p/x $rax = 0
c
end
Post edited March 16, 2021 by jcmvbkbc