Jano Svitok
9/6/2007 1:44:00 PM
On 9/6/07, Luc Holtkamp <lholtkamp@moog-fcs.com> wrote:
> Jano Svitok wrote:
> > On 9/5/07, Luc Holtkamp <lholtkamp@moog-fcs.com> wrote:
> Hi Jano,
> Yes, the 1.3.29 is indeed SWIG, sorry for the confusion
> We use:
> SWIG Version 1.3.29 Compiled with g++ [i686-pc-cygwin]
> ruby 1.8.1 (2003-12-25) [i386-mswin32]
>
> The script itself is very simple, just one line:
>
> Fcstest::Log ("Test 123")
>
> The Fcstest::Log function was wrapped with SWIG. When I tested with this
> script I got error such as:
> #<Errno::EBADF: (eval):190:in `write'Bad file descriptor>
> #<Errno::EBADF: (eval):380:in `write'Bad file descriptor>
>
> If a add more lines to the script I get the errors more often, and the
> numbers tend to be higher.
>
> Maybe ruby tries to write to the console? It's a windows app, so it has
> no console. But normally the calls to puts() don't cause any problems if
> you have no console, at least not in C++.
>
> Luc
Ok, I'm lost ;-) Anyway, two hints:
1. Ruby redefines write/read functions. (#define write(f,x,y)
rb_write(f,x,y) or similar) That meas, if you use I/O, you might end
using ruby output routines. Check that. (see win32.h)
2. Try to find out how eval numbers code lines, and find the wrong
one. I guess it will be something involving IO.
If that doesn't help (desperate scenario :-), build your own ruby,
find in sources where it might be thrown, and set breakpoint there
(most probably file.c or io.c).