2011-07-26 3 views
1

오라클 용 ProC 사전 컴파일러 사용을 포함하는 이전 소프트웨어를 컴파일하려고합니다.오라클 9 ProC 프리 컴파일러 segfault가 pcsus.msb를 읽는 중

이 소프트웨어는 솔라리스 10에서 오라클 9를 사용하여 실행하고, 실제 컴파일러는 내가 실행하려고하면

을 .O하기 위해이 .c를 Conver 유럽을 실행하기 전에 파일을 .C 파일을 .proc 변환하는 proc 도구를 사용하여 이 .proc 파일에 대한 proc이 발생합니다.

# /avacm/nproducts//oracle/source/solaris_2.9/9.2/bin/proc define=__sun define=PRE_COMP code=ansi_c mode=oracle def_sqlcode=yes threads=yes include=/usr/include include=../../../../../include include=../../../../../include/rpcsvc include=../../../../../aam/include include=../../../../../aam/libs/libavaora/include datahost.proc 

Pro*C/C++: Release 9.2.0.6.0 - Production on Tue Jul 26 19:06:20 2011 

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. 

System default option values taken from: /avacm/nproducts//oracle/source/solaris_2.9/9.2//precomp/admin/pcscfg.cfg 

Segmentation Fault (core dumped) 

그때 실제로 무슨 일이 일어나고 있는지 볼 수 truss를 사용하려고합니다.

나는이의 이해 무엇
15775/1:  close(10)          = 0 
15775/1:  open("sys/uio.h", O_RDONLY)      Err#2 ENOENT 
15775/1:  open("/usr/include/sys/uio.h", O_RDONLY)  = 10 
15775/1:  fstat64(10, 0xFFBFB578)       = 0 
15775/1:   d=0x00800000 i=16783 m=0100644 l=1 u=0  g=2  sz=2885 
15775/1:    at = Jul 26 18:50:45 GMT 2011 [ 1311706245 ] 
15775/1:    mt = Mar 13 10:41:10 GMT 2009 [ 1236940870 ] 
15775/1:    ct = May 10 19:03:47 GMT 2011 [ 1305054227 ] 
15775/1:   bsz=8192 blks=6  fs=ufs 
15775/1:  brk(0x00A475B0)         = 0 
15775/1:  brk(0x00A495B0)         = 0 
15775/1:  fstat64(10, 0xFFBFB420)       = 0 
15775/1:   d=0x00800000 i=16783 m=0100644 l=1 u=0  g=2  sz=2885 
15775/1:    at = Jul 26 18:50:45 GMT 2011 [ 1311706245 ] 
15775/1:    mt = Mar 13 10:41:10 GMT 2009 [ 1236940870 ] 
15775/1:    ct = May 10 19:03:47 GMT 2011 [ 1305054227 ] 
15775/1:   bsz=8192 blks=6  fs=ufs 
15775/1:  ioctl(10, TCGETA, 0xFFBFB504)     Err#25 ENOTTY 
15775/1:  read(10, "/*\t C o p y r i g h t".., 8192) = 2885 
15775/1:  brk(0x00A495B0)         = 0 
15775/1:  brk(0x00A4B5B0)         = 0 
15775/1:  brk(0x00A4B5B0)         = 0 
15775/1:  brk(0x00A4D5B0)         = 0 
15775/1:  brk(0x00A4D5B0)         = 0 
15775/1:  brk(0x00A4F5B0)         = 0 
15775/1:  read(10, 0x00A45A9C, 8192)      = 0 
15775/1:  llseek(10, 0, SEEK_CUR)       = 2885 
15775/1:  close(10)          = 0 
15775/1:  open("/avacm/nproducts//oracle/source/solaris_2.9/9.2//precomp/mesg/pcpus.msb", O_RDONLY) = 10 
15775/1:  fcntl(10, F_SETFD, 0x00000001)     = 0 
15775/1:  lseek(10, 0, SEEK_SET)       = 0 
15775/1:  read(10, "1513 "011303\t\t\0\0\0\0".., 256)  = 256 
15775/1:  open("/avacm/nproducts//oracle/source/solaris_2.9/9.2//slax/mesg/pxus.msb", O_RDONLY) Err#2 ENOENT 
15775/1:  open("/avacm/nproducts//oracle/source/solaris_2.9/9.2//slax/mesg/pxus.msb", O_RDONLY) Err#2 ENOENT 
15775/1:  close(10)          = 0 
15775/1:  close(9)          = 0 
15775/1:  close(8)          = 0 
15775/1:  open("/avacm/nproducts//oracle/source/solaris_2.9/9.2//precomp/mesg/pcsus.msb", O_RDONLY) = 8 
15775/1:  fcntl(8, F_SETFD, 0x00000001)     = 0 
15775/1:  lseek(8, 0, SEEK_SET)       = 0 
15775/1:  read(8, "1513 "011303\t\t\0\0\0\0".., 256)  = 256 
15775/1:   Incurred fault #6, FLTBOUNDS %pc = 0x0004CED8 
15775/1:    siginfo: SIGSEGV SEGV_MAPERR addr=0x00000000 
15775/1:   Received signal #11, SIGSEGV [default] 
15775/1:    siginfo: SIGSEGV SEGV_MAPERR addr=0x00000000 

pcsus.msb 파일을 읽는 동안, 일부 문자열 처리가 잘못하고시키고 말았다이다 :

# truss -vall -wall -fall /avacm/nproducts//oracle/source/solaris_2.9/9.2/bin/proc define=__sun define=PRE_COMP code=ansi_c mode=oracle def_sqlcode=yes threads=yes include=/usr/include include=../../../../../include include=../../../../../include/rpcsvc include=../../../../../aam/include include=../../../../../aam/libs/libavaora/include datahost.proc 

는 그리고이 라인의 지난 몇입니다.

온라인으로 찾은 다른 파일 pcsus.msb을 사용해 보았습니다. 일부는 다른 오류를 발생 시켰지만 제대로 작동하지 않습니다.

코어 파일의 pstrack 출력도별로 도움이되지 않습니다.

# pstack core 
core 'core' of 15803: /avacm/nproducts//oracle/source/solaris_2.9/9.2/bin/proc define=__sun 
0004ced8 pcs  (0, ffbfeae4, 0, 1, ffbfd788, 2) + 37c 
00044dfc pc2main (ffbfeb94, ffbff0ac, 1, 0, 544668, fe6ba518) + 1030 
00416d70 lpmcall (51bac0, 51f660, 51bb68, c, ffbff780, 51b7a0) + 46c 
004129a4 lpmpmai (4, ffbff534, d, ffbff74c, ff000000, 80808080) + 178 
0003e688 main  (d, ffbff74c, ffbff784, 513c00, ff2a0100, 0) + f0 
0003e570 _start (0, 0, 0, 0, 0, 0) + 108 

모든 문제를 해결할 수있는 방법이 있습니까?

덕분에, 하비에르

답변

1

나는 신선한 오라클 9i의 설치를 얻을 수 있었고, 그 PROC는 "lloff_t"에 관한 오류를 반환했습니다 :

PCC-S-02201, Encountered the symbol "lloff_t" when expecting one of the following 

그리고 난 여기 해결책을 발견

http://www.orafaq.com/forum/t/59837/2/ 

proc 명령 줄에 -D__sparc을 추가하십시오.

하비에르