<BR><BR><BR><BR><BR>
<BLOCKQUOTE style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #ff0000 2px solid">
<P>&gt; Message du 18/03/04 00:51<BR>&gt; De : Marcus Meissner <MARCUS@JET.FRANKEN.DE><BR>&gt; A : Christian Costa <TITAN.COSTA@WANADOO.FR><BR>&gt; Copie à : wined <WINE-DEVEL@WINEHQ.ORG><BR>&gt; Objet : Re: PLT pointer destroyed problem when loading IR32_32.DLL (Indeo codec)<BR>&gt; On Wed, Mar 17, 2004 at 10:37:01PM +0000, Christian Costa wrote:<BR>&gt; &gt; Hi,<BR>&gt; &gt; <BR>&gt; &gt; When executing the DllMain of the native IR32_32.DLL (VFW), Wine crashes.<BR>&gt; &gt; After some investigations, I found that a part of the code uses the EBX <BR>&gt; &gt; register at one point without saving<BR>&gt; &gt; and restore it afterwards. Since this register contains the PLT pointer <BR>&gt; &gt; for standard unix functions like libc ones, this<BR>&gt; &gt; does not take a long time for Wine to crashing.<BR>&gt; &gt; I tested with the ugly hack attached that saves and restores the EBX <BR>&gt; &gt; register between the call to DllMain and that fixed the problem and<BR>&gt; &gt; the DLL works fine then.<BR>&gt; <BR>&gt; This might happen.</P>
<P>That ebx can be scrapped?</P>
<P><BR>&gt; <BR>&gt; Your fix is not really ok, you must not modify the stackpointer in asm statements.<BR>&gt; <BR>&gt; Try using:<BR>&gt; __asm__ __volatile__ ("":::"ebx");<BR>&gt; <BR>&gt; after entry(), which tells the compiler that ebx has been scrapped. </P>
<P>Thanks for this! :-)<BR></P>
<P>Christian</P>
<P>&nbsp;</P></BLOCKQUOTE>