Need help with C app on Oracle running on Solaris 6

Hello,

I would really appreciate some help with a problem my current client is having. He has an old legacy app that does his company's financial accounting and ERP for manufacturing, etc. The app was written by a company called "Just in time" in Austin, TX, and they are no longer in business.

The app was running on a Sparc20 running SunOS 5.4 with Oracle on the backend before the system lost its root drive and crashed. They subsequently moved the Oracle and app to a Sun E450 running Solaris 6. The oracle was reinstalled, etc. They copied all the directories and filesystems they could from the old machine to the new. The app runs fine for the most part.

The app is mostly made up of C files created with a Pro*C compiler, and shell scripts which call some of these programs to do automated tasks such as invoice printing, etc. The shell scripts are mainly run via cron once a day. The problem is, the programs called via the shell scripts are not working anymore. They have not worked since moving to the new box. They don't even work on the old machine, anymore. The app does work fine interactively, though, and they are able to use the SAME C program modules called by the shell scripts, to do their work from the main app.

I have been trying to debug just ONE of the programs called by a shell script. One of the parameters passed to the C program is the term type, in this case, vt220. The app has its own termcap sort of file to look up the term type passed to it. vt220 exists in the file. However, the program dies at some point with an error message saying that it wasn't able to find the CRT from its file. Here is the error:

  • Error From CIMJIT...Invalid CRT Specified:
    Unable to Locate Entry in CRT File: nf_tcl
    Press <Return> to Continue

Note that there is nothing after the "invalid CRT specified:" part. It should print whatever value it got for the CRT or term. I have recompiled the program with some debugging printf statements for the args to main. The C program called by the script also calls functions in other C programs. I have only been able to go to one other file before the program dies with this error. It's not easy to explain all of this without actually going thru the app like I have, but I am trying to explain the main points.

If anyone can provide some input or help, I'd really appreciate it. One thing I have thought about is the difference between SunOS5.4 and Solaris 6, ie SunOS 5.6. I think I have all the source and make files and am trying to compile the whole app on the new machine from scratch. It's not very helpful without all the documentation etc. I have also tried running truss on the shell script. I see a few ENOTTY errors on ioctl calls but that's about it.

Any help would be greatly appreciated. Thanks.

Salman

My suggestion would be to first rebuild the system using the original OS on the new hardware..... and then after that is up and running well, consider an OS upgrade.

It is really 'too much work' to try to mend and upgrade a crashed app AND OS, all at once.... baby steps..... first simply rebuild the app without changing the OS version.

That is a wise suggestion, and what I would have done under "normal" circumstances. However, I was hired for a couple of weeks and asked to fix this problem, which wasn't really what I was told in the interview. Anyways, I did manage to fix it. Not just this one but another one they dumped on me after I got this one. The IT manager wasn't kidding when he said, "Congrats! You seem to have found the needle in the haystack!" Anyways, all's well that ends well, I guess. Thanks for your response.

Salman