Operating System - HP-UX
1829915 Members
1493 Online
109993 Solutions
New Discussion

Binary that ran fine on 10.20 doesn't run on 11i 64bits

 
SOLVED
Go to solution

Binary that ran fine on 10.20 doesn't run on 11i 64bits

Hello all,

I have an old application that used to run on an old 10.20 server and I'm trying to migrate to HP-UX 11i 64bits (vPar). When I run it on my new OS, it fails with a "Bus error" message (no core dump).

I traced it with wdb and apparently it tries to reach an address space that isn't allowed by the system.

We no longer have support for this application.Is there a way for me to "encapsulate" this as a 32bit application? In other words, to make it act as if it was on a 32 bit OS?

Thanks,
Rikk
Carpe Diem
15 REPLIES 15
Bill Hassell
Honored Contributor

Re: Binary that ran fine on 10.20 doesn't run on 11i 64bits

> I traced it with wdb and apparently it tries to reach an address space that isn't allowed by the system.

Well, this sounds as if your program needs to allocate more space than the current OS allows for a 32bit program (kernel parameters in this vPar?). I doubt that the 64bit OS is causing the error. It is very likely a coding error that happened to work at 10.20 but would fail at 11.00 32 or 64 bits. If you don't have the ability to fix the bug, you'll have to keep a 10.20 machine forever...


Bill Hassell, sysadmin
Steven E. Protter
Exalted Contributor

Re: Binary that ran fine on 10.20 doesn't run on 11i 64bits

Shalom,

The program could be coded using PA-RISC functionality that is not supported any more.

AIRES will not run everything.

A recompile with a modern compiler will probably point out some issues.

SEP
Steven E Protter
Owner of ISN Corporation
http://isnamerica.com
http://hpuxconsulting.com
Sponsor: http://hpux.ws
Twitter: http://twitter.com/hpuxlinux
Founder http://newdatacloud.com
James R. Ferguson
Acclaimed Contributor

Re: Binary that ran fine on 10.20 doesn't run on 11i 64bits

Hi:

> SEP: AIRES will not run everything. A recompile with a modern compiler will probably point out some issues.

I don't think we know the hardware on which Richard is running. Aries might not be involved at all.

That said, Aries runs "well-behaved" PA-RISC code unless that code was compiled on HP-UX version 8.x or earlier. Have a look at the Aries(5) manpages under "LIMITATIONS".

Regards!

...JRF...
Dennis Handly
Acclaimed Contributor

Re: Binary that ran fine on 10.20 doesn't run on 11i 64bits

>HP-UX 11i

This isn't helpful. There are at least 4 versions and two architectures. Please provide "uname -a".

>I traced it with wdb and apparently it tries to reach an address space that isn't allowed by the system.

You mean you have a bad pointer. Saying "address space" is too hand wavy.

Can you provide this at the abort:
(gdb) bt
(gdb) info reg
(gdb) disas $pc-4*16 $pc+4*4

>to make it act as if it was on a 32 bit OS?

The one purpose of HP-UX is to make 32 bit applications run correctly. Why would you think this is your problem?

>Bill: this sounds as if your program needs to allocate more space than the current OS allows for a 32bit program

I'm not sure how you know it sounds like anything except it has a signal 10?
(It does sound like we need more info. :-)

>I doubt that the 64bit OS is causing the error. It is very likely a coding error that happened to work at 10.20

Right. Unless it is a configuration issue. Or an issue with large PIDs, etc.

Re: Binary that ran fine on 10.20 doesn't run on 11i 64bits

Hello all,

Thank you for you interest in this issue.

I am assuming that this is not a â Well behavedâ PA-RISC code but unfortunately, the company that produced this code doesnâ t exist anymore. There is no longer any support for this piece of code.

To my knowledge, weâ re not using ARIES since this runs PA-RISC apps on Itanium. Iâ m running on 11.11 PA-RISC.

Uname â a reports:

HP-UX legapdev B.11.11 U 9000/800 2301639705 unlimited-user license

Iâ ve attached the log of the wdb instructions, asked by Dennis, to this post. I do seem to have a bad pointer. Sorry for the hand wavy comment as English is not my maternal language.

By the way, Iâ m running this on a cell of an rp7440 server.

Regards,

P.S. I will award points as soon as I finish this post. Thanks again.
Carpe Diem

Re: Binary that ran fine on 10.20 doesn't run on 11i 64bits

Sorry. Had a special character conversion issue.Here is a repost.

Hello all,

Thank you for you interest in this issue.

I am assuming that this is not a "Well behaved" PA-RISC code but unfortunately, the company that produced this code doesn't exist anymore.There is no longer any support for this piece of code.


To my knowledge, we're not using ARIES since this runs PA-RISC apps on Itanium. I'm running on 11.11 PA-RISC.

