OpenMW 2023.04.10: crash on startup

Support for running, installing or compiling OpenMW

Before you submit a bug report for the first time, please read: Bug reporting guidelines
krogg
Posts: 30
Joined: 31 Mar 2020, 03:18

OpenMW 2023.04.10: crash on startup

Post by krogg »

This is on a Linux 64 bit (intel x86_64 aka amd64, not multi-lib) system.

The version of OpenMW was fetched from github on 2023 April 10th and compiled without incident.

When starting OpenMW, the following sequence of events happens. The launcher appears, presenting the list of mods. OK so far. I click Play. The video plays, with sound. OK. The game then begins the usual display of random load screen pictures. OK. The next step is for the game to display the new / load / save menu. It does not do this. It crashes. By crash, I mean close the window, put up a small dialog box explaining where the crash log is an a button to close it.

I've no idea what is going on. This is the first time I've had this error. Has anyone else had this error? If so, how did you fix it?

Attached is the OPenMW crash log (approximately 58 k)

Thank you.

p.s. This also happened with a (now removed) version of three or so weeks earlier: this version had been fetched & built in the hope that the problem had gone away.
Attachments
openmw-crash.log
a 57k text file containing a OpenMW-generated crash log
(57.38 KiB) Downloaded 123 times
User avatar
AnyOldName3
Posts: 2678
Joined: 26 Nov 2015, 03:25

Re: OpenMW 2023.04.10: crash on startup

Post by AnyOldName3 »

The dodgy thread:

Code: Select all

Thread 4 (Thread 0x7f48a6dff6c0 (LWP 14109) "openmw"):
#0  0x00007f48b7afc737 in __GI___wait4 (pid=14125, stat_loc=0x7f48a6dfe174, options=0, usage=0x0) at ../sysdeps/unix/sysv/linux/wait4.c:30
        sc_ret = -512
        sc_cancel_oldtype = 0
        sc_ret = <optimized out>
#1  0x00000000018c1abc in ?? ()
No symbol table info available.
#2  <signal handler called>
No locals.
#3  0x0000000000000000 in ?? ()
No symbol table info available.
#4  0x00007f48bc8eeeef in osg::State::applyAttributeList(std::map<std::pair<osg::StateAttribute::Type, unsigned int>, osg::State::AttributeStack, std::less<std::pair<osg::StateAttribute::Type, unsigned int> >, std::allocator<std::pair<std::pair<osg::StateAttribute::Type, unsigned int> const, osg::State::AttributeStack> > >&, std::map<std::pair<osg::StateAttribute::Type, unsigned int>, std::pair<osg::ref_ptr<osg::StateAttribute>, unsigned int>, std::less<std::pair<osg::StateAttribute::Type, unsigned int> >, std::allocator<std::pair<std::pair<osg::StateAttribute::Type, unsigned int> const, std::pair<osg::ref_ptr<osg::StateAttribute>, unsigned int> > > > const&) () from /usr/lib/libosg.so.162
No symbol table info available.
#5  0x00007f48bc8e6efe in osg::State::apply(osg::StateSet const*) () from /usr/lib/libosg.so.162
No symbol table info available.
#6  0x00007f48bcba5cc6 in osgUtil::RenderLeaf::render(osg::RenderInfo&, osgUtil::RenderLeaf*) () from /usr/lib/libosgUtil.so.162
No symbol table info available.
#7  0x00007f48bcba05e8 in osgUtil::RenderBin::drawImplementation(osg::RenderInfo&, osgUtil::RenderLeaf*&) () from /usr/lib/libosgUtil.so.162
No symbol table info available.
#8  0x00007f48bcbad864 in osgUtil::RenderStage::drawImplementation(osg::RenderInfo&, osgUtil::RenderLeaf*&) () from /usr/lib/libosgUtil.so.162
No symbol table info available.
#9  0x00007f48bcba3483 in osgUtil::RenderBin::draw(osg::RenderInfo&, osgUtil::RenderLeaf*&) () from /usr/lib/libosgUtil.so.162
No symbol table info available.
#10 0x00007f48bcbacd18 in osgUtil::RenderStage::drawInner(osg::RenderInfo&, osgUtil::RenderLeaf*&, bool&) () from /usr/lib/libosgUtil.so.162
No symbol table info available.
#11 0x00007f48bcbae6cd in osgUtil::RenderStage::draw(osg::RenderInfo&, osgUtil::RenderLeaf*&) () from /usr/lib/libosgUtil.so.162
No symbol table info available.
#12 0x00007f48bcba621b in osgUtil::RenderStage::drawPreRenderStages(osg::RenderInfo&, osgUtil::RenderLeaf*&) () from /usr/lib/libosgUtil.so.162
No symbol table info available.
#13 0x00007f48bcbb962c in osgUtil::SceneView::draw() () from /usr/lib/libosgUtil.so.162
No symbol table info available.
#14 0x00007f48bd006b8f in osgViewer::Renderer::draw() () from /usr/lib/libosgViewer.so.162
No symbol table info available.
#15 0x00007f48bc80bc69 in osg::GraphicsContext::runOperations() () from /usr/lib/libosg.so.162
No symbol table info available.
#16 0x00007f48bc89d0d5 in osg::OperationThread::run() () from /usr/lib/libosg.so.162
No symbol table info available.
#17 0x00007f48bc80d5ea in non-virtual thunk to osg::GraphicsThread::run() () from /usr/lib/libosg.so.162
No symbol table info available.
#18 0x00007f48ba5b345e in OpenThreads::ThreadPrivateActions::StartThread(void*) () from /usr/lib/libOpenThreads.so.21
No symbol table info available.
#19 0x00007f48b7ab1e74 in start_thread (arg=<optimized out>) at pthread_create.c:442
        ret = <optimized out>
        pd = <optimized out>
        out = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139950014068416, -1763649375552450320, -296, 11, 140723819200064, 139950005678080, 1807930832499462384, 1807963711071670512}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
