libxml2문제에 대한 질문 입니다.

hyper9의 이미지

이전에도 비슷한 제목으로 질문을 올린 적이 있는데,,
그 때는 너무 정신없이 글을 올려놓은 것 같아서요 ..
다시 한번 정리해서 질문을 올려보려고 합니다. 며칠간
헛짓을 했지만,, 그 바람에 질문은 정리가 좀 더 될 수 있겠네요..
해결은 아직도 ㅜㅜ 입니다..

일단 처음 이 문제를 발견한 것은 회사에서 개발하고 있는 SW가 있는데,
이 Software는 그 동안 주로 Pentium 4 Single Core system에서 수행이
되었고, 별 문제가 없었고요.
한번은 이 Software를 Xeon (3.00GHz)가 두 개 설치되어 있는 System에서
수행했는데,,이때도 별문제가 없었거든요.
이 System의 경우는 Hyper Threading이 enable되어 있었습니다.

얼마전에 Quad Core 가 2개 설치되어 있는 System이 새로 도입되고, 거기에
이 Software를 설치해서 성능을 비교해 보라는 과제(?)가 떨어져서..
설치를 하고 수행을 시키니까,,,문제가 발생하면서 제대로 수행이 안되더군요..

일단 몇군데 의심스러운 부분에 debug message를 추가해보았습니다.
그러니 항상 아래와 같이 xmlFree(Buffer); 가 호출되면서 System이 hang되는
것 처럼 보이더군요..

printf("Debug message #1\n");
xmlFree( Buffer );
printf("Debug message #2\n");

위의 예에서 첫번째 debug message만이 보이고 두 번째 debug message는 보이지 않는
그런 상황입니다.

처음에는 혹시 Kernel Configuration이 관련이 있는게 아닌가 해서 Kernel의 SMP
option을 모두 끄고 다시 Kernel을 build해서 사용해 보았는데 결과는 같았습니다.

그러다가 xmlFree는 libxml2라는 library function이기에 libxml2에 대해서 관심이
생기기 시작했고요 ..

