Ticket #898 (closed defect: fixed)

Opened 22 months ago

Last modified 21 months ago

Multiplayer game crashes in lobby when selecting text

Reported by: asmartgoat Owned by: kenny
Priority: Release Blocker Milestone: Alpha 7
Component: Core engine Keywords:
Cc: kenny

Description

Selecting text with the mouse in the lobby (or when selecting a name) crashes the game.

Reproduced on: Windows 7, Fedora.

Change History

comment:1 Changed 22 months ago by feneur

Could you please provide some more information? Do you get any error messages? On windows they should be saved in: %appdata%\0ad\logs\interestinglog.html and on Linux you could try running the game from the console to try and see any error messages there in case you don't see any already (that's of course unless you don't get the error message dialog of the game, in that case just copy that info and post in a comment/update the ticket).

comment:2 Changed 21 months ago by historic_bruno

  • Cc kenny added
  • Priority changed from Must Have to Release Blocker
  • Milestone changed from Backlog to Alpha 7

This is a pretty bad crash. I can reproduce by double clicking in the empty chat box (which shouldn't select anything but tries anyway) and trying to type. It also occurs sometimes if you select valid text.


Assertion failed: "len <= length()"
Location: CStr.cpp:253 (CStrW::Right)

Call stack:

CStrW::Right (cstr.cpp:253)
    this = (unavailable)
    len = 4294967295 (0xFFFFFFFF)

CInput::DeleteCurSelection (cinput.cpp:1874)
    this = (unavailable)
    virtualTo = 1 (0x00000001)

CInput::ManuallyHandleEvent (cinput.cpp:418)
    this = (unavailable)
    ev = 0x0070FC18 -> 
        ev = 
            type = [8] { 0 (0x00), 248 (0xF8), 112 (0x70), 0 (0x00), 117 (0x75), 0 (0x00), 0 (0x00), 0 (0x00) }
            active = { type = 0 (0x00), gain = 248 (0xF8), state = 112 (0x70) }
            key = 
                type = 0 (0x00)
                keysym = { sym = SDLK_u, unicode = 117 (0x0075) }

            motion = { type = 0 (0x00), x = 112 (0x0070), y = 117 (0x0075) }
            button = 
                type = 0 (0x00)
                button = 248 (0xF8)
                state = 112 (0x70)
                x = 117 (0x0075)
                y = 0 (0x0000)

            resize = { type = 0 (0x00), w = 117 (0x00000075), h = 1974337653 (0x75AE0075) }
            expose = { type = 0 (0x00) }
            quit = { type = 0 (0x00) }
            user = { type = 0 (0x00), code = 117 (0x00000075), data1 = 0x75AE0075 }


    cooked = 117 ('u')
    pos_x = 0.000000 (0x00000075)
    current = (_List_iterator<_List_val<CInput::SRow > >)
    pos_x = 0.000000 (0x00000075)
    current = (_List_iterator<_List_val<CInput::SRow > >)
    multiline = false
    max_length = 0 (0x00000000)

CGUI::HandleEvent (cgui.cpp:281)
    this = (unavailable)
    ev = 0x0070FC18 (see above)
    pNearest = 0x106AA360 -> 
        m_CachedActualSize = 
            left = 374.000000 (0x43BB0000)
            top = 616.000000 (0x441A0000)
            right = 846.000000 (0x44538000)
            bottom = 636.000000 (0x441F0000)

        m_Name = { (unsupported basic_string<char,char_traits<char> >) }
        m_Children = (unsupported vector<IGUIObject * >)
        m_pParent = 0x19FCA698 -> 
            m_CachedActualSize = 
                left = 372.000000 (0x43BA0000)
                top = 494.000000 (0x43F70000)
                right = 912.000000 (0x44640000)
                bottom = 639.000000 (0x441FC000)

            m_Name = { (unsupported basic_string<char,char_traits<char> >) }
            m_Children = (unsupported vector<IGUIObject * >)
            m_pParent = 0x19FC94B8 -> 
                m_CachedActualSize = 
                    left = 112.000000 (0x42E00000)
                    top = 84.000000 (0x42A80000)
                    right = 912.000000 (0x44640000)
                    bottom = 684.000000 (0x442B0000)

                m_Name = { (unsupported basic_string<char,char_traits<char> >) }
                m_Children = (unsupported vector<IGUIObject * >)
                m_pParent = 0x107A60F0 -> 
                    m_CachedActualSize = 
                        left = 0.000000 (0x00000000)
                        top = 0.000000 (0x00000000)
                        right = 0.000000 (0x00000000)
                        bottom = 0.000000 (0x00000000)

                    m_Name = { (unsupported basic_string<char,char_traits<char> >) }
                    m_Children = (unsupported vector<IGUIObject * >)
                    m_pParent = 0x00000000
                    m_LastClickTime = [6] 
                        0 (0x0000000000000000)
                        0 (0x0000000000000000)
                        0 (0x0000000000000000)
                        0 (0x0000000000000000)
                        0 (0x0000000000000000)
                        0 (0x0000000000000000)
                    m_MouseHovering = false
                    m_Settings = (unsupported map<CStr8,SGUISetting >)
                    m_pGUI = 0x10701FC8 -> 
                        m_ScriptObject = 0x1A42A2A8 -> (JSObject)
                        m_MousePos = 
                            x = 388.000000 (0x43C20000)
                            y = 626.000000 (0x441C8000)

                        m_MouseButtons = 0 (0x00000000)
                        m_Tooltip = 
                            m_State = 1 (0x00000001)
                            m_PreviousObject = 0x106AA360 (see above)
                            m_PreviousTooltipName = { (unsupported basic_string<char,char_traits<char> >) }
                            m_PreviousMousePos = 
                                x = 388.000000 (0x43C20000)
                                y = 626.000000 (0x441C8000)

                            m_Time = 5.9669e-154 (0x20200027736A2E67)
                            (too much output; skipping to next top-level symbol)

                        m_PreDefinedColors = (unsupported map<CStr8,CColor >)
                        m_BaseObject = 0x107A60F0 (see above)
                        m_FocusedObject = 0x106AA360 (see above)
                        m_pAllObjects = (unsupported map<CStr8,IGUIObject * >)
                        m_InternalNameNumber = 13 (0x0000000D)
                        m_ObjectTypes = (unsupported map<CStr8,IGUIObject * (__cdecl*)(void) >)
                        m_HotkeyObjects = (unsupported map<CStr8,vector<IGUIObject * > >)
                        m_Sprites = (unsupported map<CStr8,CGUISprite >)
                        m_Styles = (unsupported map<CStr8,SGUIStyle >)
                        m_ScrollBarStyles = (unsupported map<CStr8,SGUIScrollBarStyle >)
                        m_Icons = (unsupported map<CStr8,SGUIIcon >)

                    m_ScriptHandlers = (unsupported map<CStr8,JSObject * * >)
                    m_JSObject = 0x00000000

                m_LastClickTime = [6] 
                    0 (0x0000000000000000)
                    0 (0x0000000000000000)
                    0 (0x0000000000000000)
                    0 (0x0000000000000000)
                    0 (0x0000000000000000)
                    0 (0x0000000000000000)
                m_MouseHovering = false
                m_Settings = (unsupported map<CStr8,SGUISetting >)
                m_pGUI = 0x10701FC8 (see above)
                m_ScriptHandlers = (unsupported map<CStr8,JSObject * * >)
                m_JSObject = 0x1A42A3C0 -> (JSObject)

            m_LastClickTime = [6] 
                0 (0x0000000000000000)
                0 (0x0000000000000000)
                0 (0x0000000000000000)
                0 (0x0000000000000000)
                0 (0x0000000000000000)
                0 (0x0000000000000000)
            m_MouseHovering = false
            m_Settings = (unsupported map<CStr8,SGUISetting >)
            m_pGUI = 0x10701FC8 (see above)
            m_ScriptHandlers = (unsupported map<CStr8,JSObject * * >)
            m_JSObject = 0x1A475A00 -> (JSObject)

        m_LastClickTime = [6] 
            0 (0x0000000000000000)
            14.4689 (0x402CF00ED56B0100)
            0 (0x0000000000000000)
            0 (0x0000000000000000)
            0 (0x0000000000000000)
            0 (0x0000000000000000)
        m_MouseHovering = true 
        m_Settings = (unsupported map<CStr8,SGUISetting >)
        m_pGUI = 0x10701FC8 (see above)
        m_ScriptHandlers = (unsupported map<CStr8,JSObject * * >)
        m_JSObject = 0x1A4621B8 -> (JSObject)

    ret = IN_PASS
    oldMousePos = 
        x = 388.000000 (0x43C20000)
        y = 626.000000 (0x441C8000)

    msg = 
        type = 2142099
        value = { (unsupported basic_string<char,char_traits<char> >) }
        skipped = (bool)0x82

    timeElapsed = 1.51133e-306 (0x0070FB1010516A70)
    timeElapsed = 1.51133e-306 (0x0070FB1010516A70)
    e = 0x00000000

CGUIManager::HandleEvent (guimanager.cpp:202)
    this = (unavailable)
    ev = 0x0070FC18 (see above)
    handled = false
    r = 275424096

gui_handler (guimanager.cpp:48)
    ev = 0x0070FC18 (see above)

in_dispatch_event (input.cpp:60)
    ev = 0x0070FC18 (see above)

PumpEvents (main.cpp:149)
    ev = 
        ev = 
            type = 0 (0x00)
            active = { type = 0 (0x00), gain = 248 (0xF8), state = 112 (0x70) }
            key = 
                type = 0 (0x00)
                keysym = { sym = SDLK_u, unicode = 117 (0x0075) }

            motion = { type = 0 (0x00), x = 112 (0x0070), y = 117 (0x0075) }
            button = 
                type = 0 (0x00)
                button = 248 (0xF8)
                state = 112 (0x70)
                x = 117 (0x0075)
                y = 0 (0x0000)

            resize = { type = 0 (0x00), w = 117 (0x00000075), h = 1974337653 (0x75AE0075) }
            expose = { type = 0 (0x00) }
            quit = { type = 0 (0x00) }
            user = { type = 0 (0x00), code = 117 (0x00000075), data1 = 0x75AE0075 (see above) }



Frame (main.cpp:309)
    need_update = true 
    TimeSinceLastFrame = 0.002245 (0x3B131938)
    need_render = true 
    down = [3] { 0.000000 (0x00374B7B), 0.000000 (0x00000001), 0.000000 (0x0070FE44) }

RunGameOrAtlas (main.cpp:492)
    argc = 1 (0x00000001)
    argv = (unavailable)
    args = 
        m_Args = (unsupported vector<pair<CStr8,CStr8> >)
        m_Arg0 = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 92 ('\')


    paths = 
        m_root = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 64916

        m_rdata = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 31728

        m_data = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 372

        m_config = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 6720

        m_cache = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 14458

        m_logs = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 507


    replay = 
        m_Stream = 0x00000000

    mod = 
        path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
        separator = 57914

    zip = 
        path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
        separator = 23

    paths = 
        m_root = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 64916

        m_rdata = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 31728

        m_data = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 372

        m_config = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 6720

        m_cache = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 14458

        m_logs = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 507


    builder = 
        m_VFS = 
            px = 0x02308190 -> (IVFS)
            pn = 
                pi_ = 0x00000001


        m_Files = (unsupported vector<Path >)
        m_TempDir = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 530



main (main.cpp:511)
    argc = 1 (0x00000001)
    argv = 0x02307BF0 -> 0x02301A00 -> "C:\Users\Ben\devel\ps\binaries\system\pyrogenesis.exe"

wmain (wseh.cpp:380)
    argc = 1 (0x00000001)
    argv = 0x00747B00 -> 0x00747B08 -> "C:\Users\Ben\devel\ps\binaries\system\pyrogenesis.exe"
    utf8_argv = (unsupported vector<char * >)
    ret = 7633664 (0x00747B00)
    utf8 = (unsupported basic_string<char,char_traits<char> >)

CallStartupWithinTryBlock (wseh.cpp:397)
    ret = 0 (0x00000000)

RtlInitializeExceptionChain (:0)

RtlInitializeExceptionChain (:0)


errno = 0 (No error reported here)
OS error = 0 (no error code was set)

comment:3 Changed 21 months ago by kenny

  • Owner set to kenny
  • Status changed from new to assigned

This probably has to do with some edge case in the double click code I added, I will take a look.

comment:4 Changed 21 months ago by kennethalong

  • Status changed from assigned to closed
  • Resolution set to fixed

(In [10011]) Fixes #898

Note: See TracTickets for help on using tickets.