Which VM have you used ?<div><br></div><div>I cross post to vm-dev list.</div><div><br></div><div>Laurent.</div><div><br><div class="gmail_quote">On Fri, Dec 24, 2010 at 3:54 AM, Hernán Morales Durand <span dir="ltr">&lt;<a href="mailto:hernan.morales@gmail.com" target="_blank">hernan.morales@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Laurent, not much progress here :(<br>
I just reproduced the Unix VM crash. First I&#39;ve linked the library so<br>
we do not have to change every module name call<br>
<br>
user@ubuntu:/usr/lib$ ln -T -s /usr/lib/libyaz.so.3.0.0 yaz<br>
<br>
and I&#39;ve tried to execute the library tracer in the shell script<br>
<br>
ltrace -f -l /usr/lib/libyaz.so.3.0.0 -o out.txt &quot;$BASE/squeakvm&quot; \<br>
        -plugins &quot;$BASE&quot; \<br>
        -encoding latin1 \<br>
        -vm-display-X11 \<br>
        &quot;$ROOT/Contents/Resources/pharo.image&quot;<br>
<br>
but it crash the VM too with an unhandled exception even before the<br>
GUI is displayed.<br>
What I&#39;ve observed is that every FFI call which receives an<br>
ExternalStructure as parameter kills the VM. This is weird because<br>
this doesn&#39;t happen in the Windows VM. I ran this little script I use<br>
to debug the library<br>
<br>
| conn lib rs rsSize records |<br>
lib := Z3950FFILibrary default.<br>
conn := lib<br>
        createConnectionTo: #Alabama asZ3950Server hostName<br>
        port: 7090.<br>
lib createOptions.<br>
lib<br>
        setConnection: conn<br>
        optionName: &#39;preferredRecordSyntax&#39;<br>
        optionValue: &#39;USMARC&#39;.<br>
rs := lib<br>
        searchPqf: conn<br>
        query:  &#39;@attr 1=1003 collins&#39;.<br>
rsSize := lib resultSetSize: rs.<br>
rsSize &gt; 0<br>
        ifFalse:  [ &#39;no results&#39; ].<br>
records := Array new: rsSize.<br>
0 to: rsSize - 1 do: [: pos |<br>
        record := lib resultSetRecord: rs position: pos.<br>
        record isNil not<br>
                ifTrue:  [<br>
                        records<br>
                                at: pos + 1<br>
                                put: ( lib<br>
                                        getRecord: record<br>
                                        function: &#39;render; charset=marc8, iso8859-1&#39;<br>
                                        length: nil ). ] ].<br>
records<br>
<br>
and the the doIt just hangs the VM, the console output going through<br>
the Debugger is the following:<br>
<br>
Segmentation fault<br>
<br>
-1370902312 ContextPart&gt;doPrimitive:method:receiver:args:<br>
-1370902404 ContextPart&gt;tryPrimitiveFor:receiver:args:<br>
-1370902788 ContextPart&gt;send:to:with:super:<br>
-1370902896 ContextPart&gt;send:super:numArgs:<br>
-1370902988 InstructionStream&gt;interpretExtension:in:for:<br>
-1370903080 InstructionStream&gt;interpretNextInstructionFor:<br>
-1370903172 ContextPart&gt;step<br>
-1370903280 Process&gt;step<br>
-1370903372 Process&gt;step:<br>
-1370920392 Debugger&gt;send<br>
-1370937720 PluggableButtonMorph&gt;performAction<br>
-1370937812 PluggableButtonMorph&gt;mouseUp:<br>
-1370937996 SequenceableCollection&gt;do:<br>
-1370957140 PluggableButtonMorph&gt;mouseUp:<br>
-1370957232 Morph&gt;handleMouseUp:<br>
-1370957324 MouseButtonEvent&gt;sentTo:<br>
-1370957416 Morph&gt;handleEvent:<br>
-1370957584 Morph&gt;handleFocusEvent:<br>
-1370957676 HandMorph&gt;sendFocusEvent:to:clear:<br>
-1370957768 PasteUpMorph&gt;becomeActiveDuring:<br>
-1370957860 BlockClosure&gt;on:do:<br>
-1370957992 PasteUpMorph&gt;becomeActiveDuring:<br>
-1370958084 HandMorph&gt;sendFocusEvent:to:clear:<br>
-1370958260 HandMorph&gt;sendEvent:focus:clear:<br>
-1370958352 HandMorph&gt;sendMouseEvent:<br>
-1370958444 HandMorph&gt;handleEvent:<br>
-1370966728 HandMorph&gt;processEvents<br>
-1370966836 WorldState&gt;doOneCycleNowFor:<br>
-1370966952 SequenceableCollection&gt;do:<br>
-1370967044 WorldState&gt;handsDo:<br>
-1370967136 WorldState&gt;doOneCycleNowFor:<br>
-1370969680 WorldState&gt;doOneCycleFor:<br>
-1370969772 PasteUpMorph&gt;doOneCycle<br>
-1383611064 &gt;spawnNewProcess<br>
-1383611192 BlockClosure&gt;newProcess<br>
Aborted<br>
<br>
it would be nice if someone could tell something about debugging FFI<br>
calls, or just any idea to try.<br>
Cheers,<br>
<br>
Hernán<br>
<br>
2010/12/23 laurent laffont &lt;<a href="mailto:laurent.laffont@gmail.com" target="_blank">laurent.laffont@gmail.com</a>&gt;:<br>
<div><div></div><div>&gt; Hi,<br>
&gt; I have unmangled all function names. Image also crashes when evaluating the<br>
&gt; Kant test. (but this time I get ILLEGAL INSTRUCTION on strace). I&#39;ve tried<br>
&gt; with Cog and the VM in the Seaside OneClick.<br>
&gt; I&#39;ve uploaded the modified packages on squeaksource<br>
&gt; here: <a href="http://www.squeaksource.com/LaurentLSandbox.html" target="_blank">http://www.squeaksource.com/LaurentLSandbox.html</a>   (you can use<br>
&gt; Z3950Slice to load all at once).<br>
&gt; Laurent<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; On Thu, Dec 23, 2010 at 1:57 AM, Hernán Morales Durand<br>
&gt; &lt;<a href="mailto:hernan.morales@gmail.com" target="_blank">hernan.morales@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Hi Laurent,<br>
&gt;&gt;<br>
&gt;&gt; Thanks for the feedback, I&#39;ve uploaded the repository with the missing<br>
&gt;&gt; method but I cannot reproduce the crash in Windows. Have you unmangled<br>
&gt;&gt; every function name tested? Are you running just the<br>
&gt;&gt; Z3950FFILibraryTest? Notice the Z3950FFIServerLibraryTest tests are<br>
&gt;&gt; performed against a Z39.50 server running in local host, otherwise<br>
&gt;&gt; will fail (however that shouldn&#39;t crash the VM), so you may want to<br>
&gt;&gt; run only the Z3950FFILibraryTest suite. If you or anyone want a local<br>
&gt;&gt; Zebra server for Win32 - although most configuration files should work<br>
&gt;&gt; with other platforms - for testing purposes please let me know.<br>
&gt;&gt;<br>
&gt;&gt; Does the Kant test crash the VM too?<br>
&gt;&gt;<br>
&gt;&gt; Z3950Client new<br>
&gt;&gt;  server: #Acadia;<br>
&gt;&gt;  query: ( Z3950Query new author: &#39;Kant&#39; ).<br>
&gt;&gt;<br>
&gt;&gt; (see <a href="http://67.222.12.200:8889/WebOpus/52" target="_blank">http://67.222.12.200:8889/WebOpus/52</a> for sample successful results)<br>
&gt;&gt;<br>
&gt;&gt; I will set up a Linux box tomorrow and try to reproduce there.<br>
&gt;&gt; Cheers,<br>
&gt;&gt;<br>
&gt;&gt; 2010/12/22 laurent laffont &lt;<a href="mailto:laurent.laffont@gmail.com" target="_blank">laurent.laffont@gmail.com</a>&gt;:<br>
&gt;&gt; &gt; Hi Hernan,<br>
&gt;&gt; &gt; finally I switch back to Linux to make it work, OSX gives me headaches.<br>
&gt;&gt; &gt; So on linux the yaz module is found. I get the &quot;Unable to find function<br>
&gt;&gt; &gt; address&quot; but I found that writing:<br>
&gt;&gt; &gt; &lt;cdecl: ZOOMOptions &#39;ZOOM_options_create&#39; (void) module: &#39;yaz&#39;&gt;<br>
&gt;&gt; &gt; instead of<br>
&gt;&gt; &gt; &lt;cdecl: ZOOMOptions &#39;_ZOOM_options_create@0&#39; (void) module: &#39;yaz3&#39;&gt;<br>
&gt;&gt; &gt; works. If I understand, function names are not mangled when compiling<br>
&gt;&gt; &gt; with<br>
&gt;&gt; &gt; gcc on Linux.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Trying to run tests I&#39;ve also had a &quot;could not coerce arguments&quot; in<br>
&gt;&gt; &gt; Z3950FFILibrary&gt;&gt;createConnectionTo:port because<br>
&gt;&gt; &gt; Z3950TestCase&gt;&gt;portNumber<br>
&gt;&gt; &gt; answers a String and<br>
&gt;&gt; &gt; &lt;cdecl: ZOOMConnection &#39;ZOOM_connection_new&#39; (char* short) module:<br>
&gt;&gt; &gt; &#39;yaz&#39;&gt;<br>
&gt;&gt; &gt; so it&#39;s waiting for a short. I&#39;ve replaced portNumber to answer a<br>
&gt;&gt; &gt; SmallInteger.<br>
&gt;&gt; &gt; And now the image crashes on connectionIsIdle call:<br>
&gt;&gt; &gt; write(1, &quot;\ncreateConnectionTo:port:&quot;, 25) = 25<br>
&gt;&gt; &gt; write(1, &quot;\nconnectionIsIdle:&quot;, 18)     = 18<br>
&gt;&gt; &gt; rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0<br>
&gt;&gt; &gt; write(1, &quot;\n&quot;, 1)                       = 1<br>
&gt;&gt; &gt; tgkill(25830, 25830, SIGABRT)           = 0<br>
&gt;&gt; &gt; --- SIGABRT (Aborted) @ 0 (0) ---<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Any idea ?<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Laurent Laffont<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; On Tue, Dec 21, 2010 at 7:58 AM, laurent laffont<br>
&gt;&gt; &gt; &lt;<a href="mailto:laurent.laffont@gmail.com" target="_blank">laurent.laffont@gmail.com</a>&gt;<br>
&gt;&gt; &gt; wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; The module is found ! How:<br>
&gt;&gt; &gt;&gt; - Using VM Squeak 5.8b12 2  (instead of Cog or the VM provided in<br>
&gt;&gt; &gt;&gt; Seaside<br>
&gt;&gt; &gt;&gt; One-Click image)<br>
&gt;&gt; &gt;&gt; - go in Squeak\ 5.8b12\ 2.app/Contents/Resources/, then ln -s<br>
&gt;&gt; &gt;&gt; /usr/local/lib/libyaz.3.dylib .<br>
&gt;&gt; &gt;&gt; Now I have the &quot;Unable to find function address&quot; you have talked<br>
&gt;&gt; &gt;&gt; earlier<br>
&gt;&gt; &gt;&gt; :) I will look at the mangled function names.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Laurent  --- on the road to the FFI mountain.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; On Tue, Dec 21, 2010 at 6:59 AM, Hernán Morales Durand<br>
&gt;&gt; &gt;&gt; &lt;<a href="mailto:hernan.morales@gmail.com" target="_blank">hernan.morales@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Laurent,<br>
&gt;&gt; &gt;&gt;&gt; I forward this e-mail to the squeak mailing list, may be someone there<br>
&gt;&gt; &gt;&gt;&gt; have a better idea how the OSX VM works. BTW there are more<br>
&gt;&gt; &gt;&gt;&gt; commentaries here<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; <a href="http://forum.world.st/squeak-dev-Alien-amp-Squeak-FFI-issues-on-Snow-Leopard-td85608.html" target="_blank">http://forum.world.st/squeak-dev-Alien-amp-Squeak-FFI-issues-on-Snow-Leopard-td85608.html</a><br>



&gt;&gt; &gt;&gt;&gt; Cheers,<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Hernán<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; 2010/12/20 laurent laffont &lt;<a href="mailto:laurent.laffont@gmail.com" target="_blank">laurent.laffont@gmail.com</a>&gt;:<br>
&gt;&gt; &gt;&gt;&gt; &gt; Hi Hernan,<br>
&gt;&gt; &gt;&gt;&gt; &gt; the strace equivalent on OSX seems to be dtruss (yes I&#39;m learning<br>
&gt;&gt; &gt;&gt;&gt; &gt; OSX<br>
&gt;&gt; &gt;&gt;&gt; &gt; too :)<br>
&gt;&gt; &gt;&gt;&gt; &gt; sudo dtruss -p [pid of process]<br>
&gt;&gt; &gt;&gt;&gt; &gt; in the trace I have this:<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; stat(&quot;/Users/laurentlaffont/Downloads/Seaside.app/Contents/Resources/yaz3.bundle/Contents/MacOS/yaz3\0&quot;,<br>
&gt;&gt; &gt;&gt;&gt; &gt; 0xBFF59440, 0xBFF5AB28) = -1 Err#2<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; stat64(&quot;/Users/laurentlaffont/Downloads/Seaside.app/Contents/Resources/yaz3.bundle/Contents/MacOS/yaz3\0&quot;,<br>
&gt;&gt; &gt;&gt;&gt; &gt; 0xBFF5892C, 0xBFF5AB28) = -1 Err#2<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; stat(&quot;/Users/laurentlaffont/Downloads/Seaside.app/Contents/Resources/yaz3\0&quot;,<br>
&gt;&gt; &gt;&gt;&gt; &gt; 0xBFF59440, 0xBFF5AB28) = 0 0<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; stat64(&quot;/Users/laurentlaffont/Downloads/Seaside.app/Contents/Resources/yaz3\0&quot;,<br>
&gt;&gt; &gt;&gt;&gt; &gt; 0xBFF5892C, 0xBFF5AB28) = 0 0<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; open(&quot;/Users/laurentlaffont/Downloads/Seaside.app/Contents/Resources/yaz3\0&quot;,<br>
&gt;&gt; &gt;&gt;&gt; &gt; 0x0, 0x0) = 12 0<br>
&gt;&gt; &gt;&gt;&gt; &gt; pread(0xC, &quot;\317\372\355\376\a\0&quot;, 0x1000, 0x0) = 4096 0<br>
&gt;&gt; &gt;&gt;&gt; &gt; close(0xC) = 0 0<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; stat(&quot;/Users/laurentlaffont/Downloads/Plugins/yaz3.bundle/Contents/MacOS/yaz3\0&quot;,<br>
&gt;&gt; &gt;&gt;&gt; &gt; 0xBFF59440, 0x1000) = -1 Err#2<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; stat64(&quot;/Users/laurentlaffont/Downloads/Plugins/yaz3.bundle/Contents/MacOS/yaz3\0&quot;,<br>
&gt;&gt; &gt;&gt;&gt; &gt; 0xBFF5892C, 0x1000) = -1 Err#2<br>
&gt;&gt; &gt;&gt;&gt; &gt; stat(&quot;/Users/laurentlaffont/Downloads/Plugins/yaz3\0&quot;, 0xBFF59440,<br>
&gt;&gt; &gt;&gt;&gt; &gt; 0x1000) =<br>
&gt;&gt; &gt;&gt;&gt; &gt; -1 Err#2<br>
&gt;&gt; &gt;&gt;&gt; &gt; stat64(&quot;/Users/laurentlaffont/Downloads/Plugins/yaz3\0&quot;, 0xBFF5892C,<br>
&gt;&gt; &gt;&gt;&gt; &gt; 0x1000)<br>
&gt;&gt; &gt;&gt;&gt; &gt; = -1 Err#2<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; so it looks like the VM is trying to find yaz3 at non standard Unix<br>
&gt;&gt; &gt;&gt;&gt; &gt; places<br>
&gt;&gt; &gt;&gt;&gt; &gt; (I don&#39;t know if it&#39;s SqueakVM or OSX related).<br>
&gt;&gt; &gt;&gt;&gt; &gt; I&#39;ve created Contents/Resources/yaz3.bundle/Contents/MacOS/, put yaz<br>
&gt;&gt; &gt;&gt;&gt; &gt; lib<br>
&gt;&gt; &gt;&gt;&gt; &gt; there, ln -s libyaz.3.dylib yaz3 but no success.<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; I&#39;ve read good<br>
&gt;&gt; &gt;&gt;&gt; &gt; post <a href="http://forum.world.st/FFI-Documentation-td2225150.html" target="_blank">http://forum.world.st/FFI-Documentation-td2225150.html</a> :<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; Module Location - where the external library file lives<br>
&gt;&gt; &gt;&gt;&gt; &gt;       - depends on the platform<br>
&gt;&gt; &gt;&gt;&gt; &gt;               - Mac<br>
&gt;&gt; &gt;&gt;&gt; &gt;                       - pre Snow Leopard<br>
&gt;&gt; &gt;&gt;&gt; &gt;                               - checks VM path and common library<br>
&gt;&gt; &gt;&gt;&gt; &gt; paths<br>
&gt;&gt; &gt;&gt;&gt; &gt;                       - Snow Leopard<br>
&gt;&gt; &gt;&gt;&gt; &gt;                               - only looks in VM bundle&#39;s Resources<br>
&gt;&gt; &gt;&gt;&gt; &gt; file, you must either [5]:<br>
&gt;&gt; &gt;&gt;&gt; &gt;                                       - store all external libraries<br>
&gt;&gt; &gt;&gt;&gt; &gt; there<br>
&gt;&gt; &gt;&gt;&gt; &gt;                                       - ln -s path/to/library<br>
&gt;&gt; &gt;&gt;&gt; &gt; path/to/VM/Resources/library_name<br>
&gt;&gt; &gt;&gt;&gt; &gt;                                       - Change the VM&#39;s Info.plist<br>
&gt;&gt; &gt;&gt;&gt; &gt; &quot;SqueakPluginsBuiltInOrLocalOnly&quot; key from<br>
&gt;&gt; &gt;&gt;&gt; &gt; &quot;true&quot; to &quot;false.&quot;<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; For this SqueakPluginsBuiltInOrLocalOnly I suppose I need to compile<br>
&gt;&gt; &gt;&gt;&gt; &gt; a<br>
&gt;&gt; &gt;&gt;&gt; &gt; VM ?<br>
&gt;&gt; &gt;&gt;&gt; &gt; Cheers,<br>
&gt;&gt; &gt;&gt;&gt; &gt; Laurent Laffont<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; On Mon, Dec 20, 2010 at 4:12 PM, Hernán Morales Durand<br>
&gt;&gt; &gt;&gt;&gt; &gt; &lt;<a href="mailto:hernan.morales@gmail.com" target="_blank">hernan.morales@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Hi Laurent<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; I&#39;ve read there is a couple of system calll monitors in MacOS,<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; ktrace<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; and dtrace (<a href="http://en.wikipedia.org/wiki/Ktrace" target="_blank">http://en.wikipedia.org/wiki/Ktrace</a> ,<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; <a href="http://en.wikipedia.org/wiki/DTrace" target="_blank">http://en.wikipedia.org/wiki/DTrace</a>) so you may attach to the VM<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; and<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; see what&#39;s missing?<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Cheers,<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Hernán<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; 2010/12/20 laurent laffont &lt;<a href="mailto:laurent.laffont@gmail.com" target="_blank">laurent.laffont@gmail.com</a>&gt;:<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; Thanks Hernan.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; It still doesn&#39;t work. I&#39;ve also tried to play with LD_LOAD_PATH<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; /<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; LD_LIBRARY_PATH no success.... I want to make it work so I need<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; to<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; learn<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; :)<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; For the mangled function names, on Linux and OSX there&#39;s nm.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; Here&#39;s what I get:<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; $ nm -g libyaz.3.dylib | grep ZOOM_connection_create<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; 0000000000046a30 T _ZOOM_connection_create<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; Cheers,<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; Laurent<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; On Sun, Dec 19, 2010 at 6:23 PM, Hernán Morales Durand<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; &lt;<a href="mailto:hernan.morales@gmail.com" target="_blank">hernan.morales@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; Hi Laurent,<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; Thanks for reporting. The correct #moduleName for MacOS was<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; missing,<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; I&#39;ve uploaded a new version answering &#39;libyaz.3.dylib&#39; which I<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; guess<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; is the corresponding for &#39;yaz3.dll&#39; (according to<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; <a href="http://en.wikipedia.org/wiki/Dynamic_library#Naming" target="_blank">http://en.wikipedia.org/wiki/Dynamic_library#Naming</a> ).<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; I haven&#39;t access to a MacOS, but in Windows I&#39;ve had to find the<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; mangled function names (i.e. _ZOOM_connection_create@4) so FFI<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; can<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; find the function addresses and you don&#39;t get the classic<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &quot;Error:<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; Unable to find function address&quot;. I don&#39;t know if it&#39;s related<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; since<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; talks about C++, but you may want to check<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; <a href="http://wiki.squeak.org/squeak/3735" target="_blank">http://wiki.squeak.org/squeak/3735</a><br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; The tool I&#39;ve used to find the mangled function names in Windows<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; is<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; the Steve Miller&#39;s Dependency Walker<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; <a href="http://www.dependencywalker.com/" target="_blank">http://www.dependencywalker.com/</a><br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; 2010/12/19 laurent laffont &lt;<a href="mailto:laurent.laffont@gmail.com" target="_blank">laurent.laffont@gmail.com</a>&gt;:<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; Hi,<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; I want to use <a href="http://www.squeaksource.com/Z3950" target="_blank">http://www.squeaksource.com/Z3950</a><br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; Following install instructions, I&#39;ve dowloaded yaz sources<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; (I&#39;ve<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; tried<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; 4.1.2<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; and 3.0.52) as it seems there&#39;s no binary for OSX, ./configure<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; &amp;&amp; make<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; &amp;&amp;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; make install.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; Then using latest Seaside One Click image I&#39;ve copied<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; /usr/local/lib/*yaz*<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;  in Seaside.app/Contents/MacOS<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; $ ls ~/Downloads/Seaside.app/Contents/MacOS/<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; Squeak VM Opt         libyaz.a              <a href="http://libyaz.la" target="_blank">libyaz.la</a><br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; libyaz_icu.a          <a href="http://libyaz_icu.la" target="_blank">libyaz_icu.la</a>         libyaz_server.a<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; <a href="http://libyaz_server.la" target="_blank">libyaz_server.la</a> libyaz.3.dylib        libyaz.dylib<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;  libyaz_icu.3.dylib    libyaz_icu.dylib<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;  libyaz_server.3.dylib<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; libyaz_server.dylib<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; But then I have a External Module Not Found on<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; YAZPQFFFILibrary&gt;&gt;createParser<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; &quot; YAZPQDFFILibrary default createParser &quot;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; &lt;cdecl: YAZPQFParser &#39;yaz_pqf_create&#39; (void) module: &#39;yaz3&#39;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; ^ self externalCallFailed<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; Any hint ?<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; Cheers,<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; Laurent Laffont -- FFI newbie<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; Pharo Smalltalk Screencasts: <a href="http://www.pharocasts.com/" target="_blank">http://www.pharocasts.com/</a><br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; Blog: <a href="http://magaloma.blogspot.com/" target="_blank">http://magaloma.blogspot.com/</a><br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; --<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; Hernán Morales<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; Information Technology Manager,<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; Institute of Veterinary Genetics.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; National Scientific and Technical Research Council (CONICET).<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; La Plata (1900), Buenos Aires, Argentina.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; Telephone: +54 (0221) 421-1799.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; Internal: 422<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; Fax: 425-7980 or 421-1799.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;<br>
</div></div></blockquote></div><br>
</div>