| posts: 12,488 | Location: Taganrog, Russia
I continue brainstorming possible crash reasons and I’ve got some interesting ideas, which I would like to add to the instructions I gave you in the post #63:
Thanks a lot, more good and useful results. Can you now try to undo both changes one by one (first delete DisableIODriver but leave ForceVGADeviceID, then try to leave DisableIODriver but delete ForceVGADeviceID) to see which of them was responsible for stoping the crashes?
Please start doing these tests from leaving DisableIODriver=1 but deleting ForceVGADeviceID override. I’ve a strong feeling that it will be 100% crash free combo and that we’ve finally nailed down crash reason. Let me explain why:
I was reading PunkBuster specs at their website and found that one of counter-cheating measure used in this software is memory scanning. I don’t know for sure if it try to scan BF process memory only or if scanning is done in memory of other processes too, but if it really does that and try to peek into some of address ranges in context of RivaTuner process, then it can be the reason of unpredictable results (including system crashes). Under Windows OS graphics hardware is usually accessed not via I/O ports but via so called MMIO (Memory Mapped Input / Output) technique. MMIO assumes that CPU maps some memory address range directly to GPU registers. It means that when you read from MMIO “memory” you read GPU registers. The same applies to writes – you may write to MMIO “memory” and it will be retranslated to write to GPU register at hardware level. In other words, a part of “memory” in context of application which is using MMIO is not a system memory but a “window” to GPU registers. Such memory shouldn’t (!!!) be accessed without knowing hardware access protocols. GPU have a lot of stall/write-only/read-and-auto-increment registers, which shouldn’t’ be accessed blindly under any conditions. If anti-cheat system is trying to peek into such memory in hope to find cheats there – crash is quite possible.
And setting DisableIODrver=1 prevents RT from using IO driver, which normally does nothing at background, but it does allocate MMIO range at startup.
If my hypotesis is correct, then other GPU tweaking tools using MMIO like PowerStrip, ATITool, ATITrayTools etc may be affected by that too.
Alexey Nicolaychuk aka Unwinder, RivaTuner creator