libxml2 site (http://xmlsoft.org/)에 가보니, thread safety에 대한 언급들이
보여서요.
기존에 설치되어 있던 libxml2 library가 문제가 있는 version은 아닌지, 또는 thread safety
에 맞게 설정되어 있지 않은건지에 대해 의심이 들었습니다.

원래 사용하고 있던 libxml2 library는
libxml2-2.6.28-2와 libxml2-python-2.6.28-2 입니다.

일단은 libxml2-2.6.31-1과 libxml2-python-2.6.31-1로 upgrade를
해보고 결과를 비교했더니 결과는 동일했고,,이건 아닌가 보다 싶었죠.

두 번째로는 libxml2 source rpm을 구해서 thread safe하게 compile을 잘해보자
싶었고요..libxml2-2.6.31-1의 source rpm을 구해서 compile해보고 설치를
하는데, 이 compile 절차가 영 쉽지를 않네요. (제가 잘 몰라서 그러는 듯 싶습니다. ~ ㅜㅜ)

xmlsoft.org에 가보면 thread safety를 보장하기 위해서 --with-threads option과
xmlInitParser()라는 function을 꼭 쓰라고 되어 있던데요..

일단 source rpm을 구해서 rpm -ivh command를 써서 설치를 했더니..
source는 /usr/src/redhat/SOURCES 아래에 설치가 되었고, /usr/src/redhat/SPECS아래에는
libxml2.spec이라는 file이 생성되었습니다.

처음에는 rpmbuild --with-threads -bal libxml2.spec --target=i386
이라고 했지만, --with-threads: unknown option이라고 나오네요 .

그냥 /usr/src/redhat/SOURCES아래에서
./configure --with-threads
make
make install
이라고 수행한 후에 /usr/local/lib아래에 생성된 libxml2-so.2.6.31을
/usr/lib아래에 copy해서 시험해 보는 중입니다.

debug message만으로는 뭔가 부족한 것 같아 gdb로 더 자세히 볼 수 없을까
해서요 ..

gdb로 더 쫓아가 보니,,아래와 같이 보이네요 ..
(gdb) next
950 xmlFree( Buffer );
(gdb) stepi
0x0809b11a 950 xmlFree( Buffer );
(gdb) stepi
0x0809b11d 950 xmlFree( Buffer );
(gdb) stepi
0xb7b0d5a0 in free () from /lib/libc.so.6
(gdb) si
0xb7b0d5a1 in free () from /lib/libc.so.6
(gdb) si
0xb7b0d5a3 in free () from /lib/libc.so.6
(gdb) si
0xb7b0d5a6 in free () from /lib/libc.so.6
(gdb) si

0xb7b0d5a9 in free () from /lib/libc.so.6
(gdb) si
0xb7ab6db0 in __i686.get_pc_thunk.bx () from /lib/libc.so.6
(gdb) si
0xb7ab6db3 in __i686.get_pc_thunk.bx () from /lib/libc.so.6
(gdb) si
0xb7b0d5ae in free () from /lib/libc.so.6
(gdb) si
0xb7b0d5b4 in free () from /lib/libc.so.6
(gdb) si
0xb7b0d5b7 in free () from /lib/libc.so.6
(gdb) si
0xb7b0d5ba in free () from /lib/libc.so.6
(gdb) si
0xb7b0d5bd in free () from /lib/libc.so.6
(gdb) si
0xb7b0d5c3 in free () from /lib/libc.so.6
(gdb) si
0xb7b0d5c5 in free () from /lib/libc.so.6
(gdb) si
0xb7b0d5c7 in free () from /lib/libc.so.6
(gdb) si
0xb7b0d5e2 in free () from /lib/libc.so.6
(gdb) si
0xb7b0d5e4 in free () from /lib/libc.so.6
(gdb) si
0xb7b0d5e6 in free () from /lib/libc.so.6
(gdb) si
0xb7b0d5e9 in free () from /lib/libc.so.6
(gdb) si
0xb7b0d5ec in free () from /lib/libc.so.6
(gdb) si
0xb7b0d5ef in free () from /lib/libc.so.6
(gdb) si
0xb7b0d5f1 in free () from /lib/libc.so.6
(gdb) si
0xb7b0d5f3 in free () from /lib/libc.so.6
(gdb) si
0xb7b0d5f5 in free () from /lib/libc.so.6
(gdb) si
0xb7b0d5fb in free () from /lib/libc.so.6
(gdb) si
0xb7b0d5fd in free () from /lib/libc.so.6
(gdb) si
0xb7b0d604 in free () from /lib/libc.so.6
(gdb) si
0xb7b0d607 in free () from /lib/libc.so.6
(gdb) si
0xb7b0d609 in free () from /lib/libc.so.6
(gdb) si
0xb7b0d60b in free () from /lib/libc.so.6
(gdb) si
0xb7b0d610 in free () from /lib/libc.so.6
(gdb) si
0xb7b0d618 in free () from /lib/libc.so.6
(gdb) si
0xb7b0d61a in free () from /lib/libc.so.6
(gdb) si
0xb7b0d61e in free () from /lib/libc.so.6
(gdb) si
0xb7b0e377 in _L_lock_14919 () from /lib/libc.so.6
(gdb) si
0xb7b0e379 in _L_lock_14919 () from /lib/libc.so.6
(gdb) si
0xb7b809e0 in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809e1 in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809e2 in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809e3 in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809e8 in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809ea in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809ec in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809ee in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809f0 in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809f9 in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809fb in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809fd in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809ff in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809f2 in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809f7 in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si

0xb7b809f9 in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809fb in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809fd in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809ff in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809f2 in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809f7 in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809f9 in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809fb in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809fd in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809ff in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809f2 in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809f7 in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809f9 in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb) si
0xb7b809fb in __lll_mutex_lock_wait () from /lib/libc.so.6
(gdb)

이 gdb 정보를 보면 free() from /lib/libc.so.6라는 말이 나오는데요.

