[plt-dev] MzCOM triggers error in salloc.c

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Thu May 27 16:59:30 EDT 2010

There were more problems --- now fixed.

At Mon, 24 May 2010 08:44:05 +1000, Paul Steckler wrote:
> Thanks, I'll try that out.
> 
> -- Paul
> 
> 
> On 5/23/10, Matthew Flatt <mflatt at cs.utah.edu> wrote:
> > I forgot to update MzCOM for a new requirement (to support futures) on
> > embedding MzScheme into a Windows executable.
> >
> >
> > I'll try this myself, but if you get to it first, try adding
> >
> >   static __declspec(thread) void *tls_space;
> >
> > to the MzCOM executable, and then put
> >
> >   scheme_register_tls_space(&tls_space, 0);
> >
> > before the call to scheme_main_setup() in evalLoop().
> >
> >
> > At Sun, 23 May 2010 12:12:26 +1000, Paul Steckler wrote:
> >> Erich Neuwirth had written to me that MzCOM from the latest PLT
> >> release crashed for him, so I went off to investigate.  I hadn't run
> >> MzCOM (or MysterX) in yonks (as they say here).
> >>
> >> I compiled MzCOM from sources using Visual Studio 2008, no issues
> >> there.  I couldn't get MysterX (libmysterx)
> >> to compile, though.  The thought was to load MzCOM into MysterX, but
> >> it looked like a tough slog to fix the
> >> compilation errors.  So instead, I decided to write a little C++
> >> driver to load MzCOM.
> >>
> >> The driver compiled fine, but the Eval method in MzCOM just hung.  I
> >> haven't yet looked into that.
> >>
> >> Next, I tried call the About method.  Indeed, I saw the About box --
> >> but then MzCOM crashed.
> >>
> >> The crash is due to a write-to-NULL error around line 368 of salloc.c,
> >> in this block:
> >>
> >>   # elif defined(IMPLEMENT_THREAD_LOCAL_VIA_WIN_TLS)
> >>     *scheme_get_thread_local_variables_ptr() = vars;
> >>
> >> Here's the driver program:
> >>
> >> #include "stdafx.h"
> >> #include "mzcom.h"
> >>
> >> int _tmain(int argc, _TCHAR* argv[])
> >> {
> >> 	CLSID clsid;
> >> 	IMzObj *pIMzObj;
> >>
> >> 	CoInitialize(NULL);
> >>
> >> 	CLSIDFromProgID(L"MzCOM.MzObj.4.2.5.0",&clsid);
> >> 	CoCreateInstance(clsid,NULL,CLSCTX_SERVER,IID_IMzObj, (void
> >> **)&pIMzObj);
> >>
> >> 	pIMzObj->About();
> >>
> >> 	return 0;
> >> }
> >>
> >> It's a VS2008 project, and you need to add mzcom.h and mzcom_i.c from
> >> the mzcom directory in
> >> src/worksp.
> >>
> >> Any ideas?
> >>
> >> -- Paul
> >> _________________________________________________
> >>   For list-related administrative tasks:
> >>   http://list.cs.brown.edu/mailman/listinfo/plt-dev
> >


Posted on the dev mailing list.