Page 1 of 2

trying to solve a unresolvable symbol when running Mirai

Posted: Wed Apr 30, 2014 1:50 pm
by gijoe77
Hi, here is what I get when I try to launch the program:

Mapping /usr/ngc/mirai-1-0/mirai.dxl...done.
Allegro CL Enterprise Edition 5.0 [Silicon Graphics MIPS] (4/5/99 20:58)
Copyright (C) 1985-1998, Franz Inc., Berkeley, CA, USA. All Rights Reserved.
Warning: Loading sys:libxtim.so failed with error:
3807:/usr/ngc/mirai-1-0/mirai: rld: Fatal Error: unresolvable symbol in /usr/lib32/libtiff.so: __record_needed_destruction.

(c) 1999 Nichimen Graphics, Inc. All rights reserved.


The scheduler is attempting to recover from
Funcall of NIL which is a non-function..

The scheduler is attempting to recover from
Non-structure argument NIL passed to structure-ref.

The scheduler is attempting to recover from
Non-structure argument NIL passed to structure-ref.

The scheduler is attempting to recover from
Non-structure argument NIL passed to structure-ref.


the program never does launch, just does the above.

It appears all the library paths are fine and the symbol does exist in the above libtiff.so

-bash-4.2$ ldd /usr/ngc/mirai-1-0/mirai
libm.so => /usr/lib32/libm.so
libc.so.1 => /lib32/libc.so.1

-bash-4.2$ ldd /usr/ngc/mirai-1-0/libxtim.so
libc.so.1 => /lib32/libc.so.1
libngcolor.so => /usr/ngc/mirai-1-0/libngcolor.so
libiflTIFF.so => /usr/lib32/libiflTIFF.so
libxtiff.so => /usr/lib32/libxtiff.so
libtiff.so => /usr/lib32/libtiff.so
libifl.so => /usr/lib32/libifl.so
libCsup.so => /usr/lib32/libCsup.so
libC.so.2 => /usr/lib32/libC.so.2
libjpeg.so => /usr/lib32/libjpeg.so
libz.so => /usr/lib32/libz.so
libm.so => /usr/lib32/libm.so
libCio.so.1 => /usr/lib32/libCio.so.1

-bash-4.2$ nm /usr/lib32/libtiff.so | grep __record_needed_destruction
[141] | 230712732| 0|FUNC |GLOB |DEFAULT |UNDEF |__record_needed_destruction
-bash-4.2$


Anyone know what I am missing here?

Re: trying to solve a unresolvable symbol when running Mira

Posted: Wed Apr 30, 2014 2:22 pm
by GIJoe
hey mr. rather similar sounding username :lol:

are you me? as it happens i tried to run it the other day and had it fill up a terminal window with that stuff in an infinite loop. it used to work fine here ... years ago in the naughties. pretty sure nobody tampered with the installation either since. might be a case of some software-component/license timing out?

mirai's last version was probably 1.1 - that one has enough issues even on windows newer than 2000 that it's safe to say it wasn't built to last. :roll:
shame that this software died.

Re: trying to solve a unresolvable symbol when running Mira

Posted: Thu May 01, 2014 7:58 am
by jpstewart
When you ran nm /usr/lib32/libtiff.so, it showed the symbol as UNDEF (undefined). So while it may "exist" in libtiff, that's only in the sense that the symbol is used by libtiff. It is not defined in libtiff itself.

What does 'ldd /usr/lib32/libtiff.so' show? I bet libtiff is in turn dynamically linked to another library that does define that symbol, and that the other library may be missing or damaged.

Also, what version of IRIX are you using?

Re: trying to solve a unresolvable symbol when running Mira

Posted: Thu May 01, 2014 11:21 am
by gijoe77
funny how I didn't even notice that UNDEF until you pointed it out! - still cutting my teeth with all this lib stuff. So I found where the library with the symbol is - not really sure what I can do about it though

-bash-4.2$ ldd /usr/lib32/libtiff.so
libjpeg.so => /usr/lib32/libjpeg.so
libz.so => /usr/lib32/libz.so
libm.so => /usr/lib32/libm.so
libc.so.1 => /usr/lib32/libc.so.1
libCsup.so => /usr/lib32/libCsup.so
libC.so.2 => /usr/lib32/libC.so.2
libCio.so.1 => /usr/lib32/libCio.so.1

-bash-4.2$ ldd /usr/lib32/libjpeg.so
libc.so.1 => /usr/lib32/libc.so.1

-bash-4.2$ ldd /usr/lib32/libz.so
libc.so.1 => /usr/lib32/libc.so.1

-bash-4.2$ ldd /usr/lib32/libm.so
libc.so.1 => /usr/lib32/libc.so.1

-bash-4.2$ ldd /usr/lib32/libc.so.1
-bash-4.2$ ldd /usr/lib32/libCsup.so
-bash-4.2$ ldd /usr/lib32/libC.so.2
libc.so.1 => /usr/lib32/libc.so.1
libm.so => /usr/lib32/libm.so

-bash-4.2$ ldd /usr/lib32/libCio.so.1
libC.so.2 => /usr/lib32/libC.so.2
libc.so.1 => /usr/lib32/libc.so.1
libm.so => /usr/lib32/libm.so

-bash-4.2$ ldd /usr/lib32/libc.so.1
-bash-4.2$ ldd /usr/lib32/libm.so
libc.so.1 => /usr/lib32/libc.so.1

-bash-4.2$ ldd /usr/lib32/libC.so.2
libc.so.1 => /usr/lib32/libc.so.1
libm.so => /usr/lib32/libm.so