#if defined(DEBUG_MEMORY_LOCATION) || defined(DEBUG_MEMORY)
xmlFreeFunc xmlFree = (xmlFreeFunc) xmlMemFree;
#else
xmlFreeFunc xmlFree = (xmlFreeFunc) free;
#endif

#if defined(LIBXML_THREAD_ALLOC_ENABLED) && defined(LIBXML_THREAD_ENABLED)
#undef xmlFree
xmlFreeFunc *
__xmlFree(void){
if (IS_MAIN_THREAD)
return (&xmlFree);
else
return (&xmlGetGlobalState()->xmlFree);
}
#endif

code에 위와 같은 부분이 있거든요..그럼 위에처럼 xmlFree = (xmlFreeFunc) free
가 적용되어 있는 것 같은데,,이것이 맞는지도 좀 애매하네요 ..

정리한다고 쓰기 시작했는데,,다시 정신이 없어지는 것 같기도 하네요 ㅜㅜ
암튼 이런 상황에서 어떻게 문제에 접근하는 게 좋은지 조언을 구하는게 질문의 본 내용이고요..

libxml library를 어떻게 해야 thread safe하게 build하는 건지,,또 그게 제대로
build된건지는 어떻게 확인하면 되는지도 같이 질문을 드려보고 싶습니다.

그럼 조언 부탁드립니다..

feanor의 이미지

보통 libxml2를 컴파일하면 xmllint라는 XML 문법을 확인해 주는 명령행 유틸이 생깁니다. 여기에 --version 옵션을 주시면 libxml2의 컴파일 플래그를 확인할 수 있습니다.

제 시스템(데비안 unstable)에서는 다음과 같이 나옵니다.

$ xmllint --version
xmllint: using libxml version 20632
compiled with: Threads Tree Output Push Reader Patterns Writer SAXv1 FTP HTTP DTDValid HTML Legacy C14N Catalog XPath XPointer XInclude Iconv ISO8859X Unicode Regexps Automata Expr Schemas Schematron Modules Debug Zlib

일단 이걸 확인하는게 먼저겠습니다.

hyper9의 이미지

아래와 같이 나오네요 ..

그럼 일단 --with-threads option은 제대로 적용된 것으로 보면 되겠네요 ..

compiled with: Threads Tree Output Push Reader Patterns Writer SAXv1 FTP HTTP
DTDValid HTML Legacy C14N Catalog XPath XPointer XInclude Iconv ISO8859X Unicod
e Regexps Automata Expr Schemas Schematron Modules Debug Zlib

hyper9의 이미지

./configure --with-threads 라고만 했었는데요,
혹시 어떤 option들이 더 있는지..조사해봤습니다.

./configure --help라고 하니까..option들이 쭈욱 보이네요.
그 중에,,
--with-threads add multithread support(on)
--with-thread-alloc add per-thread memory(off)
라는 대목이 있는데요..
--with-threads의 경우는 multithread support를 enable (on) 하고
--with-thread-alloc의 경우는 per-thread memory를 disable (off) 한다는
의미인가요?

그렇다면 첫 줄과 같이 ./configure --with-threads라고 하면
per-thread memory option은 자동적으로 enable되는 거겠죠?

hyper9의 이미지

아래는 ./configure --with-thread-alloc이라고 한 후에
make; make install을 하고
xmllint --version을 실행시켜 본 예이고요 ..
xmllint: using libxml version 20631
compiled with: Threads Tree Output Push Reader Patterns Writer SAXv1 FTP HTTP DTDValid HTML Legacy C14N Catalog XPath XPointer XInclude Iconv ISO8859X Unicode Regexps Automata Expr Schemas Schematron Modules Debug Zlib

아래는 ./configure --with-threads 이라고 한 후에
make; make install을 하고
xmllint --version을 실행시켜 본 예입니다.
xmllint: using libxml version 20631
compiled with: Threads Tree Output Push Reader Patterns Writer SAXv1 FTP HTTP DTDValid HTML Legacy C14N Catalog XPath XPointer XInclude Iconv ISO8859X Unicode Regexps Automata Expr Schemas Schematron Modules Debug Zlib

