Game hangs on launch
Reproduction:
1. Install the game. (3.0.0)
2. Launch the game. It hangs at the initial splash screen that reads:
"S.M. Civ. IV B.T.S."
followed by loading in 4+ languages.
It never gets beyond that point.
Observations:
I uninstalled and reinstalled in an attempt to fix the bug. The problem happened in both 3.0.2 and 3.0.0.
This occurs after it launches the ~e5.0001 process.
~e5.0001 is registered to http://www.macrovision.com/.
The name of the process is "Cleanup".
Macrovision provides copy protection software.
So one possible cause for this is the copy protection screwing up. It might not be involved...
Using debuggers, the ~e5.0001 process is running at offset 0040215A during the hang period. The call stack is:
The BTS process (the parent process of the ~e5.0001 process) is running at offset 01BF3A88 within ~de1d50.tmp in function offset 01bf3a88()
The call stack is:
Naturally I don't have a symbol table, so I can't tell you what the names of those functions are.
A competent debugger with a symbol table for their DLLs should be able to work it out.
Note that the above bug happens in 3.0.2 -- when it happened, I reinstalled civ4, and when it still happened, I did more investigation.
Dependency walker did not find anything significantly amiss (some deep delay loads -- some deep delay loads, MSJAVA.DLL and MPR.DLL, are in error, but that isn't out of the ordinary) in either process.
Anyone have a clue how to fix this?
As an aside:
A this point, stack looks like:
5 (doesn't change)
368 (this increments every time around)
0x01c3c670 (looks like a pointer, doesn't change)
0x0012ef40 (looks like a pointer, doesn't change)
Odds are that 368 is a counter that leads the the eventual shutdown of the game -- at 816(?0x0330) the program changes direction. Probably the ~e5 process is doing some jiggery-pokery "copy protection" mojo, and the handshaking just isn't working.
Ok, more information. Looking in the event viewer, application log, I get:
The lowest one was from before I reinstalled civ4beyond the sword.
*sigh*
Reproduction:
1. Install the game. (3.0.0)
2. Launch the game. It hangs at the initial splash screen that reads:
"S.M. Civ. IV B.T.S."
followed by loading in 4+ languages.
It never gets beyond that point.
Observations:
I uninstalled and reinstalled in an attempt to fix the bug. The problem happened in both 3.0.2 and 3.0.0.
This occurs after it launches the ~e5.0001 process.
~e5.0001 is registered to http://www.macrovision.com/.
The name of the process is "Cleanup".
Macrovision provides copy protection software.
So one possible cause for this is the copy protection screwing up. It might not be involved...
Using debuggers, the ~e5.0001 process is running at offset 0040215A during the hang period. The call stack is:
> ~e5.0001!0040215a()
~e5.0001!00403005()
~e5.0001!00402e99()
ntdll.dll!7c91712a()
kernel32.dll!7c816fd7()
ntdll.dll!7c91712a()
The BTS process (the parent process of the ~e5.0001 process) is running at offset 01BF3A88 within ~de1d50.tmp in function offset 01bf3a88()
The call stack is:
> ~de1d50.tmp!01bf3a88()
~de1d50.tmp!01bd3c3f()
~de1d50.tmp!01bd35b8()
~de1d50.tmp!01bca151()
~de1d50.tmp!01bce427()
~de1d50.tmp!01bce107()
~de1d50.tmp!01bde9ed()
~de1d50.tmp!01bde10d()
Naturally I don't have a symbol table, so I can't tell you what the names of those functions are.

Note that the above bug happens in 3.0.2 -- when it happened, I reinstalled civ4, and when it still happened, I did more investigation.
Dependency walker did not find anything significantly amiss (some deep delay loads -- some deep delay loads, MSJAVA.DLL and MPR.DLL, are in error, but that isn't out of the ordinary) in either process.
Anyone have a clue how to fix this?
As an aside:
Seems to be the call that causes the CD to spin & check access.01BDE108 call 01BDE9A0
A this point, stack looks like:
5 (doesn't change)
368 (this increments every time around)
0x01c3c670 (looks like a pointer, doesn't change)
0x0012ef40 (looks like a pointer, doesn't change)
Odds are that 368 is a counter that leads the the eventual shutdown of the game -- at 816(?0x0330) the program changes direction. Probably the ~e5 process is doing some jiggery-pokery "copy protection" mojo, and the handshaking just isn't working.
Ok, more information. Looking in the event viewer, application log, I get:
Faulting application civ4beyondsword.exe, version 3.0.0.86, faulting module ~df394b.tmp, version 0.0.0.0, fault address 0x00078c9c.
Faulting application civ4beyondsword.exe, version 3.0.0.86, faulting module ~df394b.tmp, version 0.0.0.0, fault address 0x00078c9c.
...
Faulting application civ4beyondsword.exe, version 3.0.2.94, faulting module ~df394b.tmp, version 0.0.0.0, fault address 0x0007965a.
The lowest one was from before I reinstalled civ4beyond the sword.
*sigh*