Ticket #896 (closed defect: duplicate)
Brush/plane slice operation causes rare assertion failure
| Reported by: | feneur | Owned by: | |
|---|---|---|---|
| Priority: | Should Have | Milestone: | |
| Component: | Core engine | Keywords: | |
| Cc: |
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
comment:1 Changed 10 months ago by Philip
- Component changed from Atlas editor to Game engine
- Summary changed from Atlas crash to Brush/plane slice operation causes rare assertion failure
Note: See
TracTickets for help on using
tickets.

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.