2009-12-04 9 views
1

sqlcxt()가 세그먼트 오류를 ​​일으킬 수있는 조건을 설명하고 Oracle 데이터베이스에 대한 데이터베이스 연결에 ProC를 사용하여 유닉스에서 작업 중입니다.sqlcxt()가 세그먼테이션 오류를 야기 함

내 프로그램 충돌 및 코어 파일은 충돌이 sqlcxt() 기능

A loadobject was found with an unexpected checksum value. 
See `help core mismatch' for details, and run `proc -map' 
to see what checksum values were expected and found. 

때문입니다 것을 보여줍니다 ...

dbx: warning: Some symbolic information might be incorrect. 

...

[email protected] ([email protected]) program terminated by signal SEGV 

(no mapping at the fault address)0xffffffffffffffff:  
<bad address 0xffffffffffffffff> 
Current function is dbMatchConsortium 
    442    **sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);** 
+1

유닉스 버전과 버전은 무엇입니까? 어떤 오라클 버전입니까? 코어 덤프는 예외적 인 조건이며 일반적으로 구성에 약간의 충돌이 있기 때문입니다. 이를 진단하려면 낮은 수준의 세부 사항이 많이 필요할 수 있습니다 (인내심은 말할 것도 없습니다). 따라서 더 많은 정보를 게시하면 ** 실제로 ** 누군가가 실제로 당신을 도울 수있는 가능성이 커집니다. – APC

+0

AIX, oracle 9i를 사용하고 있습니다. –

답변

0

가있다 당신이 가진 문제가 포인터 오류/메모리 할당 오류 일종의 괜찮은 기회 요 U C 코드. 이러한 것들은 찾기가 쉽지 않습니다. 당신이 주석 (또는 #ifdef와) 프로그램의 섹션에서하고 문제가 사라지면 할 수있는 경우

  1. 참조 : 당신이 시도가 수있는 몇 가지 것들. 그렇다면 나쁜 부분을 닫을 수 있습니다.
  2. 프로그램을 디버거에서 실행하십시오.
  3. 다른 사람과 코드 검토를하십시오 - 이것은 종종 하나 이상의 문제를 발견하게됩니다 (보통 내 코드에서 작동합니다).

이 정보가 도움이되기를 바랍니다. 자세한 내용을 추가하십시오.이 질문에 대해 다시 확인하고 도움을 드릴 수 있는지 확인하겠습니다.

+0

코드가 가끔 실패합니다. 일정 시간 동안 성공하고 얼마 동안 실패했음을 의미합니다. –

+0

입력 데이터가 실패한 것으로 확인하십시오. 간헐적 인 실패라면 NULL 포인터 문제입니다. 이것은 추한 것처럼 들리지만 보통 fprintf와 fflush에 의존하여 파일에 추가합니다. print 서술문이 많아서 나중에 문제를 발견하고 나서 보통 내 C 코드에서 어리석은 일이 무엇인지 알기를 원하지 않습니다. –

+0

이상하게도이 실패와 성공은 확인되지 않았습니다. 코어 파일에있는 모든 것은 sqltxt()가 실패한 것입니다. –

0

아마도 프로그램에서 할당 오류 일 것입니다. 이런 종류의 행동을 취할 때 그것은 항상 나의 잘못이었습니다. Solaris/SPARC 및 Oracle 10g에서 개발합니다. 일단 double free (즉, 같은 포인터를 두 번 풀었습니다)와 두 번째로 프로그램의 오라클 부분에서 코어를 확보 한 것은 할당 된 메모리 블록이 아닌 포인터를 해제했을 때였습니다. Solaris의 경우 libumem 할당 라이브러리 (자세한 내용은 Google)를 사용하여 동작이 변경되는지 확인할 수 있습니다.

+0

네, 저는 이것을 메모리 문제로 생각하고 있습니다 만, 같은 코드가 성공과 실패를 몇 차례에 걸쳐 리턴 할 수 있습니다. –

+0

@Sachin Chourasiya 아마도 일부 할당은 실패하고, 다른 경우는 그렇지 않습니다. 어떤 때는 버퍼 오버플로가 발생하거나 가끔 버퍼 오버플로가 발생하여 버퍼 오버 플로우가 해를 끼치 지 않을 정도로 "행운"입니다. – nos

관련 문제