7
« on: March 01, 2006, 03:24:39 am »
I\'m going to try the manual update in a minute. Here is a short log that might at least tell us why it didn\'t quit with a nicer error message.
In module vfs:
--(probable start of function)--
10007d80 56 push esi
10007d81 57 push edi
10007d82 8bf0 mov esi,eax
10007d84 a17cc00110 mov eax,[vfs!csVFS_Create+0x181ec (1001c07c)]
10007d89 83cfff or edi,0xffffffff
10007d8c 3bc7 cmp eax,edi
10007d8e 7523 jnz vfs!csVFS_Create+0x3f23 (10007db3)
10007d90 8b0dd0c20110 mov ecx,[vfs!csVFS_Create+0x18440 (1001c2d0)]
10007d96 8b01 mov eax,[ecx]
10007d98 688c9d0110 push 0x10019d8c
10007d9d ff5050 call dword ptr [eax+0x50]
10007da0 68e0170010 push 0x100017e0
10007da5 a37cc00110 mov [vfs!csVFS_Create+0x181ec (1001c07c)],eax
10007daa ff1578c00110 call dword ptr [vfs!csVFS_Create+0x181e8 (1001c078)]
10007db0 83c404 add esp,0x4
10007db3 a17cc00110 mov eax,[vfs!csVFS_Create+0x181ec (1001c07c)]
10007db8 8b16 mov edx,[esi]
10007dba 6a02 push 0x2
10007dbc 50 push eax
10007dbd 688c9d0110 push 0x10019d8c
10007dc2 8bce mov ecx,esi
10007dc4 ff522c call dword ptr [edx+0x2c]
--(this call fails)--
Because at [edx+0x2c] is the value 0x5e, which is not a valid function pointer.
All things considered, I think esi is an object pointer or something similar.
Therefore edx must be a pointer to a virtual function table, which as it happens is not pointing at an actual virtual function table.
Assuming thiscall calling convention, I think it tries to make this call:
esi->_vf[11](0x10019d8c, eax, 0x2);
esi == 0xb35860: not in any module -- on the heap?
0x10019d8c: address in vfs
eax == 9 == **1001c2d0: data at pointer at address in vfs
0x2: a constant value
Memory range for vfs: 0x10000000 - 0x10020000
edit: I\'ve downloaded the zip file and extracted the files. PS starts, but when attempting to load the world it always quits with an access violation at address 0041AC3B.
According to the dump:
(4a4.8ec): Access violation - code c0000005 (!!! second chance !!!)
eax=000008ec ebx=0012f854 ecx=00000000 edx=001f03ff esi=0012f156 edi=000001b4
eip=7c90eb94 esp=0012e1bc ebp=0012e1cc iopl=0 nv up ei pl nz na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000202
It\'s the Win32 version. Perhaps a developer can figure out which source line it is and why it tries to fetch data from no man\'s land.
edit: Funny things happened in the updater.
First it couldn\'t update libmng-cs.dll. I solved this by renaming it. The updater gave a nasty error message on startup but worked fine.
Secondly, the file trevor.cal3d seems to be permanently out-of-date, even though it gets updated correctly.
I\'m still getting the same error message - I don\'t think I can solve this. Perhaps if I had a debug-build of psclient.exe with symbols and source-lines I could at least report a bit more specifics on the accessvio.
Oh, and while I\'m at it, if the program crashes while in fullscreen, the error is unreadable.