Opened 13 years ago

Closed 12 years ago

Last modified 12 years ago

#896 closed defect (duplicate)

Brush/plane slice operation causes rare assertion failure

Reported by: Erik Johansson Owned by:
Priority: Should Have Milestone:
Component: Core engine Keywords:
Cc: Patch:

Description

I'm not 100% sure how I got the following error, just using the flatten tool a lot. I'll see if I get it again, but I'll post the error message:

Assertion failed: "idx < si.newv.size()"
Location: Brush.cpp:246 (CBrush::Slice)

Call stack:

CBrush::Slice (brush.cpp:246)
    this = (unavailable)
    plane = 0xFFFFFFFF -> 
        m_Norm = 
            X = (unavailable - internal error)

            Y = (unavailable - internal error)

            Z = (unavailable - internal error)


        m_Dist = (unavailable - internal error)


    result = 0x00000005
    firstInFace = 5 (0x00000005)
    si = 
        v = (error -100500 while analyzing vector<SliceVertexInfo >)
        newv = (error -100500 while analyzing vector<NewVertexInfo >)
        thisFaceNewVertex = 3732780 (0x0038F52C)
        original = 0x0038F4E8 -> 
            m_Vertices = (error -100500 while analyzing vector<CVector3D >)
            m_Faces = (error -100500 while analyzing vector<size_t >)

        result = 0x0038F508 -> 
            m_Vertices = (error -100500 while analyzing vector<CVector3D >)
            m_Faces = (error -100500 while analyzing vector<size_t >)


    startInResultFaceArray = 6 (0x00000006)
    i = 3732828 (0x0038F55C)
    cur = 14 (0x0000000E)

CBrush::Intersect (brush.cpp:297)
    this = (unavailable)
    frustum = 0x03CFDDA0 -> 
        m_aPlanes = [10] 
            
                m_Norm = 
                    X = 1.696903 (0x3FD9341C)
                    Y = -1.762556 (0xBFE19B6D)
                    Z = 0.104325 (0x3DD5A878)

                m_Dist = -0.000019 (0xB79F08D9)

            
                m_Norm = 
                    X = -0.622785 (0xBF1F6ED4)
                    Y = 1.763787 (0x3FE1C3C7)
                    Z = 1.582765 (0x3FCA9808)

                m_Dist = 0.000016 (0x378949FF)

            
                m_Norm = 
                    X = -2.342355 (0xC015E926)
                    Y = -2.664490 (0xC02A8701)
                    Z = 2.678723 (0x402B7031)

                m_Dist = 0.000019 (0x37A097C0)

            
                m_Norm = 
                    X = 3.416473 (0x405AA77E)
                    Y = 2.665722 (0x402A9B2F)
                    Z = -0.991633 (0xBF7DDBA4)

                m_Dist = -0.000022 (0xB7B6569A)

            
                m_Norm = 
                    X = -0.004212 (0xBB8A0680)
                    Y = -0.000005 (0xB6A20A00)
                    Z = -0.006616 (0xBBD8CB80)

                m_Dist = 32.125492 (0x42008081)

            
                m_Norm = 
                    X = 1.078330 (0x3F8A06B8)
                    Y = 0.001236 (0x3AA20A0B)
                    Z = 1.693706 (0x3FD8CB5C)

                m_Dist = -32.125492 (0xC2008081)

            
                m_Norm = 
                    X = 0.000000 (0x00000000)
                    Y = 0.000000 (0x00000000)
                    Z = 0.000000 (0x00000000)

                m_Dist = 0.000000 (0x00000000)

            
                m_Norm = 
                    X = 0.000000 (0x00000000)
                    Y = 0.000000 (0x00000000)
                    Z = 0.000000 (0x00000000)

                m_Dist = 0.000000 (0x00000000)
 ...
        m_NumPlanes = 6 (0x00000006)

    result = 0x0038F52C -> 
        m_Vertices = (error -100500 while analyzing vector<CVector3D >)
        m_Faces = (error -100500 while analyzing vector<size_t >)

    buf = 
        m_Vertices = (error -100500 while analyzing vector<CVector3D >)
        m_Faces = (error -100500 while analyzing vector<size_t >)


CBound::IntersectFrustumConservative (bound.cpp:174)
    this = (unavailable)
    frustum = 0x03CFDDA0 (see above)
    brush = 
        m_Vertices = (error -100500 while analyzing vector<CVector3D >)
        m_Faces = (error -100500 while analyzing vector<size_t >)

    buf = 
        m_Vertices = (error -100500 while analyzing vector<CVector3D >)
        m_Faces = (error -100500 while analyzing vector<size_t >)


