19,094
edits
(update for Mac side) |
m (link fixes, touch-up) |
||
Line 1: | Line 1: | ||
[[Image:Blam!.png|right]] | [[Image:Blam!.png|right]] | ||
"Blam!" is a Bungie phrase coined by Robt McLees ([http://marathon.bungie.org/story/blam.html source]), and it makes an appearance in Oni in the form of an error message following a fatal error. The actual error dialog only appears in Windows, but some of the problems below will crash the Mac Oni app too. This article is a little bit technical, so it's important to point out first that the '''[[Daodan DLL]]''' solves the most common causes of crashes in Windows, and the Intel build of the Mac app also has many fixes implemented. But if those patches don't help, read on. | "Blam!" is a Bungie phrase coined by Robt McLees ([http://marathon.bungie.org/story/blam.html source]), and it makes an appearance in Oni in the form of an error message following a fatal error. The actual error dialog only appears in Windows, but some of the problems below will crash the Mac Oni app too. This article is a little bit technical, so it's important to point out first that the '''[[Daodan DLL]]''' solves the most common causes of crashes in Windows, and the [[AE:FERAL|Intel build]] of the Mac app also has many fixes implemented. But if those patches don't help, read on. | ||
===Blam at startup=== | ===Blam at startup=== | ||
This problem has been traced to the overflow of a particular text buffer -- the one that lists the OpenGL extensions in the '''startup.txt''' file. | This problem has been traced to the overflow of a particular text buffer -- the one that lists the OpenGL extensions in the '''startup.txt''' file. | ||
If your version of Oni just crashed on startup, take a look at that file (it's in your [[ | If your version of Oni just crashed on startup, take a look at that file (it's in your [[Oni (folder)|Oni folder]]). At the end, there should be a rather big list of available OpenGL extensions. If the list cuts off abruptly, that means that startup failed during its writing. | ||
When Oni was written, the OpenGL extension list dump was much shorter, and the developers did not allow for a larger dump. Modern graphics cards almost always cause this overflow. | When Oni was written, the OpenGL extension list dump was much shorter, and the developers did not allow for a larger dump. Modern graphics cards almost always cause this overflow. | ||
This bug is fixed with the Daodan DLL in Windows and the Intel build and patched Omni build in Mac OS X. | |||
Below are other causes of crashes, though none of them should affect someone who is playing Oni in a normal way. | |||
===Other text buffer overflows=== | ===Other text buffer overflows=== | ||
Line 15: | Line 17: | ||
;Examples | ;Examples | ||
:'''debugger.txt''' - another debug log located in the Oni folder | :'''debugger.txt''' - another debug log located in the Oni folder | ||
:other debug logs enabled with the '''-debugfiles''' [[Customizing#Command-line arguments |command line argument]] | :other debug logs enabled with the '''-debugfiles''' [[Customizing#Command-line arguments|command line argument]] | ||
:console output in [[Developer Mode]] | :console output in [[Developer Mode]] | ||
===Debug logs=== | ===Debug logs=== | ||
What you should remember about them : | What you should remember about them : | ||
*Some debug logs that can cause crashes are only enabled if you choose to do so. (See '''-debugfiles''' under [[Customizing#Command-line arguments |command line argument]].) | *Some debug logs that can cause crashes are only enabled if you choose to do so. (See '''-debugfiles''' under [[Customizing#Command-line arguments|command line argument]].) | ||
*You can't disable the default debug logs ('''debugger.txt''' and '''startup.txt'''), so this cannot prevent the startup Blam. See the "Solution Links" below for patches for this. | *You can't disable the default debug logs ('''debugger.txt''' and '''startup.txt'''), so this cannot prevent the startup Blam. See the "Solution Links" below for patches for this. | ||
*Some other logs (debug files and console output) are either disabled in the executable you're using, or they're (re)enabled and in that case you ''may'' experience a crash. | *Some other logs (debug files and console output) are either disabled in the executable you're using, or they're (re)enabled and in that case you ''may'' experience a crash. | ||
Line 27: | Line 29: | ||
There are other fixed-size buffers that can also overflow and crash Oni. | There are other fixed-size buffers that can also overflow and crash Oni. | ||
;Movie buffer | ;Movie buffer | ||
: | :As explained [[Customizing/Binding#start_record, stop_record, play_record|here]], recording a film that approaches half an hour in length can crash Oni. | ||
===Out of range errors=== | ===Out of range errors=== | ||
There are a number of situations where Oni will "Blam" that have little to do with buffers. Most often, the engine will attempt to address a region in memory but fail to find the expected data. | There are a number of situations where Oni will "Blam" that have little to do with buffers. Most often, the engine will attempt to address a region in memory but fail to find the expected data. | ||
;Pathfinding | ;Pathfinding | ||
:Oni can generate too many pathfinding nodes if a pathfinding grid is inconsistent with the environment (rare) | :Oni can generate too many pathfinding nodes if a pathfinding grid is inconsistent with the environment (rare). | ||
;Switching between characters | ;Switching between characters | ||
:Oni will crash if you '''chr_focus''' to a character that's not drawn | :Oni will crash if you '''chr_focus''' to a character that's not drawn. | ||
;Conflicts | ;Conflicts | ||
:Oni will crash if you fire a gun while in control of an active AI | :Oni will crash if you fire a gun while in control of an active AI | ||
:Oni will crash if you "talk" to a neutral AI while in control of it | :Oni will crash if you "talk" to a neutral AI while in control of it. | ||
:(it's a bit more complicated, but who cares?) | :(it's a bit more complicated, but who cares?) | ||
;Non-existent BSL functions | ;Non-existent BSL functions | ||
:Oni will crash if you call a non-existent BSL function with the strong syntax. | :Oni will crash if you call a non-existent BSL function with the strong syntax. | ||
[[Category:Oni Support]] | [[Category:Oni Support]] |