Uname -a reports:

HP-UX legapdev B.11.11 U 9000/800 2301639705 unlimited-user license

I've attached the log of the wdb instructions, asked by Dennis, to this post. I do seem to have a bad pointer. Sorry for the hand wavy comment as English is not my maternal language.

By the way, I'm running this on a cell of an rp7440 server.

Regards,

P.S. I will award points as soon as I finish this post. Thanks again.
Carpe Diem
Venkatesh BL
Honored Contributor

Re: Binary that ran fine on 10.20 doesn't run on 11i 64bits

> I am assuming that this is not a "Well behaved" PA-RISC code but unfortunately, the company that produced this code doesn't exist anymore.There is no longer any support for this piece of code.

Oops. Looks like a dead-end to me. :(
Wim Rombauts
Honored Contributor

Re: Binary that ran fine on 10.20 doesn't run on 11i 64bits

Since you say that the application seems to want to allocate more memory tan it is allowed, maybe - just a guess - your application needs more *private* memory than is standard configured in HP-UX 11.11.

If you run "chatr | grep 'quadrant private'", are both of them disabled ?

If the third quadrant is disabled, run "/usr/bin/chatr +q3p enable ".

Ig the third quadrant is enabled, but the fourth is not, run "/usr/bin/chatr +q4p enable ".

Again, this is just a guess. If it doesn't make any difference, you can revert the changes by running the same comands and use "disable" instead of "enable"
Dennis Handly
Acclaimed Contributor

Re: Binary that ran fine on 10.20 doesn't run on 11i 64bits

>I do seem to have a bad pointer.

0xc01f51b4: addil L'-0x800,%r19,%r1
0xc01f51b8: ldw 0x4b0(%r1),%r1
0xc01f51bc: ldw 0(%r1),%r31
0xc01f51c0: ldw 0x20(%r31),%r21
0xc01f51c4: ldw 8(%r21),%rp <<<
0xc01f51c8: ldi 0x800,%r22

This is fetching a shlib global/static. And the value in r21 is bad: 7b045cc0
SP is 7f7f0c10, so it isn't a stack overflow.

It doesn't look like out of heap space.

Is the executable stripped?
What shlibs does it use? (What does chatr(1) show?)
Does "info shared" work in gdb?
I hope you are debugging the core file on the same system that produced it?

How big is the core file? If no proprietary info in it, can you make it available?

>Wim: Since you say that the application seems to want to allocate more memory than it is allowed, maybe

I'm not sure how you can determine this from the register dump?

Re: Binary that ran fine on 10.20 doesn't run on 11i 64bits

In response to Wim Rombauts

>If you run "chatr | grep 'quadrant private'", are both of them disabled ?

Yes, they are.

>If the third quadrant is disabled, run "/usr/bin/chatr +q3p enable ".

No change, still get the error.

>If the third quadrant is enabled, but the fourth is not, run "/usr/bin/chatr +q4p enable ".

I get a new error, as follow:

root@legapdev [/intercap/version78/com]> /intercap/version78/com/editor
crt0: ERROR: mmap failed for dld (text) errno:000000012

In response to Denis Handly:

Sorry for the confusion, when the program aborts, it actually does generate a core file. I've ran the program through gdb, with the core file, and I've included the output in a file called errorlog, which I've included in a tar.gz bundle, attached to this post. This gz also contains the output of the chatr command.

I can't include the program (4 megs) or the core (23 Megs). It can't compress under 1Mb.

Your help is very much appreciated. Thank you!

Richard
Carpe Diem

Re: Binary that ran fine on 10.20 doesn't run on 11i 64bits

Additional info:

root@legapdev [/tools/legapdev]> file /intercap/version78/com/editor
/intercap/version78/com/editor: PA-RISC1.1 shared executable dynamically linked

root@legapdev [/tools/legapdev]> what /intercap/version78/com/editor
/intercap/version78/com/editor:

root@legapdev [/tools/legapdev]> nm /intercap/version78/com/editor
nm: /intercap/version78/com/editor: no symbols
root@legapdev [/tools/legapdev]>
Carpe Diem
Steven E. Protter
Exalted Contributor

Re: Binary that ran fine on 10.20 doesn't run on 11i 64bits

Shalom Rikk,

This dog is not going to hunt.

The program needs to be recompiled from source if you have it.

SEP
Steven E Protter
Owner of ISN Corporation
http://isnamerica.com
http://hpuxconsulting.com
Sponsor: http://hpux.ws
Twitter: http://twitter.com/hpuxlinux
Founder http://newdatacloud.com
Dennis Handly
Acclaimed Contributor
Solution

Re: Binary that ran fine on 10.20 doesn't run on 11i 64bits

>I get a new error, as follow:
crt0: ERROR: mmap failed for dld (text) errno:000000012

Yes, you have to have some shared memory and your 9.x application probably doesn't like +q4p enable.

>I've ran the program through gdb, with the core file

You should download the latest gdb and maybe it will work better and recognize those shlibs?

shared library list:
dynamic /usr/lib/libcl.sl
dynamic /lib/libm.sl
dynamic /lib/libc.sl

This is very strange. It almost means this was created on 8.0 or 9.0?
A program created on 10.20 should have versioned shlibs: /usr/lib/libc.1

You could try tusc to see which shlib is being opened?
tusc -fp -ea -o tusc.out /intercap/version78/com/editor

>(gdb) info shared
No shared libraries loaded at this time.

Well this is broken. gdb just got through saying:
Reading symbols from /usr/lib/dld.sl
Reading symbols from /usr/lib/libcl.0
Reading symbols from /usr/lib/libisamstub.1
Reading symbols from /lib/libm.0
Reading symbols from /lib/libc.0
Reading symbols from /usr/lib/libdld.1

Aw, these *.0 shlibs indicate the application was developed on 9.x or earlier.

>I can't include the program (4 megs) or the core (23 Megs). It can't compress under 1Mb.

Is it worth it to you to provide a ftp site where I can pick them up?

>nm: /intercap/version78/com/editor: no symbols

(That's awful nice of them. )-:

>old 10.20 server

Do you still have it, to copy those above .0 shlibs? (Caution those are symlinks and you need to following them.)

Re: Binary that ran fine on 10.20 doesn't run on 11i 64bits

>>I get a new error, as follow:
crt0: ERROR: mmap failed for dld (text) errno:000000012

>Yes, you have to have some shared memory and your 9.x application probably doesn't like +q4p enable.

I have disabled +q4p and +q3p.

>You should download the latest gdb and maybe it will work better and recognize those shlibs?

I have a fairly recent version on HP Wildebeest (5.9). There is a version 6.0 but I'm not part of Developer & Solution Partner Program (DSPP) so I can't download it. Until further notice, I'm stuck with this version.

>This is very strange. It almost means this was created on 8.0 or 9.0?
A program created on 10.20 should have versioned shlibs: /usr/lib/libc.1

This is quite possibly the case. It's a very old application but unfortunately it is still used in our production environment.

>You could try tusc to see which shlib is being opened?
tusc -fp -ea -o tusc.out /intercap/version78/com/editor

I copy of the tusc log is attached to this post.

>Is it worth it to you to provide a ftp site where I can pick them up?

I'll see what I can do. We have no public ftp site (against corporate policy). The tar-gzipped file is only 2 mb. I could always email.

>Do you still have it, to copy those above .0 shlibs? (Caution those are symlinks and you need to following them.)

Strange, my 10.20 box doesn't seem to have these libraries. Still, I can run the application.

root@old-p1se [/lib]> ll /usr/lib/libcl.0
/usr/lib/libcl.0 not found
root@old-p1se [/lib]> ll /lib/libm.0
/lib/libm.0 not found
root@old-p1se [/lib]> ll /lib/libc.0
/lib/libc.0 not found
root@old-p1se [/lib]> uname -a
HP-UX old-p1se B.10.20 A 9000/816 940328261 two-user license
root@old-p1se [/lib]>
Carpe Diem
Dennis Handly
Acclaimed Contributor

Re: Binary that ran fine on 10.20 doesn't run on 11i 64bits

>There is a version 6.0 but I'm not part of Developer & Solution Partner Program (DSPP) so I can't download it.

Anyone can register at DSPP to download it.

>I copy of the tusc log is attached to this post.

This indicates it is failing right away after it prints the version. It seems to show a different abort location/instruction.

>The tar-gzipped file is only 2 mb. I could always email.

Sure, you should know how to decode my hp.com address, first.last ....

Also what patch to you have for /usr/lib/libc.0 or libc.1?
I have:
$ ll /usr/lib/libc.1
-r-xr-xr-x 1875968 Feb 7 2005 /usr/lib/libc.1*
$ what /usr/lib/libc.1
/usr/lib/libc.1:
PATCH-PHCO_32718 for 10.20; for 10.30, 11.x compatibility libc.1_ID@@/main/r10dav/libc_dav/libc_dav_cpe//1 /ux/core/libs/libc/shared_pa1/libc.1_ID
Feb 4 2005 10:03:03

>my 10.20 box doesn't seem to have these libraries. Still, I can run the application.

The 10.20 box would just use the libs in question, ones with .sl. Only on 11.00 and later, would it try those .0 shlibs.

So save those .sl libs from 10.20 and put them in a directory and rename them to .0.

Then use "chatr +s enable editor" and then export SHLIB_PATH to that directory.