#20 0x00007f48b7b320ac in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
No locals.
You've somehow managed to call a null pointer as if it were a function. That's not normally something that could happen without lots of people reporting it, so the obvious first questions are what your settings are and what mods you're using.
User avatar
psi29a
Posts: 5362
Joined: 29 Sep 2011, 10:13
Location: Belgium
Gitlab profile: https://gitlab.com/psi29a/
Contact:

Re: OpenMW 2023.04.10: crash on startup

Post by psi29a »

Since you compiled it yourself, can you list the versions of the libraries you linked to, for example OSG?

Also, dates are meaningless, do you have the precise commit?

Which OS?
User avatar
akortunov
Posts: 900
Joined: 13 Mar 2017, 13:49
Location: Samara, Russian Federation

Re: OpenMW 2023.04.10: crash on startup

Post by akortunov »

More likely it is a yet another issue related to the unstable crocus_dri driver.
User avatar
AnyOldName3
Posts: 2678
Joined: 26 Nov 2015, 03:25

Re: OpenMW 2023.04.10: crash on startup

Post by AnyOldName3 »

All the past Crocus crashes have been within Crocus itself. This is crashing in OSG. It's more likely that there's a bug on our end or with OSG.
krogg
Posts: 30
Joined: 31 Mar 2020, 03:18

Re: OpenMW 2023.04.10: crash on startup

Post by krogg »

Thank you to everyone who replied. Much appreciated. :)
psi29a wrote: 14 Apr 2023, 09:40 Since you compiled it yourself, can you list the versions of the libraries you linked to, for example OSG?
Would the log of the configure (err, I mean cmake) phase help? If so:

Code: Select all

-- The C compiler identification is GNU 12.2.0
-- The CXX compiler identification is GNU 12.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring OpenMW...
-- Found OpenGL: /usr/lib/libGL.so   
-- Found LZ4: /usr/lib/liblz4.so  
-- Using Qt5.15.5
CMake Warning at CMakeLists.txt:280 (find_package):
  By not providing "Findcollada_dom.cmake" in CMAKE_MODULE_PATH this project
  has asked CMake to find a package configuration file provided by
  "collada_dom", but CMake did not find one.

  Could not find a package configuration file provided by "collada_dom"
  (requested version 2.5) with any of the following names:

    collada_domConfig.cmake
    collada_dom-config.cmake

  Add the installation prefix of "collada_dom" to CMAKE_PREFIX_PATH or set
  "collada_dom_DIR" to a directory containing one of the above files.  If
  "collada_dom" provides a separate development package or SDK, be sure it
  has been installed.


