On Fri, 19 May 2000, Lionel Ulmer wrote:

> > [snip]
> > > +print '    "\tpopl %ecx\n"' . " \\\n";=0A=
> > > +print '    "\tsubl $" #argsize ", %esp\n"' . " \\\n";=0A=
> > > +print '    "\tjmp *%ecx\n"' . " \\\n";=0A=
> > 
> > This appears to be broken;  you need to *add* the argsize instead
> > of subtracting it, and furthermore the return address lies now
> > *above* the arguments after the stack permutation you did above ;-)
> > 
> > What about this instead of the last three lines:
> > 
> >   print "\taddl $" #argsize ", %esp\n";
> >   print "\tret\n";
> 
> I did that and it does not solve the problem : it crashes at the same
> GL call (glGetString) but this time at address 0x00000000 and not
> 0x00001F00 as before.
> 
> How can I help debugging this further (except by looking at an x86 ASM
> book :-) ) ?

Well, if it changed the failure mode, we're probably looking at the right
bit :-)

How about a dump of the surrounding section of stack? What are the
arguments being passed in this case - is one of the 0, perchance??


James.

Reply via email to