Opened 13 years ago

Closed 13 years ago

Last modified 13 years ago

#920 closed defect (fixed)

Crash on exit: Handle tag mismatch (stale reference?)

Reported by: historic_bruno Owned by:
Priority: Should Have Milestone: Alpha 7
Component: Core engine Keywords:
Cc: Jan Wassenberg Patch:

Description

OS: Win 7 Pro 64-bit
Version: [9967] release build (32-bit), compiled with VC 2010 express

First time I've seen this type of error on this computer and not sure that I can reproduce it :/ Hope there's some info here that helps.


Function call failed: return value was -120003 (Handle tag mismatch (stale reference?))
Location: h_mgr.cpp:235 (h_data_tag)

Call stack:

h_data_tag_type (h_mgr.cpp:247)
    h = 600834437 (0x0000000023D00185)
    type = 0x002D6060 -> 
        init = 0x0021D9D0 -> (OglTex_init)
        reload = 0x0021DA20 -> (OglTex_reload)
        dtor = 0x0021C820 -> (OglTex_dtor)
        validate = 0x0021D2A0 -> (OglTex_validate)
        to_string = 0x0021C860 -> (OglTex_to_string)
        user_size = 64 (0x00000040)
        name = 0x0029CFB8 -> "OglTex"

    hd = (unavailable)

h_free (h_mgr.cpp:583)
    h = 0x03A0F280 -> 60879008 (0x0000000003A0F0A0)
    type = 0x002D6060 (see above)
    hd = 0x03A0F280 (see above)

ogl_tex_free (ogl_tex.cpp:557)
    ht = 0x03A10E3C -> 0 (0x0000000000000000)

UniFont_dtor (unifont.cpp:70)
    f = 0x03A10E3C (see above)

Shutdown (h_mgr.cpp:747)

ModuleShutdown (module_init.cpp:72)
    initState = 0x002DA8CC -> 4294867266 (0xFFFE7942)
    shutdown = 0x0021FE60 -> (Shutdown)

h_mgr_shutdown (h_mgr.cpp:761)

Shutdown (gamesetup.cpp:672)
    __formal = 0 (0x00000000)
    LINE_624_ = 
        m_t0 = 56.3885 (0x404C31BA344CB175)
        m_description = 0x00280078 -> "resource modules"

    LINE_629_ = 
        m_t0 = 56.3885 (0x404C31BA344CB175)
        m_description = 0x00280078 (see above)

    LINE_634_ = 
        m_t0 = 56.3885 (0x404C31BA344CB175)
        m_description = 0x00280078 (see above)

    LINE_641_ = 
        m_t0 = 56.3885 (0x404C31BA344CB175)
        m_description = 0x00280078 (see above)

    LINE_647_ = 
        m_t0 = 56.3885 (0x404C31BA344CB175)
        m_description = 0x00280078 (see above)

    LINE_651_ = 
        m_t0 = 56.3885 (0x404C31BA344CB175)
        m_description = 0x00280078 (see above)

    LINE_655_ = 
        m_t0 = 56.3885 (0x404C31BA344CB175)
        m_description = 0x00280078 (see above)

    LINE_661_ = 
        m_t0 = 56.3885 (0x404C31BA344CB175)
        m_description = 0x00280078 (see above)

    LINE_674_ = 
        m_t0 = 56.3885 (0x404C31BA344CB175)
        m_description = 0x00280078 (see above)


RunGameOrAtlas (main.cpp:493)
    argc = 2 (0x00000002)
    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 = 0

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

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

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

        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 = 10066


    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 = 0

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

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

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

        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 = 10066


    builder = 
        m_VFS = 
            px = 0x020A2750 -> (IVFS)
            pn = 
                pi_ = 0x002A0035 -> 
                    use_count_ = 1811939328 (0x6C000000)
                    weak_count_ = 1979737344 (0x76006500)



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



main (main.cpp:511)
    argc = 2 (0x00000002)
    argv = 0x020A7B38 -> 0x01FC83F0 -> "C:\Users\Ben\devel\ps\binaries\system\pyrogenesis.exe"

wmain (wseh.cpp:380)
    argc = 2 (0x00000002)
    argv = 0x01FC7A00 -> 0x01FC7A0C -> "C:\Users\Ben\devel\ps\binaries\system\pyrogenesis.exe"
    utf8_argv = (unsupported vector<char * >)
    ret = 33323520 (0x01FC7A00)
    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 = 487 (Attempt to access invalid address.)

Change History (5)

comment:1 by historic_bruno, 13 years ago

Hmm, I've gotten this error 2-3 times since then.

comment:2 by Jan Wassenberg, 13 years ago

Gah, this one's elusive. FYI, the exact error message is new, it's just somewhat more detailed reporting of the same crash at shutdown bug we've been seeing intermittently. The rarity made me think of a race condition, so I wrapped the important routines in critical sections (h_alloc, h_free, h_reload, h_find, h_force_free, Shutdown). That didn't solve the problem - I saw it once after, but unfortunately didn't remember to look in the debug output for the expected/actual handle value. Haven't been able to reproduce it since, even after a really long game. The next time you see this, please check the debug output for "h_mgr: expected handle %llx, got %llx\n". Hopefully that will provide a clue.

comment:3 by historic_bruno, 13 years ago

Try autostart, I get the error much more frequently that way.

Debug output:

h_mgr: expected handle 33f96a0, got 948800fa

comment:4 by historic_bruno, 13 years ago

Resolution: duplicate
Status: newclosed

Duplicates #915.

comment:5 by Jan Wassenberg, 13 years ago

Resolution: duplicatefixed

(In [10243]) h_mgr: fix simple double-free warning triggered at shutdown when an object's child was freed AND the all objects were forcibly freed (complicated by the fact that the pool allocator overwrites freed storage, which made this appear to be a tag conflict). fixes #860, #915, #920

Note: See TracTickets for help on using tickets.