From: Sam S. <sd...@po...> - 2007-12-17 20:11:53
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Pekka, please keep this thread on clisp list. please see http://clisp.cons.org/impnotes/faq.html#faq-help Pekka Niiranen wrote: > Sam Steingold wrote: >>> * Pekka Niiranen <crx...@cc...> [2007-12-17 00:10:28 >>> +0200]: >>> >>> cat /home/pekka/downloads/clisp-2.43/src/tests/*.erg >> so does that print? > ------------------------------------------------------------------------------------- > > # cat ffi.erg > > Form: (LIST (DEF-CALL-OUT C-MALLOC (:ARGUMENTS (L LONG)) (:NAME > "malloc") (:LANGUAGE :STDC) (:RETURN-TYPE C-POINTER) (:LIBRARY > :DEFAULT)) (DEF-CALL-OUT C-FREE (:ARGUM > ENTS (P C-POINTER)) (:NAME "free") (:LANGUAGE :STDC) (:RETURN-TYPE NIL) > (:LIBRARY :DEFAULT))) > CORRECT: (C-MALLOC C-FREE) > CLISP : ERROR > FFI::FIND-FOREIGN-FUNCTION: no dynamic object named "malloc" in library > :DEFAULT > OUT: > "[SIMPLE-ERROR]: FFI::FIND-FOREIGN-FUNCTION: no dynamic object named > \"malloc\" in library :DEFAULT > " OK, so you have a fully functional FFI. the only problem is that for some reason there is no function "malloc" in your libc. specifically, dlsym(RTLD_DEFAULT,"malloc") returns NULL on your system. why? is RTLD_DEFAULT defined on your system? >>> ./foo -x "(setq zz 10) (saveinitmem \"foo\")" >>> ./foo: operating system error during load of initialization file >>> `/home/pekka/downloads/clisp-2.43/src/foo' >>> [spvw_memfile.d:1685] errno = EFAULT: Bad address. >>> gmake: *** [check-exec-image] Error 1 >>> >> >> that's bad. could you please debug this? >> at the very least, please compile spvw_memfile.d with -DDEBUG_SPVW which >> will tell us the actually error location. >> > I modified the Makefile manually and added "-DDEBUG_SPVW" like this: > CFLAGS = -g -O2 -Igllib -W -Wswitch -Wcomment -Wpointer-arith -Wimplicit > -Wreturn-type > -Wmissing-declarations -Wno-sign-compare -O > -DNO_MULTIMAP_SHM -DNO_MULTIMAP_FILE -DNO_SINGLEMAP > -DNO_TRIVIALMAP -DUNICODE -DDYNAMIC_FFI > * -DDEBUG_SPVW* -I. > > The error message became: > STACK depth: 98238 > [spvw_memfile.d:1131] ./foo: operating system error during load of > initialization file `/home/pekka/downloads/clisp-2.43/src/foo' > [spvw_memfile.d:1685] errno = EFAULT: Bad address. > gmake: *** [check-exec-image] Error 1 > > The line 1131 in "spvw_memfile.d" contains is: > READ(&symbol_tab,sizeof(symbol_tab)); what does `ls -l foo lisp.run lispinit.mem` print? (foo should be more or less a concatenation of lisp.run and lispinit.mem). if the sizes look right, then the problem is likely in find_memdump(). what is mem_start on exit from it? Sam. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFHZtf1Pp1Qsf2qnMcRAmLdAKCpH1QwNeU6C4fkrGWSKxEkOmuzDQCggZk0 fYHh7DMiSgZ9lauIvzI0iQI= =1YeP -----END PGP SIGNATURE----- |
From: Pekka N. <pek...@pp...> - 2007-12-18 20:38:54
|
Sam Steingold wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Pekka, > please keep this thread on clisp list. > please see http://clisp.cons.org/impnotes/faq.html#faq-help > > Pekka Niiranen wrote: > >> Sam Steingold wrote: >> >>>> * Pekka Niiranen <crx...@cc...> [2007-12-17 00:10:28 >>>> +0200]: >>>> >>>> cat /home/pekka/downloads/clisp-2.43/src/tests/*.erg >>>> >>> so does that print? >>> >> ------------------------------------------------------------------------------------- >> >> # cat ffi.erg >> >> Form: (LIST (DEF-CALL-OUT C-MALLOC (:ARGUMENTS (L LONG)) (:NAME >> "malloc") (:LANGUAGE :STDC) (:RETURN-TYPE C-POINTER) (:LIBRARY >> :DEFAULT)) (DEF-CALL-OUT C-FREE (:ARGUM >> ENTS (P C-POINTER)) (:NAME "free") (:LANGUAGE :STDC) (:RETURN-TYPE NIL) >> (:LIBRARY :DEFAULT))) >> CORRECT: (C-MALLOC C-FREE) >> CLISP : ERROR >> FFI::FIND-FOREIGN-FUNCTION: no dynamic object named "malloc" in library >> :DEFAULT >> OUT: >> "[SIMPLE-ERROR]: FFI::FIND-FOREIGN-FUNCTION: no dynamic object named >> \"malloc\" in library :DEFAULT >> " >> > > OK, so you have a fully functional FFI. > the only problem is that for some reason there is no function "malloc" > in your libc. > specifically, dlsym(RTLD_DEFAULT,"malloc") returns NULL on your system. > why? > is RTLD_DEFAULT defined on your system? > > OpenBSD's malloc is a thing of its own, see Online manual pages: http://www.openbsd.org/cgi-bin/man.cgi Anyways, # cd /usr # find . -name *.h -exec grep -o RTLD_DEFAULT \{\} \; ./include/dlfcn.h:#define RTLD_DEFAULT ((void *) -2) /* Use default search algorithm. */ # find . -name *malloc* .... /usr/include/malloc.h /usr/include/sys/malloc.h .... # ldconfig -r /var/run/ld.so.hints: search directories: /usr/lib 0:-levent.1.4 => /usr/lib/libevent.so.1.4 1:-lform.3.0 => /usr/lib/libform.so.3.0 2:-lkrb5.16.0 => /usr/lib/libkrb5.so.16.0 3:-lm.2.3 => /usr/lib/libm.so.2.3 4:-lncurses.10.0 => /usr/lib/libncurses.so.10.0 5:-lobjc.4.0 => /usr/lib/libobjc.so.4.0 6:-lossaudio.3.0 => /usr/lib/libossaudio.so.3.0 7:-lcom_err.16.0 => /usr/lib/libcom_err.so.16.0 8:-lcurses.10.0 => /usr/lib/libcurses.so.10.0 9:-lotermcap.5.0 => /usr/lib/libotermcap.so.5.0 10:-lc.41.0 => /usr/lib/libc.so.41.0 11:-lmenu.3.0 => /usr/lib/libmenu.so.3.0 12:-lpanel.3.0 => /usr/lib/libpanel.so.3.0 13:-lkvm.9.0 => /usr/lib/libkvm.so.9.0 14:-lpcap.5.0 => /usr/lib/libpcap.so.5.0 15:-lpthread.8.0 => /usr/lib/libpthread.so.8.0 16:-lrpcsvc.1.0 => /usr/lib/librpcsvc.so.1.0 17:-lsectok.6.0 => /usr/lib/libsectok.so.6.0 18:-lreadline.3.0 => /usr/lib/libreadline.so.3.0 19:-lskey.5.1 => /usr/lib/libskey.so.5.1 20:-lssl.11.0 => /usr/lib/libssl.so.11.0 21:-ldes.9.0 => /usr/lib/libdes.so.9.0 22:-ledit.3.0 => /usr/lib/libedit.so.3.0 23:-lstdc++.42.0 => /usr/lib/libstdc++.so.42.0 24:-ltermcap.10.0 => /usr/lib/libtermcap.so.10.0 25:-lgssapi.5.0 => /usr/lib/libgssapi.so.5.0 26:-liberty.8.0 => /usr/lib/libiberty.so.8.0 27:-lcrypto.13.0 => /usr/lib/libcrypto.so.13.0 28:-ltermlib.10.0 => /usr/lib/libtermlib.so.10.0 29:-lperl.10.1 => /usr/lib/libperl.so.10.1 30:-lkafs.16.0 => /usr/lib/libkafs.so.16.0 31:-lg2c.8.1 => /usr/lib/libg2c.so.8.1 32:-locurses.5.0 => /usr/lib/libocurses.so.5.0 33:-lusbhid.3.0 => /usr/lib/libusbhid.so.3.0 34:-lutil.11.0 => /usr/lib/libutil.so.11.0 35:-lwrap.4.0 => /usr/lib/libwrap.so.4.0 36:-lz.4.1 => /usr/lib/libz.so.4.1 37:-lmilter.2.0 => /usr/lib/libmilter.so.2.0 38:-lasn1.16.0 => /usr/lib/libasn1.so.16.0 # pkg_info . . . autoconf-2.59p1 automatically configure source code on many Un*x platforms automake-1.9.6p2 GNU standards-compliant Makefile generator bison-2.1p0 GNU parser generator boehm-gc-7.0 garbage collection and memory leak detection for C and C++ gmake-3.80p1 GNU make libsigsegv-2.4 library for handling page faults in user mode libtool-1.5.22p13 generic shared library support script pcre-7.1 perl-compatible regular expression library . . . Note that OpenBSD's make (instead of "gmake") gives the following error: # cc --version cc (GCC) 3.3.5 (propolice) Copyright (C) 2003 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # make mkdir -p gllib if test ! -f gllib/Makefile; then sh config.status --file=gllib/Makefile depfiles; fi make -C gllib CFLAGS="-g -O2 -Igllib -W -Wswitch -Wcomment -Wpointer-arith -Wimplicit -Wreturn-type -Wmissing-declarations -Wno-sign-compare -O -DNO_MULTIMAP_SHM -DNO_MULTIMAP_FILE -DNO_SINGLEMAP -DNO_TRIVIALMAP -DUNICODE -DDYNAMIC_FFI -DDEBUG_SPVW -I." make: unknown option -- C usage: make [-BeiknPqrSst] [-D variable] [-d flags] [-f makefile] [-I directory] [-j max_jobs] [-m directory] [-V variable] [NAME=value] [target ...] *** Error code 2 Stop in /home/pekka/downloads/clisp-2.43/src (line 845 of Makefile). >>>> ./foo -x "(setq zz 10) (saveinitmem \"foo\")" >>>> ./foo: operating system error during load of initialization file >>>> `/home/pekka/downloads/clisp-2.43/src/foo' >>>> [spvw_memfile.d:1685] errno = EFAULT: Bad address. >>>> gmake: *** [check-exec-image] Error 1 >>>> >>>> >>> that's bad. could you please debug this? >>> at the very least, please compile spvw_memfile.d with -DDEBUG_SPVW which >>> will tell us the actually error location. >>> >>> >> I modified the Makefile manually and added "-DDEBUG_SPVW" like this: >> CFLAGS = -g -O2 -Igllib -W -Wswitch -Wcomment -Wpointer-arith -Wimplicit >> -Wreturn-type >> -Wmissing-declarations -Wno-sign-compare -O >> -DNO_MULTIMAP_SHM -DNO_MULTIMAP_FILE -DNO_SINGLEMAP >> -DNO_TRIVIALMAP -DUNICODE -DDYNAMIC_FFI >> * -DDEBUG_SPVW* -I. >> >> The error message became: >> STACK depth: 98238 >> [spvw_memfile.d:1131] ./foo: operating system error during load of >> initialization file `/home/pekka/downloads/clisp-2.43/src/foo' >> [spvw_memfile.d:1685] errno = EFAULT: Bad address. >> gmake: *** [check-exec-image] Error 1 >> >> The line 1131 in "spvw_memfile.d" contains is: >> READ(&symbol_tab,sizeof(symbol_tab)); >> > > what does `ls -l foo lisp.run lispinit.mem` print? > 2944392 ; 69528 Bye. ./foo -x "(setq zz 10) (saveinitmem \"foo\")" STACK depth: 98238 [spvw_memfile.d:1131] ./foo: operating system error during load of initialization file `/home/pekka/downloads/clisp-2.43/src/foo' [spvw_memfile.d:1685] errno = EFAULT: Bad address. gmake: *** [check-exec-image] Error 1 ls -l foo lisp.run lispinit.mem -rwxr-xr-x 1 root wheel 9285918 Dec 18 21:16 foo -rwxr-xr-x 1 root wheel 6178558 Dec 18 21:12 lisp.run -rw-r--r-- 1 root wheel 3105144 Dec 18 21:15 lispinit.mem > (foo should be more or less a concatenation of lisp.run and lispinit.mem). > if the sizes look right, then the problem is likely in find_memdump(). > what is mem_start on exit from it? > I do not know enough about C -language or gdb to be able to answer this question. My ports -system is now busted (not related to these efforts) so its better I reinstall OpenBSD. Furthermore, I will start my Christmas holiday on Thursday, so these tests are over for now. I will contact you on the first week of January and provide you OpenSSH account on my machine so you can debug yourself, if you will. Cheers for now -pekka- > > Sam. > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.6 (GNU/Linux) > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org > > iD8DBQFHZtf1Pp1Qsf2qnMcRAmLdAKCpH1QwNeU6C4fkrGWSKxEkOmuzDQCggZk0 > fYHh7DMiSgZ9lauIvzI0iQI= > =1YeP > -----END PGP SIGNATURE----- > > > |