Troubleshooting/Blam: Difference between revisions

From OniGalore
Jump to navigation Jump to search
(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 [[Installation#Installation 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.
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.


You shouldn't encounter these situations if you play Oni with the Daodan DLL in Windows or the Intel build or patched PPC application in OS X.
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
:See [[Customizing/Binding#What you should be careful about | here]] for details.
:As explained [[Customizing/Binding#start_record, stop_record, play_record|here]], recording a film that approaches half an hour in length can crash Oni.
<!--any other causes?-->
You shouldn't encounter these situations if you play Oni "normally".


===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.
<!--any other causes?-->
You shouldn't encounter these situations if you play Oni "normally".


[[Category:Oni Support]]
[[Category:Oni Support]]

Revision as of 22:08, 6 May 2013

Blam!.png

"Blam!" is a Bungie phrase coined by Robt McLees (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 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. If your version of Oni just crashed on startup, take a look at that file (it's in your 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.

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

There are other occasions when Oni dumps large amounts of text, and when the dumped text is larger than the buffer Bungie set up for it, you'll have an overflow, and Oni will crash.

Examples
debugger.txt - another debug log located in the Oni folder
other debug logs enabled with the -debugfiles command line argument
console output in Developer Mode

Debug logs

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 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.
  • 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.

Non-text buffer overflows

There are other fixed-size buffers that can also overflow and crash Oni.

Movie buffer
As explained here, recording a film that approaches half an hour in length can crash Oni.

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.

Pathfinding
Oni can generate too many pathfinding nodes if a pathfinding grid is inconsistent with the environment (rare).
Switching between characters
Oni will crash if you chr_focus to a character that's not drawn.
Conflicts
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.
(it's a bit more complicated, but who cares?)
Non-existent BSL functions
Oni will crash if you call a non-existent BSL function with the strong syntax.