ShadowMapInternals::CalcShadowMatrices (shadowmap.cpp:228)
    this = (unavailable)
    minZ = 0.343842 (0x3EB00C0F)
    shift = 
        X = 0.277283 (0x3E8DF7FD)
        Y = 439.700012 (0x43DBD99A)
        Z = 0.000000 (0x00000000)

    lightToTex = 
        _11 = 0.000000 (0x19F1647A)
        _21 = 0.000000 (0x0038F600)
        _31 = 0.000000 (0x0038F60C)
        _41 = 0.000000 (0x00CE6C51)
        _12 = 0.000000 (0x00DC9608)
        _22 = 0.000000 (0x19F1647A)
        _32 = 5.921517 (0x40BD7D12)
        _42 = 0.000000 (0x19F1647A)
        _13 = 5.921517 (0x40BD7D12)
        _23 = 0.000000 (0x03CD1D30)
        _33 = 0.000000 (0x0CA8D970)
        _43 = 0.000000 (0x19F1647A)
        _14 = 5.921517 (0x40BD7D12)
        _24 = 0.000000 (0x0038F868)
        _34 = 0.000000 (0x00CE6C86)
        _44 = 5.921517 (0x40BD7D12)
        _data = [16] 
            0.000000 (0x19F1647A)
            0.000000 (0x0038F600)
            0.000000 (0x0038F60C)
            0.000000 (0x00CE6C51)
            0.000000 (0x00DC9608)
            0.000000 (0x19F1647A)
            5.921517 (0x40BD7D12)
            0.000000 (0x19F1647A)
            5.921517 (0x40BD7D12)
            0.000000 (0x03CD1D30)
            0.000000 (0x0CA8D970)
            0.000000 (0x19F1647A) ...
        _data2d = [4] 
            [4] { 0.000000 (0x19F1647A), 0.000000 (0x0038F600), 0.000000 (0x0038F60C), 0.000000 (0x00CE6C51) }
            [4] { 0.000000 (0x00DC9608), 0.000000 (0x19F1647A), 5.921517 (0x40BD7D12), 0.000000 (0x19F1647A) }
            [4] { 5.921517 (0x40BD7D12), 0.000000 (0x03CD1D30), 0.000000 (0x0CA8D970), 0.000000 (0x19F1647A) }
            [4] { 5.921517 (0x40BD7D12), 0.000000 (0x0038F868), 0.000000 (0x00CE6C86), 5.921517 (0x40BD7D12) }

    offsetX = 0.343842 (0x3EB00C0F)
    texscalex = 5.921517 (0x40BD7D12)
    texscaley = 5497927542043857700000000000000000.000000 (0x778788CD)
    offsetY = -0.553332 (0xBF0DA732)
    texscalez = -0.939027 (0xBF706414)
    scale = 
        X = -0.203328 (0xBE503543)
        Y = 252.507553 (0x437C81EF)
        Z = 340282346638528860000000000000000000000.000000 (0x7F7FFFFF)


ShadowMap::BeginRender (shadowmap.cpp:434)
    this = (unavailable)

CRenderer::RenderShadowMap (renderer.cpp:931)
    this = (unavailable)
    transparentShadows = 
        px = 0x19F1647A -> (RenderModifier)
        pn = 
            pi_ = 0x0038F78C -> 
                use_count_ = 13934493 (0x00D49F9D)
                weak_count_ = 0 (0x00000000)



    shadowTransp = 0.000000 (0x03C55438)

CRenderer::RenderSubmissions (renderer.cpp:1530)
    this = (unavailable)
    waterScissor = 
        m_Data = [2] 
            
                X = -1.#QNAN0 (0xFFFFFFFF)
                Y = 0.000000 (0x0038F708)
                Z = 0.000000 (0x03D24910)

            
                X = 0.000000 (0x0A64AA30)
                Y = 5.921517 (0x40BD7D12)
                Z = 0.000000 (0x19A56E88)


    reflectionScissor = 
        x1 = 253191815 (0x0F176687)
        y1 = 1086160146 (0x40BD7D12)
        x2 = 430272136 (0x19A56E88)
        y2 = 1086160146 (0x40BD7D12)

    refractionScissor = 
        x1 = 3733260 (0x0038F70C)
        y1 = 3733272 (0x0038F718)
        x2 = 13528145 (0x00CE6C51)
        y2 = 14456328 (0x00DC9608)

    dirty = 
        x1 = 64061216 (0x03D17F20)
        y1 = 210461408 (0x0C8B62E0)
        x2 = 253191815 (0x0F176687)
        y2 = 2005371085 (0x778788CD)


