[Ecls-list] ERROR caused by FPU control settings...

Dietrich Bollmann dietrich at formgames.org
Fri Apr 19 03:07:32 UTC 2013


[Answering to my own posting once again]

> I started with the following minimal code executed from a Rhino plugin:
> ...
>   cl_boot(argc, argv);
>   cl_shutdown();
> ...
> But when loading the plugin I get the following error message:
> ...
>   Something has changed the FPU control settings.

> In file 'ecl/src/gc-unstable/mach_dep.c' the FPU control word is changed
with 'fldcw'.
> But this seems to apply only in the case of Linux.  I have the problem
with Windows...
> I could not find any other place where the FPU control settings are
changed.

> Am I missing something?

Yes, I am:  ECL relies on the underlying operating system > The operating
system is Windows > And here is the problem :)

The debugger indicates the dynamic load library mfc100ud.dll as the origin
of the problem...

I also found a solution:

Rhino provides the macros ON_FPU_BeforeSloppyCall() and
ON_FPU_AfterSloppyCall()
for similar cases and wrapping the call to cl_boot(argc, argv) allows to
get rid of the error message:

  ON_FPU_BeforeSloppyCall();
  cl_boot(argc, argv);
  ON_FPU_AfterSloppyCall();

I only dislike to qualify cl_boot() as "sloppy" rather than the underlying
operating system.  But a comment will help :)

Here, for the case somebody else encounters a similar problem, the relevant
page in the Rhino C++ SDK Knowledge Base:

  - FPU Issues
    http://wiki.mcneel.com/developer/sdksamples/fpusloppycall

By the way, is there some alternative to cl_boot(argc, argv) which allows
to initialise ECL without providing argc and argv?

Sorry for the inconvenience,

Dietrich




On Fri, Apr 19, 2013 at 1:27 AM, Dietrich Bollmann
<dietrich at formgames.org>wrote:

> Hi again,
>
>
> > I get the following error message:
> > ...
>
> >   Something has changed the FPU control settings.
> > ...
>
> > Any idea how I can avoid this?
>
> In file 'ecl/src/gc-unstable/mach_dep.c' the FPU control word is changed
> with 'fldcw'.  But this seems to apply only in the case of Linux.  I have
> the problem with Windows...  I could not find any other place where the FPU
> control settings are changed.  Am I missing something?
>
> Thanks,
>
> Dietrich
>
>
>
>
> On Thu, Apr 18, 2013 at 8:43 PM, Dietrich Bollmann <dietrich at formgames.org>
> wrote:
> >
> > Hi,
> >
> > I would like to integrate ECL into the 3D modelling software
> > "Rhinoceros" (http://en.wikipedia.org/wiki/Rhino3D).
> >
> > I started with the following minimal code executed from a Rhino plugin:
> >
> >   char *argv[] = {"Rhinoceros", NULL};
> >   int argc = sizeof(argv) / sizeof(char*) - 1;
> >   cl_boot(argc, argv);
> >   cl_shutdown();
> >
> > But when loading the plugin I get the following error message:
> >
> >   Rhinoceros 5.0 RHINO ERROR
> >   File name: rhino3MathErrorHandling.cpp
> >   Line number: 256
> >   Function name: RhMathErrorCheck
> >   Something has changed the FPU control settings.
> >   See debugger output window for details.
> >
> > Any idea how I can avoid this?
> >
> > Thanks,
> >
> > Dietrich
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/ecl-devel/attachments/20130419/752faecf/attachment.html>


More information about the ecl-devel mailing list