Opened 13 years ago

Closed 13 years ago

#898 closed defect (fixed)

Multiplayer game crashes in lobby when selecting text

Reported by: Luke Martinez Owned by: Kenny Long
Priority: Release Blocker Milestone: Alpha 7
Component: Core engine Keywords:
Cc: Kenny Long Patch:

Description

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

Reproduced on: Windows 7, Fedora.

Change History (4)

comment:1 by Erik Johansson, 13 years ago

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 by historic_bruno, 13 years ago

Cc: Kenny Long added
Milestone: BacklogAlpha 7
Priority: Must HaveRelease Blocker

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 by Kenny Long, 13 years ago

Owner: set to Kenny Long
Status: newassigned

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

comment:4 by kennethalong, 13 years ago

Resolution: fixed
Status: assignedclosed

(In [10011]) Fixes #898

Note: See TracTickets for help on using tickets.