-- Found the following ICU libraries:
--   uc (required): /usr/lib/libicuuc.so
--   i18n (required): /usr/lib/libicui18n.so
--   data (required): /usr/lib/libicudata.so
-- Found ICU: /usr/include (found version "71.1") 
-- Found FFmpeg_AVCODEC 59.37.100
-- Found FFmpeg_AVFORMAT 59.27.100
-- Found FFmpeg_AVUTIL 57.28.100
-- Found FFmpeg_SWSCALE 6.7.100
-- Found FFmpeg_SWRESAMPLE 4.7.100
-- Found FFmpeg: /usr/lib/libavcodec.so;/usr/lib/libavformat.so;/usr/lib/libavutil.so;/usr/lib/libswscale.so;/usr/lib/libswresample.so  found components: AVCODEC AVFORMAT AVUTIL SWSCALE SWRESAMPLE 
-- Found Bullet: /usr/lib/libBulletDynamics.so (Required is at least version "286") 
-- Checking if Bullet uses double precision
-- Bullet uses double precision
-- Found LIBUNSHIELD 
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Found osgAnimation: /usr/lib/libosgAnimation.so  
-- Found osgDB: /usr/lib/libosgDB.so  
-- Found osgGA: /usr/lib/libosgGA.so  
-- Found osgFX: /usr/lib/libosgFX.so  
-- Found osgParticle: /usr/lib/libosgParticle.so  
-- Found osgText: /usr/lib/libosgText.so  
-- Found osgUtil: /usr/lib/libosgUtil.so  
-- Found osgShadow: /usr/lib/libosgShadow.so  
-- Found osgSim: /usr/lib/libosgSim.so  
-- Found osgViewer: /usr/lib/libosgViewer.so  
-- Found osg: /usr/lib/libosg.so  
-- Found OpenThreads: /usr/lib/libOpenThreads.so  
-- Found OpenSceneGraph: /usr/lib/libosgAnimation.so;/usr/lib/libosgDB.so;/usr/lib/libosgGA.so;/usr/lib/libosgFX.so;/usr/lib/libosgParticle.so;/usr/lib/libosgText.so;/usr/lib/libosgUtil.so;/usr/lib/libosgShadow.so;/usr/lib/libosgSim.so;/usr/lib/libosgViewer.so;/usr/lib/libosg.so;/usr/lib/libOpenThreads.so (found suitable version "3.6.5", minimum required is "3.6.5") 
-- Checking if OSG supports multiview
Osg does not support multiview, disabling use of GL_OVR_multiview
-- Found Boost: /usr/include (found suitable version "1.80.0", minimum required is "1.6.2") found components: system filesystem program_options iostreams regex 
-- Found Boost: /usr/include (found suitable version "1.80.0", minimum required is "1.77.0") found components: atomic 
-- Found MyGUI 3.4.1
-- Found SDL2 2.24.0
-- Found OpenAL: /usr/lib/libopenal.so  
-- Found LuaJit 
-- Checking if Lua allows to provide a custom allocator
-- Lua supports custom allocator
-- Found SQLite3: /usr/include (found version "3.39.2") 
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) 
-- Configuring done
-- Generating done
-- Build files have been written to: /sources/lfs_slackbuilds/openmw/build_it/openmw/build
Since some of the dependencies (such as recastnavigation) are auto-fetched and discarded at compile time, I can't report every version.
in the hope that my actual cmake command provides clues, here it is:

Code: Select all

cmake \
  -DCMAKE_C_FLAGS:STRING="-O2 -fPIC" \
  -DCMAKE_CXX_FLAGS:STRING="-O2 -fPIC" \
  -DCMAKE_INSTALL_PREFIX=/usr \
  -DCMAKE_BUILD_TYPE=Release \
   -DFETCHCONTENT_FULLY_DISCONNECTED=OFF \
  -DOPENMW_USE_SYSTEM_BENCHMARK=ON \
  -DOPENMW_USE_SYSTEM_BULLET=ON \
  -DOPENMW_USE_SYSTEM_MYGUI=ON \
  -DOPENMW_USE_SYSTEM_OSG=ON \
  -DOPENMW_USE_SYSTEM_RECASTNAVIGATION=OFF \
  -DOPENMW_USE_SYSTEM_SQLITE3=ON \
  .. \
  > $WYAN/config_log.txt 2>&1
Also, dates are meaningless, do you have the precise commit?
I don't understand this question. When I get a package from git and I want the current (not the one in the .zip file) version, I perform a

Code: Select all

git clone https://url.of.gitsite/projectname
and trust that someone else is not modifying one of files at the exact instant I'm fetching and hope for the best. I then tar it up as if it were a traditional tarball and work from that. Since version numbers are not apparent with the clone approach, I use the date I fetch it as the version year.month.date. I'm sorry I can't be more precise.
Which OS?
(Beyond) Linux From Scratch 11.2 x86_64
User avatar
psi29a
Posts: 5362
Joined: 29 Sep 2011, 10:13
Location: Belgium
Gitlab profile: https://gitlab.com/psi29a/
Contact:

Re: OpenMW 2023.04.10: crash on startup

Post by psi29a »

krogg wrote: 18 Apr 2023, 00:14
Also, dates are meaningless, do you have the precise commit?
I don't understand this question. When I get a package from git and I want the current (not the one in the .zip file) version, I perform a

Code: Select all

git clone https://url.of.gitsite/projectname
and trust that someone else is not modifying one of files at the exact instant I'm fetching and hope for the best. I then tar it up as if it were a traditional tarball and work from that. Since version numbers are not apparent with the clone approach, I use the date I fetch it as the version year.month.date. I'm sorry I can't be more precise.
Normally the git revision is listed in the launcher. But you can see that by running `git rev-parse HEAD`

