On Wed, May 31, 2000 at 05:46:39PM +0200, Uwe Bonnes wrote:
> Hallo,
> 
> some program (autoptn.exe from the Maxim Full-Line catalog version
> 4/2000) crashes like this
> 
> Call kernel32.446: GlobalHandle(403b5bdc) ret=0f725ce0 fs=008f
> Ret  kernel32.446: GlobalHandle() retval=403b5bb6 ret=0f725ce0 fs=008f
> Call kernel32.453: GlobalUnlock(00005bb6) ret=0f725cee fs=008f
> fixme:seh:EXC_RtlRaiseException BON:skipping
> 
> GlobalUnlock is called with the High word zero.
> 
> The corressponding code is:
> 0x0f725cda (VB40032.DLL.EbResetProject+0x157f): call    *0xf7bc25c -> 0x40103770 
>(GlobalHandle [global.c:1148])
> 0x0f725ce0 (VB40032.DLL.EbResetProject+0x1585): testl   %eax,%eax
> 0x0f725ce2 (VB40032.DLL.EbResetProject+0x1587): jz      0x0f725cf5 
>(VB40032.DLL.EbResetProject+0x159a)
> 0x0f725ce4 (VB40032.DLL.EbResetProject+0x1589): movzwl  %eax,%edi
> 0x0f725ce7 (VB40032.DLL.EbResetProject+0x158c): pushl   %edi
> 0x0f725ce8 (VB40032.DLL.EbResetProject+0x158d): call    *0xf7bc2dc -> 0x401036f0 
>(GlobalUnlock [global.c:1107])
> 
> So it is on explicit request of the code that the high word is
> cleared.
> 
> Does this make any sense?

No.

Win95 tries to dereference the passed pointer and returns
ERROR_INVALID_PARAMETER in that case.

I think this might be some leftover Win16 code, it doesn't actually show
good programming style.

Probably GlobalHandle should fail? Don't know.

Ciao, Marcus

Reply via email to