Message du 18/03/04 00:50 De : Mike Hearn A : wine-devel@winehq.com Copie à : Objet : Re: PLT pointer destroyed problem when loading IR32_32.DLL (Indeo codec) On Wed, 17 Mar 2004 22:37:01 +0000, Christian Costa wrote:
When executing the DllMain of the native IR32_32.DLL (VFW), Wine crashes. After some investigations, I found that a part of the code uses the EBX register at one point without saving and restore it afterwards.
What calling convention is the entrypoint declared with?
How can I retreive this info from the dll? I guess it is stdcall like it should be.
I thought EBX was a register that had to be saved/restored according to the ABI and the windows compilers would always do that?
I don't know but that would explain what is happening altough if it was the case I wonder why noone has encountered this problem yet. Bye, Christian
On Thu, 2004-03-18 at 09:33, Christian Costa wrote:
How can I retreive this info from the dll? I guess it is stdcall like it should be.
As far as I know the only way is to disassemble the function prologue. Some of the others would know for sure.
I don't know but that would explain what is happening altough if it was the case I wonder why noone has encountered this problem yet.
Windows is unfortunately riddled with code to clean up the stack after functions declared with the wrong calling convention trash it. It's entirely possible that this DLL was built/compiled incorrectly and Windows cleans up after it. For instance this happens with wndprocs, parts of the shell and I think even DirectX callbacks.
thanks -mike