why this program is wrong on Tru64 OS ?

  • Thread starter jose luis fernandez diaz
  • Start date
J

jose luis fernandez diaz

Hi,

When I run the program below on Tru64:

#include <string>

int main()
{
char *cad="hola";
string s1 = 1 ? string(cad, 0, 2) : "";
}


I get the next error:

Unaligned access pid=28959 <a.out> va=0x3ff8000f40c pc=0x1200059c8
ra=0x120005944 inst=0xa403ffe8
Resources lost(coredump)


These are the OS and compiler versions:

sqocfms01:jdiaz:/tmp>uname -a
OSF1 sqocfms01.esm.cpqcorp.net V5.1 1885 alpha
sqocfms01:jdiaz:/tmp>cxx -V
Compaq C++ V6.3-008 for Compaq Tru64 UNIX V5.1A (Rev. 1885)
Compiler Driver V6.3-008 (cxx) cxx Driver


Thands in advance,
Jose Luis
 
V

Victor Bazarov

jose luis fernandez diaz said:
When I run the program below on Tru64:

#include <string>

int main()
{
char *cad="hola";
string s1 = 1 ? string(cad, 0, 2) : "";
}


I get the next error:

The program is not supposed to compile according to the rules
of the Standard C++ language. 'string' is supposed to be
declared in the 'std' namespace.
Unaligned access pid=28959 <a.out> va=0x3ff8000f40c pc=0x1200059c8
ra=0x120005944 inst=0xa403ffe8
Resources lost(coredump)


These are the OS and compiler versions:

sqocfms01:jdiaz:/tmp>uname -a
OSF1 sqocfms01.esm.cpqcorp.net V5.1 1885 alpha
sqocfms01:jdiaz:/tmp>cxx -V
Compaq C++ V6.3-008 for Compaq Tru64 UNIX V5.1A (Rev. 1885)
Compiler Driver V6.3-008 (cxx) cxx Driver

OS-specific and compiler-specific behaviour cannot be explained from
the language standpoint, and this newsgroup deals with language only.
Perhaps you will find more information in a newsgroup dedicated to
your OS or your compiler.

IOW, there is nothing in the program itself (except the 'std::' thing)
that would suggest the alignment problems, and there is nothing in the
C++ language specification that would help solving your problem.

Oh, try declaring 'cad' as a pointer to _const_ char:

char const* cad = "hola";

(not that it should make much difference, though)

Victor
 
S

Stephan Br?nnimann

Hi,

When I run the program below on Tru64:

#include <string>

int main()
{
char *cad="hola";
string s1 = 1 ? string(cad, 0, 2) : "";
}


I get the next error:

Unaligned access pid=28959 <a.out> va=0x3ff8000f40c pc=0x1200059c8
ra=0x120005944 inst=0xa403ffe8
Resources lost(coredump)


These are the OS and compiler versions:

sqocfms01:jdiaz:/tmp>uname -a
OSF1 sqocfms01.esm.cpqcorp.net V5.1 1885 alpha
sqocfms01:jdiaz:/tmp>cxx -V
Compaq C++ V6.3-008 for Compaq Tru64 UNIX V5.1A (Rev. 1885)
Compiler Driver V6.3-008 (cxx) cxx Driver


Thands in advance,
Jose Luis


I remember that we had this problem with a Compaq CXX: somehow he doesn't
get the types correctly. The following should fix your problem
(not the CXX bug:):

string s1 = 1 ? std::string(cad, 0, 2) : std::string("");

In our source we are using the empty string first, but it shouldn't matter,
please let me know as I do no more have a CXX compiler available.

Regards, Stephan
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,057
Latest member
KetoBeezACVGummies

Latest Threads

Top