On 03.12.2018 15:31, Rick McGuire wrote:
> It doesn't matter if they are identical or not, the problem is getting two 
> different versions
> loaded. The first one is the actual running interpreter, the second one is 
> loaded and nothing is
> initialized in it, so the call crashes. 
>
> My guess is rexx launcher is picking up the version from the same directory, 
> but when RexxAddMacro
> dynamically loads the library, it is getting the first one encountered on the 
> lib path, which
> causes the problem. The solution is don't mix up your setups.
Well, finally I found the reason, which was just totally unexpected: while 
copying the libraries to
the distribution directory the symbolic links got resolved with the physical 
file, causing two
identical versions for each library under different names! This has not caused 
problems for years, tsk!

Reinstating the symbolic links such that e.g. "librexxapi.dylib" is a symbolic 
link that points to
"librexxapi.5.0.0.dylib" etc. causes the Macrogroup.testGroup to run 
successfully!

Here, how I found out on Apple: found the environment variable 
"DYLD_PRINT_LIBRARIES=YES" which will
print all libraries an applications loads, in this case the following was 
printed:

    wu114184:trunk rony$ DYLD_PRINT_LIBRARIES=YES rexx testOORexx.rex -f 
Macrospace.testGroup -s -S
    dyld: loaded: /usr/local/bin/rexx
    dyld: loaded: /usr/local/lib/librexx.5.0.0.dylib
    *dyld: loaded: **/usr/local/lib/librexxapi.5.0.0.dylib*
    dyld: loaded: /usr/lib/libSystem.B.dylib
    dyld: loaded: /usr/lib/libc++.1.dylib
    dyld: loaded: /usr/lib/system/libcache.dylib

    ... cut ...

    dyld: loaded: /usr/lib/libc++abi.dylib
    dyld: loaded: /usr/local/lib/librexxutil.dylib
    *dyld: loaded: **/usr/local/lib/librexxapi.dylib*
    dyld: loaded: /usr/local/lib/librxregexp.dylib
    Searching for test containers..
    Executing automated test suite
    Executing testSuite [testCase: [] (an 
ooTestSuite@n/a_-4508788545)@-4508788545] with [2] test cases ...
    Executing testSuite [testCase: [The Macrospace.testGroup class] (an 
ooTestSuite@/Users/rony/dev/oorexx_allura/test/trunk/ooRexx/base/rexxutil/Macrospace.testGroup)@-4508815297]
 with [36] test cases ...
    ... running TestCase object [testCase: [TEST_ADD_ARG_OPTION_ILLEGAL] (a 
Macrospace.testGroup@/Users/rony/dev/oorexx_allura/test/trunk/ooRexx/base/rexxutil/Macrospace.testGroup)]
 ...
    ... running TestCase object [testCase: [TEST_ADD_ARG_PATH_NOT_EXISTING] (a 
Macrospace.testGroup@/Users/rony/dev/oorexx_allura/test/trunk/ooRexx/base/rexxutil/Macrospace.testGroup)]
 ...
    ... running TestCase object [testCase: [TEST_ADD_ARG_PATH_NULL] (a 
Macrospace.testGroup@/Users/rony/dev/oorexx_allura/test/trunk/ooRexx/base/rexxutil/Macrospace.testGroup)]
 ...
    ... running TestCase object [testCase: [TEST_ADD_FOUR_ARGS_TOO_MANY] (a 
Macrospace.testGroup@/Users/rony/dev/oorexx_allura/test/trunk/ooRexx/base/rexxutil/Macrospace.testGroup)]
 ...
    ... running TestCase object [testCase: [TEST_ADD_NO_ARG_TOO_FEW] (a 
Macrospace.testGroup@/Users/rony/dev/oorexx_allura/test/trunk/ooRexx/base/rexxutil/Macrospace.testGroup)]
 ...
    ... running TestCase object [testCase: [TEST_ADD_ONE_ARG_TOO_FEW] (a 
Macrospace.testGroup@/Users/rony/dev/oorexx_allura/test/trunk/ooRexx/base/rexxutil/Macrospace.testGroup)]
 ...
    ... running TestCase object [testCase: [TEST_ADD_THREE_ARGS_OPTION] (a 
Macrospace.testGroup@/Users/rony/dev/oorexx_allura/test/trunk/ooRexx/base/rexxutil/Macrospace.testGroup)]
 ...
    dyld: loaded: /usr/local/lib/librexx.dylib
    *Segmentation fault: 11*
    wu114184:trunk rony$ 

So the same library got loaded twice, once without the version number, once 
with the version number
(see above "/usr/local/lib/librexxapi.dylib " and 
"/usr/local/lib/librexxapi.5.0.0.dylib") .