제가 뭔가를 잘 못한게 아닌지,,똑같은 내용이 display되네요 ..

hyper9의 이미지

위에도 적었지만...

___lll_mutex_lock_wait 이렇게 나오는 건 어떻게 해석을 해야 할까요?

hyper9의 이미지

GDB 추적 결과는 다음과 같네요..

(gdb) stepi
0x0809bbcf 952 xmlFree( outBuff );
(gdb)
0x0809bbd2 952 xmlFree( outBuff );
(gdb)
0xb7b8f5a0 in free () from /lib/libc.so.6
(gdb)
0xb7b8f5a1 in free () from /lib/libc.so.6
(gdb)
0xb7b8f5a3 in free () from /lib/libc.so.6
(gdb)
0xb7b8f5a6 in free () from /lib/libc.so.6
(gdb)
0xb7b8f5a9 in free () from /lib/libc.so.6
(gdb)
0xb7b38db0 in __i686.get_pc_thunk.bx () from /lib/libc.so.6
(gdb)
0xb7b38db3 in __i686.get_pc_thunk.bx () from /lib/libc.so.6
(gdb)
0xb7b8f5ae in free () from /lib/libc.so.6
(gdb)
0xb7b8f5b4 in free () from /lib/libc.so.6
(gdb)
0xb7b8f5b7 in free () from /lib/libc.so.6
(gdb)
0xb7b8f5ba in free () from /lib/libc.so.6
(gdb)
0xb7b8f5bd in free () from /lib/libc.so.6
(gdb)
0xb7b8f5c3 in free () from /lib/libc.so.6
(gdb)
0xb7b8f5c5 in free () from /lib/libc.so.6
(gdb)
0xb7b8f5c7 in free () from /lib/libc.so.6
(gdb)
0xb7b8f5e2 in free () from /lib/libc.so.6
(gdb)
0xb7b8f5e4 in free () from /lib/libc.so.6
(gdb)
0xb7b8f5e6 in free () from /lib/libc.so.6
(gdb)
0xb7b8f5e9 in free () from /lib/libc.so.6
(gdb)
0xb7b8f5ec in free () from /lib/libc.so.6
(gdb)
0xb7b8f5ef in free () from /lib/libc.so.6
(gdb)
0xb7b8f5f1 in free () from /lib/libc.so.6
(gdb)
0xb7b8f5f3 in free () from /lib/libc.so.6
(gdb)
0xb7b8f5f5 in free () from /lib/libc.so.6
(gdb)
0xb7b8f5fb in free () from /lib/libc.so.6
(gdb)
0xb7b8f609 in free () from /lib/libc.so.6
(gdb)
0xb7b8f60b in free () from /lib/libc.so.6
(gdb)
0xb7b8f610 in free () from /lib/libc.so.6
(gdb)
0xb7b8f618 in free () from /lib/libc.so.6
(gdb)
0xb7b8f61a in free () from /lib/libc.so.6
(gdb)
0xb7b8f61e in free () from /lib/libc.so.6
(gdb)
0xb7b8f624 in free () from /lib/libc.so.6
(gdb)
0xb7b8f628 in free () from /lib/libc.so.6
(gdb)
0xb7b8f62b in free () from /lib/libc.so.6
(gdb)
0xb7b8b750 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b751 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b753 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b754 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b755 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b756 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b759 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b75c in _int_free () from /lib/libc.so.6
(gdb)
0xb7b38db0 in __i686.get_pc_thunk.bx () from /lib/libc.so.6
(gdb)
0xb7b38db3 in __i686.get_pc_thunk.bx () from /lib/libc.so.6
(gdb)
0xb7b8b761 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b767 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b76a in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b76d in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b76f in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b772 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b775 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b777 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b779 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b77f in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b785 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b78b in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b78f in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b795 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b798 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b79e in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b7a1 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b7a7 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b7ad in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b7b0 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b7f5 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b7f8 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b7fb in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b801 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b804 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b806 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b80c in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b80f in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b812 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b815 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b819 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8bb76 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8bb79 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8bb7c in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8bb7f in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8bb81 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8bb87 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8bb8a in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b81f in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b822 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b828 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b82b in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b82d in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b833 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b836 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b83c in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b83f in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b842 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b845 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b84b in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b851 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b857 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b859 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b85f in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b863 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b8a6 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b8a9 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b8ac in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8bca5 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8bca7 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8bcaa in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8bcad in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8bcb0 in _int_free () from /lib/libc.so.6