-bash-4.2$ ldd /usr/lib32/libc.so.1
-bash-4.2$ ldd /usr/lib32/libm.so
libc.so.1 => /usr/lib32/libc.so.1

-bash-4.2$ uname -Ra
IRIX64 octane 6.5 6.5.30f 07202013 IP30

-bash-4.2$ nm /usr/lib32/libjpeg.so | grep __record_needed_destruction
-bash-4.2$ nm /usr/lib32/libz.so | grep __record_needed_destruction
-bash-4.2$ nm /usr/lib32/libm.so | grep __record_needed_destruction
-bash-4.2$ nm /usr/lib32/libc.so.1 | grep __record_needed_destruction
-bash-4.2$ nm /usr/lib32/libCsup.so | grep __record_needed_destruction
-bash-4.2$ nm /usr/lib32/libC.so.2 | grep __record_needed_destruction
[438] | 182133456| 40|FUNC |GLOB |HIDDEN |MIPS_TEXT|__record_needed_destruction
-bash-4.2$ nm /usr/lib32/libCio.so.1 | grep __record_needed_destruction
[744] | 4438896| 40|FUNC |GLOB |HIDDEN |MIPS_TEXT|__record_needed_destruction
-bash-4.2$

Re: trying to solve a unresolvable symbol when running Mira

Posted: Fri May 02, 2014 5:01 am
by duck
You may be SOL, since it appears the program you're trying to run is dynamically loading a DSO that links against libtiff. Why that particular symbol isn't caught is a bit hard to explain though...

This got me thinking though, I wonder what would happen if you would build a (symbolic) libtiff (of the appropriate version) that itself is statically linked and replace the one in /usr/lib32 with it.

Re: trying to solve a unresolvable symbol when running Mira

Posted: Fri May 02, 2014 7:34 am
by jpstewart
It may simply be that the program won't run on 6.5.30. I did a bit of checking. Somewhere between IRIX 6.5.22 and 6.5.29 (the only two IRIX versions that I have access to at the moment), /usr/lib32/libtiff.so was upgraded. The version in 6.5.29 ("LIBTIFF, Version 3.7.1" according to 'strings /usr/lib32/libtiff.so | grep -i version') references __record_needed_destruction whereas the one in 6.5.22 ("LIBTIFF, Version 3.4beta037") does not.

Perhaps try running the program on an older version of IRIX.

Re: trying to solve a unresolvable symbol when running Mira

Posted: Fri May 02, 2014 11:11 am
by foetz
jpstewart wrote:It may simply be that the program won't run on 6.5.30

no, mirai does run on 6.5.30. there were 4 official patches tho for version 1.0. not sure if you got them installed, too.

Re: trying to solve a unresolvable symbol when running Mira

Posted: Fri May 02, 2014 11:28 am
by gijoe77
let me see if I can dig up those patches, I will report back shortly

Re: trying to solve a unresolvable symbol when running Mira

Posted: Fri May 02, 2014 12:18 pm
by gijoe77
still no luck - I installed all 4 patches, logged out/rebooted still no change

Re: trying to solve a unresolvable symbol when running Mira

Posted: Fri May 02, 2014 12:46 pm
by GIJoe
try setting the system date to something 10 years back? or is that too ghetto an approach to work in IRIX? :lol:

i'm quite positive that that's the only thing that's changed in my install which throws the same errors as yours.

Re: trying to solve a unresolvable symbol when running Mira

Posted: Fri May 02, 2014 12:59 pm
by gijoe77
I did try setting the system date back once to try to "trick" some expired licenses I had... that failed to work, flexlm too smart for that! I do seem to recall Mirai working for me before I upgraded to a V12... I could be wrong...

duck - building libs and hacking around like that is beyond my expertise at this point - can you point me in some direction so I can read up about the subject?

Re: trying to solve a unresolvable symbol when running Mira

Posted: Fri May 02, 2014 6:52 pm
by foetz
gijoe77 wrote:I did try setting the system date back once to try to "trick" some expired licenses I had... that failed to work, flexlm too smart for that! I do seem to recall Mirai working for me before I upgraded to a V12... I could be wrong...

mirai also works with a v12 :-)

anyway you might wanna make sure your license is actually valid of course.

Re: trying to solve a unresolvable symbol when running Mira

Posted: Sat May 03, 2014 6:54 am
by GIJoe
GIJoe wrote:try setting the system date to something 10 years back? or is that too ghetto an approach to work in IRIX?


the answer is: no, not nearly ghetto enough.
set your system date to sometime in 2005 and run mirai again...

i do take donations but i don't sign autographs.

Re: trying to solve a unresolvable symbol when running Mira

Posted: Sat May 03, 2014 7:13 am
by duck
gijoe77 wrote:duck - building libs and hacking around like that is beyond my expertise at this point - can you point me in some direction so I can read up about the subject?


Errr.. actually, no. I don't think I've ever come across such a direction... In order to do this you'd need to build tiff normally, and then manually link the DSO, or alter the makefile, or give some flag to configure before you even start... It sort of depends.

How about I build it for you when I have a moment?

Though people are saying that it does run on .30 so now I wonder if it isn't something simpler. Is the ifl_eoe.sw.c++ from .22 package incompatible with .30? I don't have .22 handy here.

Re: trying to solve a unresolvable symbol when running Mirai

Posted: Sat Dec 10, 2016 8:39 am
by gijoe77
I've been playing with an o2 I got off ebay. I put an 6.5.8m disk in the o2, installed Mirai and got the same infinite loop issue, so it goes further back than .22. I'll play with it some more.