Then doing a "ls -al /usr/local/lib" yielded:

    wu114184:trunk rony$ ls -al /usr/local/lib/librexx*
    lrwxr-xr-x  1 root  wheel  66 Dec  3 13:30 
/usr/local/lib/librexx.5.0.0.dylib -> 
/Library/Frameworks/ooRexx.framework/Libraries/librexx.5.0.0.dylib
    lrwxr-xr-x  1 root  wheel  60 Dec  3 13:30 /usr/local/lib/librexx.dylib -> 
/Library/Frameworks/ooRexx.framework/Libraries/librexx.dylib
    *lrwxr-xr-x 1 root wheel 69 Dec 3 13:30 
/usr/local/lib/librexxapi.5.0.0.dylib ->
    /Library/Frameworks/ooRexx.framework/Libraries/librexxapi.5.0.0.dylib 
lrwxr-xr-x 1 root wheel 63
    Dec 3 13:30 /usr/local/lib/librexxapi.dylib ->
    /Library/Frameworks/ooRexx.framework/Libraries/librexxapi.dylib*
    lrwxr-xr-x  1 root  wheel  70 Dec  3 13:30 
/usr/local/lib/librexxutil.5.0.0.dylib -> 
/Library/Frameworks/ooRexx.framework/Libraries/librexxutil.5.0.0.dylib
    lrwxr-xr-x  1 root  wheel  64 Dec  3 13:30 /usr/local/lib/librexxutil.dylib 
-> /Library/Frameworks/ooRexx.framework/Libraries/librexxutil.dylib

Which allowed me to see that no symbolic links are present among the libraries 
there, just symbolic
links to the installation directory. Double checking all the library files in
"/Library/Frameworks/ooRexx.framework/Libraries" then yielded:

    wu114184:trunk rony$ ls -al /Library/Frameworks/ooRexx.framework/Libraries/
    total 12032
    drwxr-xr-x  20 root  wheel      640 Dec  3 13:29 .
    drwxr-xr-x   6 root  wheel      192 Dec  3 13:29 ..
    -rwxr-xr-x   1 root  wheel    29284 Dec  3 13:28 libhostemu.5.0.0.dylib
    -rwxr-xr-x   1 root  wheel    29284 Dec  3 13:28 libhostemu.dylib
    -rwxr-xr-x   1 root  wheel   124168 Dec  3 13:28 liborxncurses.5.0.0.dylib
    -rwxr-xr-x   1 root  wheel   124168 Dec  3 13:28 liborxncurses.dylib
    -rwxr-xr-x   1 root  wheel  2508164 Dec  3 13:28 librexx.5.0.0.dylib
    -rwxr-xr-x   1 root  wheel  2508164 Dec  3 13:28 librexx.dylib
    *-rwxr-xr-x 1 root wheel 143320 Dec 3 13:28 librexxapi.5.0.0.dylib 
-rwxr-xr-x 1 root wheel 143320
    Dec 3 13:28 librexxapi.dylib*
    -rwxr-xr-x   1 root  wheel    96140 Dec  3 13:28 librexxutil.5.0.0.dylib
    -rwxr-xr-x   1 root  wheel    96140 Dec  3 13:28 librexxutil.dylib
    -rwxr-xr-x   1 root  wheel    26220 Dec  3 13:28 librxmath.5.0.0.dylib
    -rwxr-xr-x   1 root  wheel    26220 Dec  3 13:28 librxmath.dylib
    -rwxr-xr-x   1 root  wheel    32548 Dec  3 13:28 librxregexp.5.0.0.dylib
    -rwxr-xr-x   1 root  wheel    32548 Dec  3 13:28 librxregexp.dylib
    -rwxr-xr-x   1 root  wheel    55060 Dec  3 13:28 librxsock.5.0.0.dylib
    -rwxr-xr-x   1 root  wheel    55060 Dec  3 13:28 librxsock.dylib
    -rwxr-xr-x   1 root  wheel    47792 Dec  3 13:28 librxunixsys.5.0.0.dylib
    -rwxr-xr-x   1 root  wheel    47792 Dec  3 13:28 librxunixsys.dylib
    wu114184:trunk rony$ 

So the original symbolic link "librexxapi.dylib" got replaced by the file it 
pointed to, such that
"librexxapi.5.0.0.dylib" became a physically different library to 
"librexxapi.dylib".

Making sure that one of the two files librexxapi.5.0.0.dylib and 
librexxapi.dylib becomes a symbolic
link pointing to the other resolved the issue.

---rony

_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to