(gdb)

0xb7b8bcb3 in _int_free () from /lib/libc.so.6

(gdb)
0xb7b8bcb6 in _int_free () from /lib/libc.so.6

(gdb)
0xb7b8bcb9 in _int_free () from /lib/libc.so.6

(gdb)

0xb7b8b939 in _int_free () from /lib/libc.so.6

(gdb)
0xb7b8b940 in _int_free () from /lib/libc.so.6

(gdb)
0xb7b8b7ed in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b7f0 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b7f1 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b7f2 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b7f3 in _int_free () from /lib/libc.so.6
(gdb)
0xb7b8b7f4 in _int_free () from /lib/libc.so.6

(gdb)
0xb7b8f630 in free () from /lib/libc.so.6

(gdb)
0xb7b8f638 in free () from /lib/libc.so.6

(gdb)
0xb7b8f63a in free () from /lib/libc.so.6

(gdb)
0xb7b8f63e in free () from /lib/libc.so.6

(gdb)
0xb7b90383 in _L_unlock_14932 () from /lib/libc.so.6

(gdb)
0xb7b90385 in _L_unlock_14932 () from /lib/libc.so.6

(gdb)
0xb7c02a10 in __lll_mutex_unlock_wake () from /lib/libc.so.6

(gdb)
0xb7c02a11 in __lll_mutex_unlock_wake () from /lib/libc.so.6

(gdb)
0xb7c02a12 in __lll_mutex_unlock_wake () from /lib/libc.so.6

(gdb)
0xb7c02a13 in __lll_mutex_unlock_wake () from /lib/libc.so.6

(gdb)
0xb7c02a15 in __lll_mutex_unlock_wake () from /lib/libc.so.6
(gdb)
0xb7c02a1b in __lll_mutex_unlock_wake () from /lib/libc.so.6
(gdb)
0xb7c02a20 in __lll_mutex_unlock_wake () from /lib/libc.so.6
(gdb)
0xb7c02a25 in __lll_mutex_unlock_wake () from /lib/libc.so.6
(gdb)
0xb7c02a2a in __lll_mutex_unlock_wake () from /lib/libc.so.6
(gdb)
0xb7c02a2c in __lll_mutex_unlock_wake () from /lib/libc.so.6
(gdb)
0xb7c02a2d in __lll_mutex_unlock_wake () from /lib/libc.so.6
(gdb)
0xb7c02a2e in __lll_mutex_unlock_wake () from /lib/libc.so.6
(gdb)
0xb7c02a2f in __lll_mutex_unlock_wake () from /lib/libc.so.6
(gdb)
0xb7b9038a in _L_unlock_14932 () from /lib/libc.so.6
(gdb)
0xb7b8f644 in free () from /lib/libc.so.6
(gdb)
0xb7b8f5d5 in free () from /lib/libc.so.6
(gdb)
0xb7b8f5d8 in free () from /lib/libc.so.6
(gdb)
0xb7b8f5db in free () from /lib/libc.so.6
(gdb)
0xb7b8f5de in free () from /lib/libc.so.6
(gdb)
0xb7b8f5e0 in free () from /lib/libc.so.6
(gdb)
0xb7b8f5e1 in free () from /lib/libc.so.6
(gdb)
HomeAgentSystem_getConfig (req=0x8114d48, res=0x8110ee8)
at HomeAgentSystem.c:954
954 xmlFreeDoc( outDoc );
(gdb)
0x0809bbdb 954 xmlFreeDoc( outDoc );
(gdb)

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.