CRenderer::RenderScene (renderer.cpp:1792)
    this = (unavailable)
    scene = 0x03CB9568 -> (Scene)
    frustum = 
        m_aPlanes = [10] 
            
                m_Norm = 
                    X = -1.040495 (0xBF852EEF)
                    Y = 1211.236450 (0x44976791)
                    Z = 1.603598 (0x3FCD42B1)

                m_Dist = -0.940888 (0xBF70DE01)

            
                m_Norm = 
                    X = 1.595981 (0x3FCC491B)
                    Y = -859.250427 (0xC456D007)
                    Z = -2.600444 (0xC0266DAE)

                m_Dist = 0.550317 (0x3F0CE18E)

            
                m_Norm = 
                    X = 3.563219 (0x40640BC8)
                    Y = -1054.831055 (0xC483DA98)
                    Z = 2.195049 (0x400C7BB0)

                m_Dist = -2.428372 (0xC01B6A74)

            
                m_Norm = 
                    X = -3.007733 (0xC0407EB2)
                    Y = 1406.817139 (0x44AFDA26)
                    Z = 0.001590 (0x3AD06080)

                m_Dist = 0.007365 (0x3BF15580)

            
                m_Norm = 
                    X = -0.002178 (0xBB0EC300)
                    Y = 30.745148 (0x41F5F610)
                    Z = -0.406985 (0xBED0604A)

                m_Dist = -1.885421 (0xBFF15578)

            
                m_Norm = 
                    X = 0.557665 (0x3F0EC31A)
                    Y = 321.240845 (0x43A09ED4)
                    Z = 0.000000 (0x00000000)

                m_Dist = 0.000000 (0x00000000)

            
                m_Norm = 
                    X = 0.000000 (0x00000000)
                    Y = 0.000000 (0x00000000)
                    Z = 0.000000 (0x00000000)

                m_Dist = 0.000000 (0x00000000)

            
                m_Norm = 
                    X = 0.000000 (0x00000000)
                    Y = 0.000000 (0x00000000)
                    Z = 0.000000 (0x00000000)

                m_Dist = 0.000000 (0x00000000)
 ...
        m_NumPlanes = 63798520 (0x03CD7CF8)


CGameView::Render (gameview.cpp:470)
    this = (unavailable)

Render (gamesetup.cpp:215)
    skycol = 
        r = 1.000000 (0x3F800000)
        g = -170141183460469230000000000000000000000.000000 (0xFF000000)
        b = 0.000000 (0x00000000)
        a = 0.000000 (0x00200000)

    skystring = { (error -100500 while analyzing string >) }
    cursorName = { (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >) }

ViewGame::Render (view.cpp:248)
    this = (unavailable)
    vp = 
        m_X = 0 (0x00000000)
        m_Y = 1476 (0x000005C4)
        m_Width = 762 (0x000002FA)
        m_Height = 3212836864 (0xBF800000)

    costClass = 0 (0x00)
    goal = 
        type = POINT
        x = 
            value = 0 (0x00000000)

        z = 
            value = 0 (0x00000000)

        u = 
            X = 
                value = 0 (0x00000000)

            Y = 
                value = 0 (0x00000000)


        v = 
            X = 
                value = 0 (0x00000000)

            Y = 
                value = 0 (0x00000000)


        hw = 
            value = 0 (0x00000000)

        hh = 
            value = 63207156 (0x03C476F4)



