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.
>

Reply via email to