저는 파이썬 인터프리터 및 일부 라이브러리가 제작에 포함 된 사내 Python 프로그램을 보유하고 있습니다. RHEL 6 환경에서 올바르게 작동합니다.RHEL 환경에서 세그먼트가 잘못됨 7.4 (RHEL 6에서 작동)
그러나 RHEL 7.4에서는 세그먼트 오류가 발생합니다. 시스템 라이브러리가 응용 프로그램 라이브러리 libxml2에 의해 오버 라이드 된 것으로 의심됩니다.
역 추적 : 나는 응용 프로그램 LIB 폴더에 RHEL 7.4에 대한 최신 라이브러리 (libxml2를)를 추가이 1로이 개 솔루션을 가정하고
(gdb) backtrace
#0 0x00007ffff7228e00 in __strncmp_sse42() from /lib64/libc.so.6
#1 0x00007ffff03b3a48 in __xmlParserInputBufferCreateFilename (URI=0x9c7f3c "/opt/monitor/tools/etc/pmonspec.xml", enc=XML_CHAR_ENCODING_NONE) at xmlIO.c:2476
#2 0x00007ffff038cd44 in xmlNewInputFromFile__internal_alias (ctxt=0xa012a0, filename=0x9c7f3c "/opt/monitor/tools/etc/pmonspec.xml") at parserInternals.c:1463
#3 0x00007ffff03b59a2 in xmlDefaultExternalEntityLoader (URL=0x9c7f3c "/opt/monitor/tools/etc/pmonspec.xml", ID=0x0, ctxt=0xa012a0) at xmlIO.c:3832
#4 0x00007ffff085d722 in __pyx_f_4lxml_5etree__local_resolver (__pyx_v_c_url=0x9c7f3c "/opt/monitor/tools/etc/pmonspec.xml", __pyx_v_c_pubid=0x0, __pyx_v_c_context=0xa012a0)
at src/lxml/lxml.etree.c:63618
#5 0x00007ffff03a4bd0 in xmlCtxtReadFile__internal_alias (ctxt=0xa012a0, filename=0x9c7f3c "/opt/monitor/tools/etc/pmonspec.xml", encoding=0x0, options=83970) at parser.c:14487
#6 0x00007ffff08754b4 in __pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile (__pyx_v_self=0x7b6640, __pyx_v_c_filename=0x9c7f3c "/opt/monitor/tools/etc/pmonspec.xml")
at src/lxml/lxml.etree.c:68146
#7 0x00007ffff083316f in __pyx_f_4lxml_5etree__parseDocFromFile (__pyx_v_filename8=0x9c7f18, __pyx_v_parser=0x7b6640) at src/lxml/lxml.etree.c:71175
#8 0x00007ffff0833239 in __pyx_f_4lxml_5etree__parseDocumentFromURL (__pyx_v_url=0x7fffffffda14, __pyx_v_parser=0x7fff00000000) at src/lxml/lxml.etree.c:72080
#9 0x00007ffff0885768 in __pyx_f_4lxml_5etree__parseDocument (__pyx_v_source=0x9c7f18, __pyx_v_parser=0x66d2b0 <_Py_NoneStruct>, __pyx_v_base_url=0x66d2b0 <_Py_NoneStruct>)
at src/lxml/lxml.etree.c:71797
#10 0x00007ffff08863aa in __pyx_pf_4lxml_5etree_12_ElementTree_parse (__pyx_v_self=0x9cc170, __pyx_args=<optimized out>, __pyx_kwds=<optimized out>) at src/lxml/lxml.etree.c:39625
#11 0x00000000004a0476 in call_function (pp_stack=<optimized out>, oparg=<optimized out>) at Python/ceval.c:4012
#12 PyEval_EvalFrameEx (f=0x7f7170, throwflag=<optimized out>) at Python/ceval.c:2665
#13 0x00000000004a1f74 in PyEval_EvalCodeEx (co=0x7ffff7ee63b0, globals=<optimized out>, locals=<optimized out>, args=0x0, argcount=0, kws=0x0, kwcount=0, defs=0x0, defcount=0, closure=0x0)
at Python/ceval.c:3252
#14 0x00000000004a20f2 in PyEval_EvalCode (co=0x7fffffffda14, globals=0x7fff00000000, locals=0x4) at Python/ceval.c:666
#15 0x00000000004c4e90 in run_mod (mod=<optimized out>, filename=<optimized out>, globals=0x7fff00000000, locals=0x4, flags=<optimized out>, arena=<optimized out>) at Python/pythonrun.c:1346
#16 PyRun_FileExFlags (fp=0x776630, filename=0x7fffffffe615 "/opt/monitor/tools/bin/pmon_my", start=<optimized out>, globals=0x6f2140, locals=0x6f2140, closeit=1, flags=0x7fffffffe1ac)
at Python/pythonrun.c:1332
#17 0x00000000004c6109 in PyRun_SimpleFileExFlags (fp=0x776630, filename=0x7fffffffe615 "/opt/monitor/tools/bin/pmon_my", closeit=1, flags=0x7fffffffe1ac) at Python/pythonrun.c:936
#18 0x000000000041462c in Py_Main (argc=<optimized out>, argv=0x7fffffffe358) at Modules/main.c:599
#19 0x00007ffff7114c05 in __libc_start_main() from /lib64/libc.so.6
#20 0x0000000000413aba in _start()
. 그렇다면 파이썬이 그것을 어떻게 사용하는지 이해하는 방법은 무엇입니까? 2. 시스템을 사용하는 대신 응용 프로그램 lib 폴더를 조사하도록 라이브러리 검색, 연결 및로드를 다시 시도하십시오.
다음 변경과 관련이 있습니까?
버그 1292230 - LD는 놀랍게도 오류를 제공하지 않습니다 추적 - 어린이 옵션 Valgrind의에서 프로그램을 실행 라이브러리
에 연결 심볼가 해결되지 않습니다.
RHEL 6 상자에서 python 바이너리를 가져 와서 RHEL 7에서 실행할 수 없다고 확신합니다. 바이너리는 RHEL에 설치되지 않을 SO에 대해 빌드 및 링크되었습니다 7. ABI 호환성이 깨지지 않았 으면 작동 할 수도 있지만 권장하지는 않습니다. – wholevinski
RHEL 7.x 시스템에서 소스 코드와 종속성을 다시 컴파일하면 문제가 없습니다. – OptimusCrime