[#11073] segfault printing instruction sequence for iterator — <noreply@...>

Bugs item #10527, was opened at 2007-05-02 14:42

14 messages 2007/05/02
[#11142] Re: [ ruby-Bugs-10527 ] segfault printing instruction sequence for iterator — Nobuyoshi Nakada <nobu@...> 2007/05/10

Hi,

[#11188] Re: [ ruby-Bugs-10527 ] segfault printing instruction sequence for iterator — Paul Brannan <pbrannan@...> 2007/05/16

On Thu, May 10, 2007 at 04:51:18PM +0900, Nobuyoshi Nakada wrote:

[#11234] Planning to release 1.8.6 errata — Urabe Shyouhei <shyouhei@...>

Hi all.

17 messages 2007/05/25

[ ruby-Bugs-6788 ] In a c++ program, when I call &quot;fclose()&quot;, or &quot;ofstream::close()&quot; in a file that includes ruby.h, the program crashes

From: <noreply@...>
Date: 2007-05-29 15:56:59 UTC
List: ruby-core #11291
Bugs item #6788, was opened at 2006-11-20 06:35
You can respond by visiting: 
http://rubyforge.org/tracker/?func=detail&atid=1698&aid=6788&group_id=426

>Category: Triage (do not select)
Group: 1.8.2
Status: Open
Resolution: None
Priority: 3
Submitted By: ozi alt (ozizus)
Assigned to: Nobody (None)
>Summary: In a c++ program, when I call &quot;fclose()&quot;, or &quot;ofstream::close()&quot; in a file that includes ruby.h, the program crashes

Initial Comment:
I am embedding ruby strings to my c++ application and calling them with rb_eval_string, and I love it. 

But I noticed this problem:

When I call the C call "fclose()", or "ofstream::close()" in a file that includes ruby.h:

First the Compiler gives a varning: 

Warning 4003: not enough actual parameters for macro 'close'

But compilation finishes fine. Then on runtime, debugger catches an unhandled exception in the fstream file on this code:
...
			if (fclose(_Myfile) != 0)
				_Ans = 0;
			}
...

If I put the ruby.h inclusion and fclose() call in different files, the system still gives the warnings, but the program works fine.

I cannot seem to reproduce now, but when I was trying to find the problem I saw some warnings about  "rb_w32_fclose" of ruby API.

No, There is no problem with my code, as the problem reoccurs even with this simple program that I copy/pasted from web: remove the '#include "ruby.h"' and the program works. Else, it crashes.


/* fopen example */
#include <stdio.h>

#include "ruby.h"

int main ()
{
  FILE * pFile;
  pFile = fopen ("myfile.txt","wt");
  if (pFile!=NULL)
  {
    fputs ("fopen example",pFile);
    fclose (pFile);
  }
  return 0;
}


My system:

IDE: MSVS2005 on WinXPPro
RUBY: ruby 1.8.2 (2004-12-25) [i386-mswin32]

Good Luck


----------------------------------------------------------------------

You can respond by visiting: 
http://rubyforge.org/tracker/?func=detail&atid=1698&aid=6788&group_id=426

In This Thread

Prev Next