[gambit-list] Take 2 : __cleanup() problem (OS X 10.6.6 / Gambit-C 4.6.0)
David Dreisigmeyer
dwdreisigmeyer at gmail.com
Thu Jan 13 23:38:45 EST 2011
I tried using the shared library created from the modified test8
example, except I only called the functions from a C routine. That
is, I didn't use Cython/Python. It looks like I'm getting the same
problem here as when I tried using the shared library in Python:
$ ./gambit_tester
setup done
Gambit-C : (+ 1 2)
3
Gambit-C result : 3
There should also be a "cleanup done" printed out after the call to
___cleanup (), but it doesn't seem to finish that routine.
The code is attached. Do:
$ make tester
$ ./gambit_tester
Thanks again.
-Dave
******************************************
Here's the code written out also:
----------------------------------------------------------------------
Use server.scm and server.h from gambit/tests
----------------------------------------------------------------------
/* File: "client.c", Time-stamp: <2007-09-12 00:07:21 feeley> */
#include <stdio.h>
#include <stdlib.h>
#define ___VERSION 406000
#include "gambit.h"
#include "server.h"
#define SCHEME_LIBRARY_LINKER ____20_server__
___BEGIN_C_LINKAGE
extern ___mod_or_lnk SCHEME_LIBRARY_LINKER (___global_state_struct*);
___END_C_LINKAGE
void gambit_setup( void )
{
___setup_params_struct setup_params;
___setup_params_reset (&setup_params);
setup_params.version = ___VERSION;
setup_params.linker = SCHEME_LIBRARY_LINKER;
___setup (&setup_params);
}
char * gambit_eval( char *in_str )
{
char *temp;
temp = eval_string (in_str);
if (temp != 0){
printf ("%s\n", temp);
} else {
printf ("Error: temp == 0\n");
}
___release_string (temp);
fflush ( stdout );
return temp;
}
void gambit_cleanup ( void )
{
fflush (stdout);
___cleanup ();
}
----------------------------------------------------------------------
/* gambit_tester.c */
#include "client.h"
int main() {
char *temp;
gambit_setup();
printf("setup done\n");
printf ("Gambit-C : (+ 1 2)\n");
temp = gambit_eval("(+ 1 2)");
printf("Gambit-C result : %s\n", temp);
___release_string (temp);
fflush(stdout);
gambit_cleanup();
printf("cleanup done\n");
fflush(stdout);
return 0;
}
----------------------------------------------------------------------
C_COMPILER = /usr/bin/gcc-4.2
GAMBIT_GSC = gsc
GAMBIT_INC_DIR = /usr/local/Gambit-C/include/
INC_DIR = .
GAMBIT_LIB_DIR = /usr/local/Gambit-C/lib/
PYTHON = python
PYTHON_INC = /opt/local/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7
PYTHON_LIB1 = /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib
PYTHON_LIB2 = /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config
all: extension standalone gsc tester
gsc:
$(GAMBIT_GSC) -link server.scm
$(C_COMPILER) -I$(GAMBIT_INC_DIR) -I$(INC_DIR) -Wno-unused -O1
-fno-math-errno -fschedule-insns2 -fno-trapping-math
-fno-strict-aliasing -fwrapv -fomit-frame-pointer -fPIC -fno-common
-mieee-fp -c -o client.o client.c
$(C_COMPILER) -I$(GAMBIT_INC_DIR) -I$(INC_DIR) -Wno-unused -O1
-fno-math-errno -fschedule-insns2 -fno-trapping-math
-fno-strict-aliasing -fwrapv -fomit-frame-pointer -fPIC -fno-common
-mieee-fp -c -o server.o server.c -D___LIBRARY
$(C_COMPILER) -I$(GAMBIT_INC_DIR) -I$(INC_DIR) -Wno-unused -O1
-fno-math-errno -fschedule-insns2 -fno-trapping-math
-fno-strict-aliasing -fwrapv -fomit-frame-pointer -fPIC -fno-common
-mieee-fp -c -o server_.o server_.c -D___LIBRARY
$(C_COMPILER) -shared -I$(GAMBIT_INC_DIR) -I$(INC_DIR)
-L$(GAMBIT_LIB_DIR) -lgambc -Wno-unused -O1 -fno-math-errno
-fschedule-insns2 -fno-trapping-math -fno-strict-aliasing -fwrapv
-fomit-frame-pointer -fno-common -mieee-fp -o libclient.so client.o
server.o server_.o
tester: gsc
$(C_COMPILER) gambit_tester.c -L. -lclient
-I/usr/local/Gambit-C/include/ -o gambit_tester
extension: gsc
# ======= Cython extension:
$(PYTHON) server_setup.py build_ext --inplace
standalone: gsc
# ======= Cython standalone:
$(PYTHON) /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython-0.14-py2.7-macosx-10.6-x86_64.egg/cython.py
--embed server_setup.pyx
$(C_COMPILER) -c server_setup.c -I$(PYTHON_INC) -I$(GAMBIT_INC_DIR)
-I$(INC_DIR)
$(C_COMPILER) -o server_setup server_setup.o client.o server.o
server_.o -L$(GAMBIT_LIB_DIR) -lgambc -L$(PYTHON_LIB1)
-L$(PYTHON_LIB2) -lpython2.7 -ldl -framework CoreFoundation
clean:
rm -rf gambit.so libclient.so *.o server.c server_.c server_setup.c
server_setup.o server_setup build/ gambit_tester
----------------------------------------------------------------------
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cleanup_test.tgz
Type: application/x-gzip
Size: 2119 bytes
Desc: not available
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20110113/647ab006/attachment.bin>
More information about the Gambit-list
mailing list