BeginAtlas (gameloop.cpp:268)
    args = 0x00000000
    dll = 0x03C27528 -> 
        m_Name = 0x03C303D8 -> [8] { 64 ('@'), 142, 209, 12, 0, 0, 0, 0 }
        m_Handle = 0x03C278F8

    hooks = 
        override_gl_upload_caps = 0x03C27A70 -> 
        get_log_dir = 0x00000000
        bundle_logs = 0x00000000
        translate = 0x00C073F2 -> (CmdLineArgs::Has)
        translate_free = 0x0D0E9378 -> 
        log = 0x00000051
        display_error = 0x00000000

    uiThread = 6 (0x00000006)
    msgPasser = 
        (AtlasMessage::MessagePasser)
        m_Mutex = 
            m_Mutex = 0x00000020

        m_SemaphoreName = { (error -100500 while analyzing string >) }
        m_Semaphore = 0x00000002
        m_Queue = (error -100500 while analyzing queue<AtlasMessage::IMessage *,deque<AtlasMessage::IMessage * > >)
        m_Trace = (bool)0x20

    paths = 
        m_root = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 31320

        m_rdata = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 428

        m_data = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 360

        m_config = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 55534

        m_cache = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 10192

        m_logs = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 47 ('/')


    last_activity = 1.08646e-311 (0x0000020000000125)
    recent_activity = false
    time = 6.0267e+175 (0x646E756F72416574)
    ev = 
        ev = 
            type = 26 (0x1A)
            active = { type = 26 (0x1A), gain = 0 (0x00), state = 0 (0x00) }
            key = 
                type = 26 (0x1A)
                keysym = { sym = 31, unicode = 31360 (0x7A80) }

            motion = { type = 26 (0x1A), x = 0 (0x0000), y = 31 (0x001F) }
            button = 
                type = 26 (0x1A)
                button = 0 (0x00)
                state = 0 (0x00)
                x = 31 (0x001F)
                y = 0 (0x0000)

            resize = { type = 26 (0x1A), w = 31 (0x0000001F), h = 63076992 (0x03C27A80) }
            expose = { type = 26 (0x1A) }
            quit = { type = 26 (0x1A) }
            user = { type = 26 (0x1A), code = 31 (0x0000001F), data1 = 0x03C27A80 }


    length = 0.000000 (0x03007400)
    last_time = 7549.07 (0x40BD7D11EEF0839A)
    name = (error -100500 while analyzing string >)
    sleepUntil = 6.0267e+175 (0x646E756F72416574)

ATLAS_RunIfOnCmdLine (atlas.cpp:77)
    args = 0x0038FC1C -> 
        m_Args = (error -100500 while analyzing vector<pair<CStr8,CStr8> >)
        m_Arg0 = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = [8] { 47 ('/'), 30598, 64980, 56 ('8'), 32 (' '), 0, 57382, 30598 }


    force = false

RunGameOrAtlas (main.cpp:437)
    argc = 2 (0x00000002)
    argv = 0x03C27A50 -> 0x03C26CE0 -> "pyrogenesis.exe"
    args = 
        m_Args = (error -100500 while analyzing vector<pair<CStr8,CStr8> >)
        m_Arg0 = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 64980


    paths = 
        m_root = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 7885

        m_rdata = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 1

        m_data = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 64824

        m_config = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 0

        m_cache = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 64900

        m_logs = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 18902


    replay = 
        m_Stream = 0x00020024 -> (error -100406 while analyzing basic_istream<char,char_traits<char> >)

    mod = 
        path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
        separator = 63062

    zip = 
        path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
        separator = 0

    paths = 
        m_root = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 7885

        m_rdata = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 1

        m_data = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 64824

        m_config = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 0

        m_cache = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 64900

        m_logs = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 18902


    builder = 
        m_VFS = 
            px = 0x00000000
            pn = 
                pi_ = 0x00000020


        m_Files = (error -100500 while analyzing vector<Path >)
        m_TempDir = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 72 ('H')



main (main.cpp:511)
    argc = 2 (0x00000002)
    argv = 0x03C27A50 (see above)

wmain (wseh.cpp:380)
    argc = 2 (0x00000002)
    argv = 0x03C26C98 -> 0x03C26CA4 -> "pyrogenesis.exe"
    utf8_argv = (error -100500 while analyzing vector<char * >)
    ret = 13873581 (0x00D3B1AD)
    utf8 = (error -100500 while analyzing string >)

__tmainCRTStartup (crtexe.c:583)
    nested = 0 (0x00000000)

CallStartupWithinTryBlock (wseh.cpp:397)
    ret = 939161476 (0x37FA7784)

BaseThreadInitThunk (:0)

RtlInitializeExceptionChain (:0)

RtlInitializeExceptionChain (:0)


errno = 0 (No error reported here)
OS error = 487 (Ett försök gjordes att använda en ogiltig adress.)

(The Swedish text means more or less: An attempt was made to use an invalid address.)

Change History (3)

comment:1 by Philip Taylor, 13 years ago

Component: Atlas editorGame engine
Summary: Atlas crashBrush/plane slice operation causes rare assertion failure

Looks like CBrush::Slice is failing to handle certain parameters, but I can't find what values trigger the error. Probably need to check the algorithm carefully to figure out what might be going wrong.

comment:2 by historic_bruno, 12 years ago

Resolution: duplicate
Status: newclosed

Closing this as duplicate of #1027, since that ticket has more info (crash dumps, etc).

comment:3 by historic_bruno, 12 years ago

Milestone: Backlog
Note: See TracTickets for help on using tickets.