It will print before the call to __cleanup() but not after the call.
What would the downside of not calling __cleanup() be? (I'm currently using this way.)
Thanks Marc,
-Dave
On Wed, Jan 5, 2011 at 2:43 PM, Marc Feeley feeley@iro.umontreal.ca wrote:
On 2011-01-05, at 12:14 PM, David Dreisigmeyer wrote:
Then in ipython:
Python 2.7.1 (r271:86832, Dec 29 2010, 01:38:09) Type "copyright", "credits" or "license" for more information.
IPython 0.10.1 -- An enhanced Interactive Python. ? -> Introduction and overview of IPython's features. %quickref -> Quick reference. help -> Python's own help system. object? -> Details about 'object'. ?object also works, ?? prints more.
In [2]: import cython_gambit_test
In [3]: cython_gambit_test.cython_gambit_test () result = #!void result = 16 result = #<datum-parsing-exception #2> result = #<unbound-global-exception #3>
Process Python exited abnormally with code 1
If I understand correctly, it is Python that is exiting abnormally. In other words it is not during the call to ___cleanup() that the process exits (but to make sure, add a printf just before and just after the call to ___cleanup()).
Assuming that that is true, it looks like a bad interaction between Gambit's runtime system and Python's runtime system. For example, Gambit restoring a signal handler that Python relies on, or changing the terminal settings, the timers, etc. You'll have to dig deeper to find the actual problem (with strace on Linux, I don't remember what it is called on Mac OS X).
If you want a quick an dirty solution, just don't call ___cleanup()!
Marc