View Single Post
  #5  
Old 08-27-2015, 10:49 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

You really only need about this much of a crash dump:
Code:
[08-27-2015 :: 21:15:03] [Crash] C:\Windows\system32\WSOCK32.dll:WSOCK32.dll (723B0000), size: 28672 (result: 0), SymType: '-exported-', PDB: 'C:\Windows\system32\WSOCK32.dll', fileVersion: 6.1.7600.16385 
[08-27-2015 :: 21:15:03] [Crash] C:\Windows\System32\fwpuclnt.dll:fwpuclnt.dll (741E0000), size: 229376 (result: 0), SymType: '-exported-', PDB: 'C:\Windows\System32\fwpuclnt.dll', fileVersion: 6.1.7601.18283 
[08-27-2015 :: 21:15:03] [Crash] C:\Windows\system32\dbghelp.dll:dbghelp.dll (744A0000), size: 962560 (result: 0), SymType: '-exported-', PDB: 'C:\Windows\system32\dbghelp.dll', fileVersion: 6.1.7601.17514 
[08-27-2015 :: 21:15:03] [Crash] [PathToSource]\zone\mod_functions.cpp (137): Mob::mod_effect_value 
[08-27-2015 :: 21:15:03] [Crash] [PathToSource]\zone\spell_effects.cpp (3050): Mob::CalcSpellEffectValue 
[08-27-2015 :: 21:15:03] [Crash] [PathToSource]\zone\spell_effects.cpp (3456): Mob::DoBuffTic 
[08-27-2015 :: 21:15:03] [Crash] [PathToSource]\zone\spell_effects.cpp (3347): Mob::BuffProcess 
[08-27-2015 :: 21:15:03] [Crash] [PathToSource]\zone\client_process.cpp (530): Client::Process 
[08-27-2015 :: 21:15:03] [Crash] [PathToSource]\zone\entity.cpp (481): EntityList::MobProcess 
[08-27-2015 :: 21:15:03] [Crash] [PathToSource]\zone\net.cpp (467): main
and this top line:
Code:
[08-27-2015 :: 21:15:03] [Crash] EXCEPTION_ACCESS_VIOLATION

The rest of it, essentially, is the program unwinding itself.


These two lines:
Code:
First-chance exception at 0x01B237A0 in zone.exe: 0xC0000005: Access violation reading location 0x00000000.
Unhandled exception at 0x01B237A0 in zone.exe: 0xC0000005: Access violation reading location 0x00000000.
are what is echoed by the top line of the crash dump and tells me that you have a null pointer..most likely for 'caster.'


You can/should put a null check in there to avoid crashes..though, you will still need to figure out why you are getting a null value there.

(i.e.,):
Code:
if (caster) { ... }
-or-
if (caster != nullptr) { ... }

-for complete bypass, put this at the beginning-
if (!caster) { return; }
-or-
if (caster == nullptr) { return; }
Always do a validity check on a pointer before attempting to dereference it (i.e., caster->do_something())

In a non-static method, the 'instantiated' mob object itself should never be null. It can consist of invalid data..but, it should always have a memory reference.

However, since you are passing in another mob object by pointer reference, that object can be a nullptr.


In the case of your mod_effect_value(), you would need to determine a baseline 'no effect' value and return that when bypassing
the function's methodology.


EDIT: For those filename unavailables, that just means that the debugger didn't have access to symbol data for that particular object/method.
(Probably something running at a lower level than the debugger itself.)
__________________
Uleat of Bertoxxulous

Compilin' Dirty

Last edited by Uleat; 08-27-2015 at 11:16 PM.. Reason: forgot filename unavailable...
Reply With Quote