Code: Select all

(venv) psi29a@Yggdrasil openmw % git rev-parse HEAD               
cd0db362746789a624e1fc0aae086d8935e74ea9
^-- example

or full last commit:

Code: Select all

psi29a@Yggdrasil cmake-build-relwithdebinfo % git log --name-status HEAD^..HEAD
commit d6d7746c9befff077ab20106817f4bab39b0b929 (HEAD -> qt6, origin/master, origin/HEAD, master)
Merge: 898e43205 9279c3d3e
Author: psi29a <[email protected]>
Date:   Tue Apr 11 06:54:19 2023 +0000

    Merge branch 'records' into 'master'
    
    [Lua] Fix implementation of types.*.records
    
    See merge request OpenMW/openmw!2918

commit 9279c3d3e1cbf9a57713f25a4d8578ed30ce90c6
Author: Petr Mikheev <[email protected]>
Date:   Mon Apr 10 23:15:28 2023 +0200

    [Lua] Fix implementation of types.*.records

M       apps/openmw/mwlua/types/types.hpp
M       apps/openmw/mwworld/store.cpp
M       apps/openmw/mwworld/store.hpp
M       files/lua_api/openmw/types.lua
krogg wrote: 18 Apr 2023, 00:14
Which OS?
(Beyond) Linux From Scratch 11.2 x86_64
Interesting... have you tried one of our flatpak RCs or generic linux builds? Just to first validate if they crash too?
User avatar
AnyOldName3
Posts: 2678
Joined: 26 Nov 2015, 03:25

Re: OpenMW 2023.04.10: crash on startup

Post by AnyOldName3 »

Normally the git revision is listed in the launcher.
This'll only work if the source code is still an intact Git repo when CMake runs. Depending on how the user's 'tar[ring] it up', the .git directory may cease to exist.
franley
Posts: 2
Joined: 22 Apr 2023, 21:52

Re: OpenMW 2023.04.10: crash on startup

Post by franley »

Just wanted to add that I recently experience the same crash behavior as OP, null pointer in OSG applyAttributeList.

I tried to do a bisect to narrow down the introduction point. Unfortunately I couldn't get anything exact due to the two moving variables (openmw along with OSG).

Builds failing with same null pointer (did more builds than this, but this just captures the outer edges of the bisect):
  • - openmw: 5446906b309f9876f757c31be13a7d888ae95919, OSG: 69cfecebfb6dc703b42e8de39eed750a84a87489
  • - openmw: e9cfc2381fb949e427901463225ac21cef279fbc, OSG: a827840baf0786d72e11ac16d5338a4ee25779db (first 3.6.5 merge after RC)
  • - openmw: e4eeb9cce9b29702bfde7dc9fdd3b983a8d69249 (note same as good build below), OSG: 69cfecebfb6dc703b42e8de39eed750a84a87489
Build that doesn't crash at the same point:
- openmw: e4eeb9cce9b29702bfde7dc9fdd3b983a8d69249 (most recent version I could build against OSG 3.6.1), OSG: 4665a2f03368be95f4773463f733dbdd88f63c5f (last 3.6.1 version)

Summary: OSG 3.6.1 fine, OSG 3.6.5 crashes

As a sanity check I tried against OSG mainline 3.6.5 and got the same crash

Other environment details:
OS: GUIX system 1.4.0
GCC: 10.3.0 and 12.2 (didn't seem to make any difference) (also tried building OSG with Clang-15, same crash)


If it helps, I also have a reliable repro that I've tried on two different systems, one intel and one AMD (not that I expect that would make a difference in this case)

See the attached games-repro-npe.txt file. If you have or get access to a GUIX build daemon, you can repro it with

Code: Select all

guix build -f path/to/attached
To get to a GUIX build daemon, either install guix as a package manager if your distro supports it, or get a VM image from https://guix.gnu.org/en/download/
Attachments
games-repro-npe.txt
(6.39 KiB) Downloaded 64 times
openmw-crash.log
(113.72 KiB) Downloaded 68 times
User avatar
AnyOldName3
Posts: 2678
Joined: 26 Nov 2015, 03:25

Re: OpenMW 2023.04.10: crash on startup

Post by AnyOldName3 »

That's got to be memory corruption. osg::ClipControl::apply doesn't dereference any pointers that can be null. It can't be down to Crocus drivers as you're on RadeonSI. We can't really say any more than that with the information we've got. What might help would be if you ran OpenMW through a debugger until the problem happened again and looked at what the memory being accessed looked like, as different causes would likely cause different patterns.
Post Reply