Hard Light Productions Forums
Modding, Mission Design, and Coding => The FRED Workshop => Topic started by: HLD_Prophecy on January 21, 2018, 03:26:09 pm
-
Hey guys!
When I try to load a certain mission from my mod using the debug build of 3.8.0, I get this strange error:
Assert: "(check == this || !check)"
File: jumpnode.cpp
Line: 232
ntdll.dll! NtWaitForSingleObject + 21 bytes
kernel32.dll! WaitForSingleObjectEx + 67 bytes
kernel32.dll! WaitForSingleObject + 18 bytes
fs2_open_3_8_0_SSE2-FASTDBG.exe! <no symbol>
fs2_open_3_8_0_SSE2-FASTDBG.exe! <no symbol>
fs2_open_3_8_0_SSE2-FASTDBG.exe! <no symbol>
fs2_open_3_8_0_SSE2-FASTDBG.exe! <no symbol>
fs2_open_3_8_0_SSE2-FASTDBG.exe! <no symbol>
fs2_open_3_8_0_SSE2-FASTDBG.exe! <no symbol>
fs2_open_3_8_0_SSE2-FASTDBG.exe! <no symbol>
fs2_open_3_8_0_SSE2-FASTDBG.exe! <no symbol>
fs2_open_3_8_0_SSE2-FASTDBG.exe! <no symbol>
fs2_open_3_8_0_SSE2-FASTDBG.exe! <no symbol>
fs2_open_3_8_0_SSE2-FASTDBG.exe! <no symbol>
fs2_open_3_8_0_SSE2-FASTDBG.exe! <no symbol>
fs2_open_3_8_0_SSE2-FASTDBG.exe! <no symbol>
-
This Assertion is hit because you have at least two jump nodes in that mission that have the same name or a jump node that gets the name of an already existing node assigned. Jump node names must be unique.
-
Indeed, that was the problem! Thanks.
For my further education, what does the line: Assert: "(check == this || !check)" mean?
-
To a non-coder, that line means nothing (which is why it's going to get changed in an upcoming nightly (https://github.com/scp-fs2open/fs2open.github.com/pull/1583)). You need to have the source code available to make sense of it; what it means is that an assertion has failed (assertions are things we use to check data, they exist to check if incoming data falls within the expected range for a given function). In this particular case, the engine tried to look up the new name in its list of existing jump nodes. The assertion then checked if it found the jump node being renamed (the "check == this" part), or if the jump node it found existed at all (the "!check" part). If either of those checks fail, the assertion is triggered.
-
To a non-coder, that line means nothing (which is why it's going to get changed in an upcoming nightly (https://github.com/scp-fs2open/fs2open.github.com/pull/1583)). You need to have the source code available to make sense of it; what it means is that an assertion has failed (assertions are things we use to check data, they exist to check if incoming data falls within the expected range for a given function). In this particular case, the engine tried to look up the new name in its list of existing jump nodes. The assertion then checked if it found the jump node being renamed (the "check == this" part), or if the jump node it found existed at all (the "!check" part). If either of those checks fail, the assertion is triggered.
Thanks for the explanation, I'm no code wizard but I do like to think about what's going on behind the scenes. Stretches my mind. :)