Hi, I have unmangled all function names. Image also crashes when evaluating the Kant test. (but this time I get ILLEGAL INSTRUCTION on strace). I've tried with Cog and the VM in the Seaside OneClick.
I've uploaded the modified packages on squeaksource here: http://www.squeaksource.com/LaurentLSandbox.html (you can use Z3950Slice to load all at once). Laurent On Thu, Dec 23, 2010 at 1:57 AM, Hernán Morales Durand < [email protected]> wrote: > Hi Laurent, > > Thanks for the feedback, I've uploaded the repository with the missing > method but I cannot reproduce the crash in Windows. Have you unmangled > every function name tested? Are you running just the > Z3950FFILibraryTest? Notice the Z3950FFIServerLibraryTest tests are > performed against a Z39.50 server running in local host, otherwise > will fail (however that shouldn't crash the VM), so you may want to > run only the Z3950FFILibraryTest suite. If you or anyone want a local > Zebra server for Win32 - although most configuration files should work > with other platforms - for testing purposes please let me know. > > Does the Kant test crash the VM too? > > Z3950Client new > server: #Acadia; > query: ( Z3950Query new author: 'Kant' ). > > (see http://67.222.12.200:8889/WebOpus/52 for sample successful results) > > I will set up a Linux box tomorrow and try to reproduce there. > Cheers, > > 2010/12/22 laurent laffont <[email protected]>: > > Hi Hernan, > > finally I switch back to Linux to make it work, OSX gives me headaches. > > So on linux the yaz module is found. I get the "Unable to find function > > address" but I found that writing: > > <cdecl: ZOOMOptions 'ZOOM_options_create' (void) module: 'yaz'> > > instead of > > <cdecl: ZOOMOptions '_zoom_options_cre...@0' (void) module: 'yaz3'> > > works. If I understand, function names are not mangled when compiling > with > > gcc on Linux. > > > > Trying to run tests I've also had a "could not coerce arguments" in > > Z3950FFILibrary>>createConnectionTo:port because > Z3950TestCase>>portNumber > > answers a String and > > <cdecl: ZOOMConnection 'ZOOM_connection_new' (char* short) module: 'yaz'> > > so it's waiting for a short. I've replaced portNumber to answer a > > SmallInteger. > > And now the image crashes on connectionIsIdle call: > > write(1, "\ncreateConnectionTo:port:", 25) = 25 > > write(1, "\nconnectionIsIdle:", 18) = 18 > > rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0 > > write(1, "\n", 1) = 1 > > tgkill(25830, 25830, SIGABRT) = 0 > > --- SIGABRT (Aborted) @ 0 (0) --- > > > > Any idea ? > > > > Laurent Laffont > > > > On Tue, Dec 21, 2010 at 7:58 AM, laurent laffont < > [email protected]> > > wrote: > >> > >> The module is found ! How: > >> - Using VM Squeak 5.8b12 2 (instead of Cog or the VM provided in > Seaside > >> One-Click image) > >> - go in Squeak\ 5.8b12\ 2.app/Contents/Resources/, then ln -s > >> /usr/local/lib/libyaz.3.dylib . > >> Now I have the "Unable to find function address" you have talked earlier > >> :) I will look at the mangled function names. > >> > >> Laurent --- on the road to the FFI mountain. > >> > >> On Tue, Dec 21, 2010 at 6:59 AM, Hernán Morales Durand > >> <[email protected]> wrote: > >>> > >>> Laurent, > >>> I forward this e-mail to the squeak mailing list, may be someone there > >>> have a better idea how the OSX VM works. BTW there are more > >>> commentaries here > >>> > >>> > http://forum.world.st/squeak-dev-Alien-amp-Squeak-FFI-issues-on-Snow-Leopard-td85608.html > >>> Cheers, > >>> > >>> Hernán > >>> > >>> 2010/12/20 laurent laffont <[email protected]>: > >>> > Hi Hernan, > >>> > the strace equivalent on OSX seems to be dtruss (yes I'm learning OSX > >>> > too :) > >>> > sudo dtruss -p [pid of process] > >>> > in the trace I have this: > >>> > > >>> > > stat("/Users/laurentlaffont/Downloads/Seaside.app/Contents/Resources/yaz3.bundle/Contents/MacOS/yaz3\0", > >>> > 0xBFF59440, 0xBFF5AB28) = -1 Err#2 > >>> > > >>> > > stat64("/Users/laurentlaffont/Downloads/Seaside.app/Contents/Resources/yaz3.bundle/Contents/MacOS/yaz3\0", > >>> > 0xBFF5892C, 0xBFF5AB28) = -1 Err#2 > >>> > > >>> > > stat("/Users/laurentlaffont/Downloads/Seaside.app/Contents/Resources/yaz3\0", > >>> > 0xBFF59440, 0xBFF5AB28) = 0 0 > >>> > > >>> > > stat64("/Users/laurentlaffont/Downloads/Seaside.app/Contents/Resources/yaz3\0", > >>> > 0xBFF5892C, 0xBFF5AB28) = 0 0 > >>> > > >>> > > open("/Users/laurentlaffont/Downloads/Seaside.app/Contents/Resources/yaz3\0", > >>> > 0x0, 0x0) = 12 0 > >>> > pread(0xC, "\317\372\355\376\a\0", 0x1000, 0x0) = 4096 0 > >>> > close(0xC) = 0 0 > >>> > > >>> > > stat("/Users/laurentlaffont/Downloads/Plugins/yaz3.bundle/Contents/MacOS/yaz3\0", > >>> > 0xBFF59440, 0x1000) = -1 Err#2 > >>> > > >>> > > stat64("/Users/laurentlaffont/Downloads/Plugins/yaz3.bundle/Contents/MacOS/yaz3\0", > >>> > 0xBFF5892C, 0x1000) = -1 Err#2 > >>> > stat("/Users/laurentlaffont/Downloads/Plugins/yaz3\0", 0xBFF59440, > >>> > 0x1000) = > >>> > -1 Err#2 > >>> > stat64("/Users/laurentlaffont/Downloads/Plugins/yaz3\0", 0xBFF5892C, > >>> > 0x1000) > >>> > = -1 Err#2 > >>> > > >>> > so it looks like the VM is trying to find yaz3 at non standard Unix > >>> > places > >>> > (I don't know if it's SqueakVM or OSX related). > >>> > I've created Contents/Resources/yaz3.bundle/Contents/MacOS/, put yaz > >>> > lib > >>> > there, ln -s libyaz.3.dylib yaz3 but no success. > >>> > > >>> > I've read good > >>> > post http://forum.world.st/FFI-Documentation-td2225150.html : > >>> > > >>> > Module Location - where the external library file lives > >>> > - depends on the platform > >>> > - Mac > >>> > - pre Snow Leopard > >>> > - checks VM path and common library > paths > >>> > - Snow Leopard > >>> > - only looks in VM bundle's Resources > >>> > file, you must either [5]: > >>> > - store all external libraries > >>> > there > >>> > - ln -s path/to/library > >>> > path/to/VM/Resources/library_name > >>> > - Change the VM's Info.plist > >>> > "SqueakPluginsBuiltInOrLocalOnly" key from > >>> > "true" to "false." > >>> > > >>> > For this SqueakPluginsBuiltInOrLocalOnly I suppose I need to compile > a > >>> > VM ? > >>> > Cheers, > >>> > Laurent Laffont > >>> > > >>> > > >>> > On Mon, Dec 20, 2010 at 4:12 PM, Hernán Morales Durand > >>> > <[email protected]> wrote: > >>> >> > >>> >> Hi Laurent > >>> >> > >>> >> I've read there is a couple of system calll monitors in MacOS, > ktrace > >>> >> and dtrace (http://en.wikipedia.org/wiki/Ktrace , > >>> >> http://en.wikipedia.org/wiki/DTrace) so you may attach to the VM > and > >>> >> see what's missing? > >>> >> Cheers, > >>> >> > >>> >> Hernán > >>> >> > >>> >> 2010/12/20 laurent laffont <[email protected]>: > >>> >> > Thanks Hernan. > >>> >> > It still doesn't work. I've also tried to play with LD_LOAD_PATH / > >>> >> > LD_LIBRARY_PATH no success.... I want to make it work so I need to > >>> >> > learn > >>> >> > :) > >>> >> > > >>> >> > For the mangled function names, on Linux and OSX there's nm. > >>> >> > Here's what I get: > >>> >> > $ nm -g libyaz.3.dylib | grep ZOOM_connection_create > >>> >> > 0000000000046a30 T _ZOOM_connection_create > >>> >> > Cheers, > >>> >> > Laurent > >>> >> > > >>> >> > On Sun, Dec 19, 2010 at 6:23 PM, Hernán Morales Durand > >>> >> > <[email protected]> wrote: > >>> >> >> > >>> >> >> Hi Laurent, > >>> >> >> > >>> >> >> Thanks for reporting. The correct #moduleName for MacOS was > >>> >> >> missing, > >>> >> >> I've uploaded a new version answering 'libyaz.3.dylib' which I > >>> >> >> guess > >>> >> >> is the corresponding for 'yaz3.dll' (according to > >>> >> >> http://en.wikipedia.org/wiki/Dynamic_library#Naming ). > >>> >> >> > >>> >> >> I haven't access to a MacOS, but in Windows I've had to find the > >>> >> >> mangled function names (i.e. _zoom_connection_cre...@4) so FFI > can > >>> >> >> find the function addresses and you don't get the classic "Error: > >>> >> >> Unable to find function address". I don't know if it's related > >>> >> >> since > >>> >> >> talks about C++, but you may want to check > >>> >> >> http://wiki.squeak.org/squeak/3735 > >>> >> >> > >>> >> >> The tool I've used to find the mangled function names in Windows > is > >>> >> >> the Steve Miller's Dependency Walker > >>> >> >> http://www.dependencywalker.com/ > >>> >> >> > >>> >> >> 2010/12/19 laurent laffont <[email protected]>: > >>> >> >> > Hi, > >>> >> >> > > >>> >> >> > I want to use http://www.squeaksource.com/Z3950 > >>> >> >> > Following install instructions, I've dowloaded yaz sources > (I've > >>> >> >> > tried > >>> >> >> > 4.1.2 > >>> >> >> > and 3.0.52) as it seems there's no binary for OSX, ./configure > >>> >> >> > && make > >>> >> >> > && > >>> >> >> > make install. > >>> >> >> > Then using latest Seaside One Click image I've copied > >>> >> >> > /usr/local/lib/*yaz* > >>> >> >> > in Seaside.app/Contents/MacOS > >>> >> >> > $ ls ~/Downloads/Seaside.app/Contents/MacOS/ > >>> >> >> > Squeak VM Opt libyaz.a libyaz.la > >>> >> >> > libyaz_icu.a libyaz_icu.la libyaz_server.a > >>> >> >> > libyaz_server.la libyaz.3.dylib libyaz.dylib > >>> >> >> > libyaz_icu.3.dylib libyaz_icu.dylib > >>> >> >> > libyaz_server.3.dylib > >>> >> >> > libyaz_server.dylib > >>> >> >> > > >>> >> >> > > >>> >> >> > But then I have a External Module Not Found on > >>> >> >> > YAZPQFFFILibrary>>createParser > >>> >> >> > " YAZPQDFFILibrary default createParser " > >>> >> >> > <cdecl: YAZPQFParser 'yaz_pqf_create' (void) module: 'yaz3'> > >>> >> >> > ^ self externalCallFailed > >>> >> >> > > >>> >> >> > Any hint ? > >>> >> >> > Cheers, > >>> >> >> > Laurent Laffont -- FFI newbie > >>> >> >> > > >>> >> >> > Pharo Smalltalk Screencasts: http://www.pharocasts.com/ > >>> >> >> > Blog: http://magaloma.blogspot.com/ > >>> >> >> > > >>> >> >> > >>> >> >> -- > >>> >> >> Hernán Morales > >>> >> >> Information Technology Manager, > >>> >> >> Institute of Veterinary Genetics. > >>> >> >> National Scientific and Technical Research Council (CONICET). > >>> >> >> La Plata (1900), Buenos Aires, Argentina. > >>> >> >> Telephone: +54 (0221) 421-1799. > >>> >> >> Internal: 422 > >>> >> >> Fax: 425-7980 or 421-1799. > >>> >> > > >>> >> > > >>> > > >>> > > >> > > > > > > > > -- > Hernán Morales > Information Technology Manager, > Institute of Veterinary Genetics. > National Scientific and Technical Research Council (CONICET). > La Plata (1900), Buenos Aires, Argentina. > Telephone: +54 (0221) 421-1799. > Internal: 422 > Fax: 425-7980 or 421-1799. >
