Hallo,

I have some program crashing on exit:

Call kernel32.446: GlobalHandle(4033d284) ret=0f725ce0 fs=008f
Ret  kernel32.446: GlobalHandle() retval=4033d25e ret=0f725ce0 fs=008f
Call kernel32.453: GlobalUnlock(0000d25e) ret=0f725cee fs=008f
CALL MSVCRT20.562: _except_handler3(<unknown, check return>) ret=4004480a fs=008f

The handle to GlobalUnlock is 0xd25e, which is the lower part of the
return value of GlobalHandle. Looking in the code of the programm
makes things clear:

0x0f725cda (VB40032.DLL.EbResetProject+0x157f): call    *0xf7bc25c -> 0x4007bec0 
(GlobalHandle [global.c:1146])
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 -> 0x4007be40 
(GlobalUnlock [global.c:1105])

The return value is truncated by the movzwl  %eax,%edi
instruction. The programm seems to work with win9x. 

What to do about that?

Bye

Uwe Bonnes                [EMAIL PROTECTED]

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------

Reply via email to