From: Suraj Kurapati Date: 2006-02-18T01:13:29+09:00 Subject: SystemStackError when rb_define_module_function() * 3 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hello, I'm getting a "test.rb:46: stack level too deep (SystemStackError)" when defining three or more functions for a module, which is created & given to Ruby via the Ruby C API. The test.rb (actually "trunk/src/samp/test.rb") file and the remaining source code is available in a Subversion repository here: svn checkout -r21 svn://rubyforge.org/var/svn/ruby-vpi - -or- In particular, the error occurs when I register a third module function with Ruby C API inside line 25 of the file "trunk/src/RVPI.cin": // register the VPI module RVPI__rModuleDef = rb_define_module("VPI"); rb_define_module_function( // first func RVPI__rModuleDef , "relay_verilog" , RVPI_rb_relay_verilog , 0 ); rb_define_module_function( // second func RVPI__rModuleDef , "register_task" , RVPI_rb_register_task , 1 ); rb_define_module_function( // third func RVPI__rModuleDef , "handle_by_name" , RVPI_rb_handle_by_name , 2 ); // FIXME: causes "stack level too deep (SystemStackError)" I originally thought the problem was with the third module function (named "RVPI_rb_handle_by_name") that I was trying to register. But this was not the case, because the SystemStackError occurred even when I registered the first module function under a different name: // register the VPI module RVPI__rModuleDef = rb_define_module("VPI"); rb_define_module_function( // first func RVPI__rModuleDef , "relay_verilog" , RVPI_rb_relay_verilog , 0 ); rb_define_module_function( // second func RVPI__rModuleDef , "register_task" , RVPI_rb_register_task , 1 ); rb_define_module_function( // first func with different name RVPI__rModuleDef , "foo" , RVPI_rb_relay_verilog , 0 ); What am I doing wrong? Thank you. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (GNU/Linux) iD4DBQFD9ULQmV9O7RYnKMcRAnzuAKCvyNqkSWWM3o7kpK1l2y8Xup98hACWOrGI qDsBxZ9L9CfILnHqlsLnaQ== =1Ilp -----END PGP SIGNATURE-----