<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=US-ASCII">
<META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2653.12">
<TITLE>RE: [gambit-list] Calling from C on Windows</TITLE>
</HEAD>
<BODY>

<P><FONT SIZE=2>Thanks Marc,</FONT>
</P>

<P><FONT SIZE=2>I figured out you are very busy and I tried to find exactly why it happens but it wasn't too obvious for me. I just thought maybe someone else more experienced than me (especially looking at assembly code) had the same problem.</FONT></P>

<P><FONT SIZE=2>It's very good news it's on your list.</FONT>
</P>

<P><FONT SIZE=2>I also have an unrelated question regarding the limitations for the C-Scheme interface in a multithreading environment.</FONT>
<BR><FONT SIZE=2>I read that there is a problem with multithreading when calling C to Scheme and back to C due to stack cleanup. I would like to know what are the safe scenarios.</FONT></P>

<P><FONT SIZE=2>Would it also happen in a chain like Scheme to C and back to Scheme?</FONT>
</P>

<P><FONT SIZE=2>I assume that calling just Scheme to C or just C from Scheme in a multithreaded environment would be ok. Is that the case?</FONT></P>

<P><FONT SIZE=2>Regards,</FONT>
<BR><FONT SIZE=2>Dan.</FONT>
</P>
<BR>
<BR>

<P><FONT SIZE=2>-----Original Message-----</FONT>
<BR><FONT SIZE=2>From: Marc Feeley [<A HREF="mailto:feeley@IRO.UMontreal.CA">mailto:feeley@IRO.UMontreal.CA</A>] </FONT>
<BR><FONT SIZE=2>Sent: Wednesday, March 16, 2005 6:58 PM</FONT>
<BR><FONT SIZE=2>To: dhristodorescu@borderfree.com</FONT>
<BR><FONT SIZE=2>Subject: Re: [gambit-list] Calling from C on Windows</FONT>
</P>

<P><FONT SIZE=2>> Hello,</FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>>  </FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> Does anyone have any luck in calling Gambit4b12 from a C function on a</FONT>
<BR><FONT SIZE=2>> non-console Windows application?</FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> I tried it with both mingw and VS6 and while it works fine in a console</FONT>
<BR><FONT SIZE=2>> application it crashes when compiled for the graphical subsystem.</FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> In debugger it seems that inside the Scheme function a parameter retrieved</FONT>
<BR><FONT SIZE=2>> from the stack doesn't have the proper value and I get a segfault.</FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> I think it has something to do with the stack frame alignment but I couldn't</FONT>
<BR><FONT SIZE=2>> figure out how to avoid it.</FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>>  </FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> I would appreciate any hints on how to make it work.</FONT>
</P>

<P><FONT SIZE=2>Sorry, I've been very busy lately and couldn't look into it.</FONT>
<BR><FONT SIZE=2>I'll do that first thing tomorrow morning.  It appears the</FONT>
<BR><FONT SIZE=2>problem also exists with Linux.</FONT>
</P>

<P><FONT SIZE=2>Marc</FONT>
</P>

</BODY>
</HTML>