2011-10-11 4 views
0

C++ CGI 서버에서 dlopen()을 통해로드 된 C++ 코드에 문제가 있습니다. 잠시 후, 프로그램이 예기치 않게 충돌,하지만 지속적으로 메모리 관리 기능 (예 : 무료로()은 calloc(), 등) 호출과에서 핵심이 유사 덤프 생성합니다 같은free() _UTF8_init()에서 abort()가 발생하여 C++ 서버가 중단됩니다.

#0 0x0000000806b252dc in kill() from /lib/libc.so.6 
#1 0x0000000804a1861e in raise() from /lib/libpthread.so.2 
#2 0x0000000806b2416d in abort() from /lib/libc.so.6 
#3 0x0000000806abdb45 in _UTF8_init() from /lib/libc.so.6 
#4 0x0000000806abdfcc in _UTF8_init() from /lib/libc.so.6 
#5 0x0000000806abeb1d in _UTF8_init() from /lib/libc.so.6 
... the rest of the stack 

누구 본 사람 뭔가 전에?

_UTF8_init() 란 무엇이며 메모리 관리 기능이이를 호출하는 이유는 무엇입니까?

+1

코드에서 먼저 문제를 찾으십시오. 스택의 나머지 부분 *은 당신이 만든 전화입니다. 코드와 주변의 사용법을보십시오. – AJG85

답변

3

코드 어딘가에 버퍼 오버런 때문에 손상된 힙과 같은 냄새가납니다. Valgrind으로 프로그램을 실행하고 오류가 나거나 경고가 표시되는지 확인하십시오.

+0

나는 Valgrind를 시도했지만 Xerces 코드 자체와 관련된 두 가지 문제는 제외하고 모든 것이 괜찮은 것처럼 보였다. – Droopov