thanks hernan. We want to script the BNF (bibliotheque Nationale de France :)). which has a Z3950 server
Stef On Dec 23, 2010, at 1:57 AM, Hernán Morales Durand 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. >
