Herdinger / EmulationStation

A flexible emulator front-end supporting keyboardless navigation and custom system themes.
MIT License
68 stars 7 forks source link

Segmentation fault on startup with Arch Linux (gdb backtrace and config within) #21

Open Azelphur opened 8 years ago

Azelphur commented 8 years ago

Hi, I'm getting a segmentation fault on startup with Arch Linux. Hopefully someone can help me

Here's the backtrace:

Program received signal SIGSEGV, Segmentation fault.
0x000000000057a847 in Font::renderTextCache (this=<optimized out>, cache=0xd47be0) at /home/azelphur/emulationstation-git/src/EmulationStation/es-core/src/resources/Font.cpp:538
538 /home/azelphur/emulationstation-git/src/EmulationStation/es-core/src/resources/Font.cpp: No such file or directory.
(gdb) bt full
#0  0x000000000057a847 in Font::renderTextCache (this=<optimized out>, cache=0xd47be0) at /home/azelphur/emulationstation-git/src/EmulationStation/es-core/src/resources/Font.cpp:538
        it = {textureIdPtr = , verts = std::vector of length 0, capacity 0, colors = std::vector of length 0, capacity 0}
        __PRETTY_FUNCTION__ = "void Font::renderTextCache(TextCache*)"
#1  0x0000000000568e78 in TextComponent::render (this=0x214a0e0, parentTrans=...) at /home/azelphur/emulationstation-git/src/EmulationStation/es-core/src/components/TextComponent.cpp:116
        textSize = <optimized out>
        trans = {
          m_matrix = {<Eigen::PlainObjectBase<Eigen::Matrix<float, 4, 4, 0, 4, 4> >> = {<Eigen::MatrixBase<Eigen::Matrix<float, 4, 4, 0, 4, 4> >> = {<Eigen::DenseBase<Eigen::Matrix<float, 4, 4, 0, 4, 4> >> = {<Eigen::internal::special_scalar_op_base<Eigen::Matrix<float, 4, 4, 0, 4, 4>, float, float, Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 4, 0, 4, 4>, 3>, false>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 4, 0, 4, 4>, 3>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 4, 0, 4, 4>, 1>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 4, 0, 4, 4>, 0>> = {<Eigen::EigenBase<Eigen::Matrix<float, 4, 4, 0, 4, 4> >> = {<No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, m_storage = {m_data = {array = {1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1080, 2276, 0, 1}}}}, <No data fields>}}
#2  0x00000000004e7c72 in SystemView::render (this=0xd09310, parentTrans=...) at /home/azelphur/emulationstation-git/src/EmulationStation/es-app/src/views/SystemView.cpp:322
        comp = std::shared_ptr (count 1, weak 0) 0x214a0e0
        index = <optimized out>
        i = 0
        trans = {
          m_matrix = {<Eigen::PlainObjectBase<Eigen::Matrix<float, 4, 4, 0, 4, 4> >> = {<Eigen::MatrixBase<Eigen::Matrix<float, 4, 4, 0, 4, 4> >> = {<Eigen::DenseBase<Eigen::Matrix<float, 4, 4, 0, 4, 4> >> = {<Eigen::internal::special_scalar_op_base<Eigen::Matrix<float, 4, 4, 0, 4, 4>, float, float, Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 4, 0, 4, 4>, 3>, false>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 4, 0, 4, 4>, 3>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 4, 0, 4, 4>, 1>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 4, 0, 4, 4>, 0>> = {<Eigen::EigenBase<Eigen::Matrix<float, 4, 4, 0, 4, 4> >> = {<No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, m_storage = {m_data = {array = {1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1620, 0, 1}}}}, <No data fields>}}
        logoSizeX = 1072.80005
        logoCount = <optimized out>
        center = 0
        extrasTrans = {
          m_matrix = {<Eigen::PlainObjectBase<Eigen::Matrix<float, 4, 4, 0, 4, 4> >> = {<Eigen::MatrixBase<Eigen::Matrix<float, 4, 4, 0, 4, 4> >> = {<Eigen::DenseBase<Eigen::Matrix<float, 4, 4, 0, 4, 4> >> = {<Eigen::internal::special_scalar_op_base<Eigen::Matrix<float, 4, 4, 0, 4, 4>, float, float, Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 4, 0, 4, 4>, 3>, false>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 4, 0, 4, 4>, 3>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 4, 0, 4, 4>, 1>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 4, 0, 4, 4>, 0>> = {<Eigen::EigenBase<Eigen::Matrix<float, 4, 4, 0, 4, 4> >> = {<No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, m_storage = {m_data = {array = {1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2880, 1620, 0, 1}}}}, <No data fields>}}
        extrasCenter = -9808
        xOff = 1080
        yOff = 684.450012
        logoTrans = {
          m_matrix = {<Eigen::PlainObjectBase<Eigen::Matrix<float, 4, 4, 0, 4, 4> >> = {<Eigen::MatrixBase<Eigen::Matrix<float, 4, 4, 0, 4, 4> >> = {<Eigen::DenseBase<Eigen::Matrix<float, 4, 4, 0, 4, 4> >> = {<Eigen::internal::special_scalar_op_base<Eigen::Matrix<float, 4, 4, 0, 4, 4>, float, float, Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 4, 0, 4, 4>, 3>, false>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 4, 0, 4, 4>, 3>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 4, 0, 4, 4>, 1>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 4, 0, 4, 4>, 0>> = {<Eigen::EigenBase<Eigen::Matrix<float, 4, 4, 0, 4, 4> >> = {<No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, m_storage = {m_data = {array = {1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1080, 2304.44995, 0, 1}}}}, <No data fields>}}
#3  0x00000000004ef227 in ViewController::render (this=0xaaea50, parentTrans=...) at /home/azelphur/emulationstation-git/src/EmulationStation/es-app/src/views/ViewController.cpp:297
        trans = {
          m_matrix = {<Eigen::PlainObjectBase<Eigen::Matrix<float, 4, 4, 0, 4, 4> >> = {<Eigen::MatrixBase<Eigen::Matrix<float, 4, 4, 0, 4, 4> >> = {<Eigen::DenseBase<Eigen::Matrix<float, 4, 4, 0, 4, 4> >> = {<Eigen::internal::special_scalar_op_base<Eigen::Matrix<float, 4, 4, 0, 4, 4>, float, float, Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 4, 0, 4, 4>, 3>, false>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 4, 0, 4, 4>, 3>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 4, 0, 4, 4>, 1>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 4, 0, 4, 4>, 0>> = {<Eigen::EigenBase<Eigen::Matrix<float, 4, 4, 0, 4, 4> >> = {<No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, m_storage = {m_data = {array = {1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}}}}, <No data fields>}}
        viewStart = {<Eigen::PlainObjectBase<Eigen::Matrix<float, 3, 1, 0, 3, 1> >> = {<Eigen::MatrixBase<Eigen::Matrix<float, 3, 1, 0, 3, 1> >> = {<Eigen::DenseBase<Eigen::Matrix<float, 3, 1, 0, 3, 1> >> = {<Eigen::internal::special_scalar_op_base<Eigen::Matrix<float, 3, 1, 0, 3, 1>, float, float, Eigen::DenseCoeffsBase<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 3>, false>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 3>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 0>> = {<Eigen::EigenBase<Eigen::Matrix<float, 3, 1, 0, 3, 1> >> = {<No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, m_storage = {m_data = {array = {-0, -0, <optimized out>}}}}, <No data fields>}
#4  0x000000000053fd10 in Window::render (this=this@entry=0x7fffffffdcd0) at /home/azelphur/emulationstation-git/src/EmulationStation/es-core/src/Window.cpp:190
        transform = {
          m_matrix = {<Eigen::PlainObjectBase<Eigen::Matrix<float, 4, 4, 0, 4, 4> >> = {<Eigen::MatrixBase<Eigen::Matrix<float, 4, 4, 0, 4, 4> >> = {<Eigen::DenseBase<Eigen::Matrix<float, 4, 4, 0, 4, 4> >> = {<Eigen::internal::special_scalar_op_base<Eigen::Matrix<float, 4, 4, 0, 4, 4>, float, float, Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 4, 0, 4, 4>, 3>, false>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 4, 0, 4, 4>, 3>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 4, 0, 4, 4>, 1>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 4, 0, 4, 4>, 0>> = {<Eigen::EigenBase<Eigen::Matrix<float, 4, 4, 0, 4, 4> >> = {<No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, m_storage = {m_data = {array = {1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}}}}, <No data fields>}}
        screensaverTime = <optimized out>
#5  0x000000000045df23 in main (argc=<optimized out>, argv=<optimized out>) at /home/azelphur/emulationstation-git/src/EmulationStation/es-app/src/main.cpp:331
        event = {type = 512, common = {type = 512, timestamp = 1512}, window = {type = 512, timestamp = 1512, windowID = 2, event = 3 '\003', padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', data1 = 0, data2 = 0}, key = {type = 512, timestamp = 1512, windowID = 2, state = 3 '\003', repeat = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', keysym = {scancode = SDL_SCANCODE_UNKNOWN, sym = 0, mod = 0, unused = 0}}, edit = {type = 512, timestamp = 1512, windowID = 2, 
            text = "\003", '\000' <repeats 19 times>, "Pj\253\000\000\000\000\000\000}\263", <incomplete sequence \341>, start = 1743317721, length = 11234832}, text = {type = 512, timestamp = 1512, windowID = 2, text = "\003", '\000' <repeats 19 times>, "Pj\253\000\000\000\000\000\000}\263", <incomplete sequence \341>}, motion = {type = 512, timestamp = 1512, windowID = 2, which = 3, state = 0, x = 0, y = 0, xrel = 0, yrel = 11233872}, button = {type = 512, timestamp = 1512, windowID = 2, which = 3, button = 0 '\000', state = 0 '\000', 
            clicks = 0 '\000', padding1 = 0 '\000', x = 0, y = 0}, wheel = {type = 512, timestamp = 1512, windowID = 2, which = 3, x = 0, y = 0, direction = 0}, jaxis = {type = 512, timestamp = 1512, which = 2, axis = 3 '\003', padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', value = 0, padding4 = 0}, jball = {type = 512, timestamp = 1512, which = 2, ball = 3 '\003', padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', xrel = 0, yrel = 0}, jhat = {type = 512, timestamp = 1512, which = 2, hat = 3 '\003', 
            value = 0 '\000', padding1 = 0 '\000', padding2 = 0 '\000'}, jbutton = {type = 512, timestamp = 1512, which = 2, button = 3 '\003', state = 0 '\000', padding1 = 0 '\000', padding2 = 0 '\000'}, jdevice = {type = 512, timestamp = 1512, which = 2}, caxis = {type = 512, timestamp = 1512, which = 2, axis = 3 '\003', padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', value = 0, padding4 = 0}, cbutton = {type = 512, timestamp = 1512, which = 2, button = 3 '\003', state = 0 '\000', padding1 = 0 '\000', 
            padding2 = 0 '\000'}, cdevice = {type = 512, timestamp = 1512, which = 2}, adevice = {type = 512, timestamp = 1512, which = 2, iscapture = 3 '\003', padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000'}, quit = {type = 512, timestamp = 1512}, user = {type = 512, timestamp = 1512, windowID = 2, code = 3, data1 = 0x0, data2 = 0x0}, syswm = {type = 512, timestamp = 1512, msg = 0x300000002}, tfinger = {type = 512, timestamp = 1512, touchId = 12884901890, fingerId = 0, x = 0, y = 0, dx = 1.57420076e-38, dy = 0, 
            pressure = -4.13871799e+20}, mgesture = {type = 512, timestamp = 1512, touchId = 12884901890, dTheta = 0, dDist = 0, x = 0, y = 0, numFingers = 27216, padding = 171}, dgesture = {type = 512, timestamp = 1512, touchId = 12884901890, gestureId = 0, numFingers = 0, error = 0, x = 1.57420076e-38, y = 0}, drop = {type = 512, timestamp = 1512, file = 0x300000002 <error: Cannot access memory at address 0x300000002>}, 
          padding = "\000\002\000\000\350\005\000\000\002\000\000\000\003", '\000' <repeats 19 times>, "Pj\253\000\000\000\000\000\000}\263\341\331\352\350g\020n\253\000\000\000\000"}
        curTime = 1512
        deltaTime = 1
        width = 0
        height = 0
        window = {mHelp = 0xa77d10, mBackgroundOverlay = 0xa8a9e0, mGuiStack = std::vector of length 2, capacity 2 = {0xaaea50, 0x21130a0}, mDefaultFonts = std::vector of length 3, capacity 4 = {std::shared_ptr (count 6, weak 2) 0xd47fa0, std::shared_ptr (count 4, weak 2) 0xd47e40, std::shared_ptr (count 5, weak 2) 0xd481e0}, mFrameTimeElapsed = 1, mFrameCountElapsed = 1, mAverageDeltaTime = 10, mFrameDataText = std::unique_ptr<TextCache> containing 0x0, mNormalizeNextUpdate = false, mAllowSleep = true, mSleeping = false, 
          mTimeSinceLastInput = 1, mRenderedHelpPrompts = false}
        errorMsg = 0x0
        lastTime = 1512
        running = <optimized out>

and here's the config

<!-- This is the EmulationStation Systems configuration file.
All systems must be contained within the <systemList> tag.-->

<systemList>
    <!-- Here's an example system to get you started. -->
    <system>

        <!-- A short name, used internally. Traditionally lower-case. -->
        <name>gamecube</name>

        <!-- A "pretty" name, displayed in menus and such. -->
        <fullname>Nintendo Gamecube</fullname>

        <!-- The path to start searching for ROMs in. '~' will be expanded to $HOME on Linux or %HOMEPATH% on Windows. -->
        <path>/home/emulationstation/Emulation/Gamecube</path>

        <!-- A list of extensions to search for, delimited by any of the whitespace characters (", \r\n\t").
        You MUST include the period at the start of the extension! It's also case sensitive. -->
        <extension>.iso</extension>

        <!-- The shell command executed when a game is selected. A few special tags are replaced if found in a command:
        %ROM% is replaced by a bash-special-character-escaped absolute path to the ROM.
        %BASENAME% is replaced by the "base" name of the ROM.  For example, "/foo/bar.rom" would have a basename of "bar". Useful for MAME.
        %ROM_RAW% is the raw, unescaped path to the ROM. -->
        <command>retroarch -L ~/cores/libretro-fceumm.so %ROM%</command>

        <!-- The platform to use when scraping. You can see the full list of accepted platforms in src/PlatformIds.cpp.
        It's case sensitive, but everything is lowercase. This tag is optional.
        You can use multiple platforms too, delimited with any of the whitespace characters (", \r\n\t"), eg: "genesis, megadrive" -->
        <platform>gc</platform>

        <!-- The theme to load from the current theme set.  See THEMES.md for more information.
        This tag is optional. If not set, it will default to the value of <name>. -->
        <theme>gc</theme>
    </system>
</systemList>

Thanks folks! :)

Azelphur commented 8 years ago

After much fiddling, I managed to get it working, I think this is down to a combination of issues.

1) Arch doesn't seem to bundle the "simple" theme with EmulationStation - I think EmulationStation is supposed to work without the theme, however. 2) The version of the theme in AUR seems to be outdated.

To work around this, I downloaded the Windows zip version of EmulationStation, took the themes directory and dropped it in ~/.config/emulationstation/themes

So, probably still a bug, but at least it has a workaround. Yay! :)